// // 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 browserView.webView = bridge.webView browserView.webView?.allowsBackForwardNavigationGestures = true self.view = browserView } override func viewDidLoad() { let request = URLRequest(url: URL(string: "https://yahoo.com")!) browserView.webView?.load(request) navigationItem.rightBarButtonItem = scriptBlockerButtonItem } 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() } }