Initial commit
Able to actually block scripts using a plugin, have XPC set up between plugin and host process. Limited UI support
This commit is contained in:
63
SBrowser/Browser View/BrowserViewController.swift
Normal file
63
SBrowser/Browser View/BrowserViewController.swift
Normal file
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// 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<String>()
|
||||
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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user