iosWebViewFix/macos/Classes/PluginScriptsJS/OnLoadResourceJS.swift

40 lines
1.4 KiB
Swift

//
// resourceObserverJS.swift
// flutter_inappwebview
//
// Created by Lorenzo Pichilli on 16/02/21.
//
import Foundation
let ON_LOAD_RESOURCE_JS_PLUGIN_SCRIPT_GROUP_NAME = "IN_APP_WEBVIEW_ON_LOAD_RESOURCE_JS_PLUGIN_SCRIPT"
let FLAG_VARIABLE_FOR_ON_LOAD_RESOURCE_JS_SOURCE = "window.\(JAVASCRIPT_BRIDGE_NAME)._useOnLoadResource"
let ON_LOAD_RESOURCE_JS_PLUGIN_SCRIPT = PluginScript(
groupName: ON_LOAD_RESOURCE_JS_PLUGIN_SCRIPT_GROUP_NAME,
source: ON_LOAD_RESOURCE_JS_SOURCE,
injectionTime: .atDocumentStart,
forMainFrameOnly: false,
requiredInAllContentWorlds: false,
messageHandlerNames: [])
let ON_LOAD_RESOURCE_JS_SOURCE = """
\(FLAG_VARIABLE_FOR_ON_LOAD_RESOURCE_JS_SOURCE) = true;
(function() {
var observer = new PerformanceObserver(function(list) {
list.getEntries().forEach(function(entry) {
if (\(FLAG_VARIABLE_FOR_ON_LOAD_RESOURCE_JS_SOURCE) == null || \(FLAG_VARIABLE_FOR_ON_LOAD_RESOURCE_JS_SOURCE) == true) {
var resource = {
"url": entry.name,
"initiatorType": entry.initiatorType,
"startTime": entry.startTime,
"duration": entry.duration
};
window.\(JAVASCRIPT_BRIDGE_NAME).callHandler("onLoadResource", resource);
}
});
});
observer.observe({entryTypes: ['resource']});
})();
"""