// // BrowserViewController.swift // SBrowser // // Created by James Magahern on 7/21/20. // import UIKit class BrowserViewController: UIViewController, SBRProcessBundleBridgeDelegate { let bridge = SBRProcessBundleBridge() let browserView = BrowserView() private let policyManager = ResourcePolicyManager() private var blockedScriptOrigins = Set() private var scriptBlockerButtonItem: UIBarButtonItem init() { scriptBlockerButtonItem = UIBarButtonItem(title: "0", image: nil, primaryAction: UIAction(handler: { action in // present }), menu: nil) super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func loadView() { bridge.delegate = self bridge.policyDataSource = policyManager let webView = bridge.webView webView.allowsBackForwardNavigationGestures = true browserView.webView = webView self.view = browserView } override func viewDidLoad() { let request = URLRequest(url: URL(string: "https://yahoo.com")!) browserView.webView?.load(request) setToolbarItems([ scriptBlockerButtonItem ], animated: false) } private func updateScriptBlockerButton() { scriptBlockerButtonItem.title = "\(blockedScriptOrigins.count)" } // MARK: SBRProcessBundleBridgeDelegate func webProcess(_ bridge: SBRProcessBundleBridge, didBlockScriptResourceFromOrigin origin: String) { print("Blocked script resource from origin: \(origin)") blockedScriptOrigins.formUnion([ origin ]) updateScriptBlockerButton() } }