| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_WEB_JS_MESSAGING_PAGE_SCRIPT_UTIL_H_ |
| #define IOS_WEB_JS_MESSAGING_PAGE_SCRIPT_UTIL_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| namespace web { |
| |
| class BrowserState; |
| |
| // Returns an autoreleased string containing the JavaScript loaded from a |
| // bundled resource file with the given name (excluding extension). |
| NSString* GetPageScript(NSString* script_file_name); |
| |
| // Make sure that script is injected only once. For example, content of |
| // WKUserScript can be injected into the same page multiple times |
| // without notifying WKNavigationDelegate (e.g. after window.document.write |
| // JavaScript call). Injecting the script multiple times invalidates the |
| // __gCrWeb.windowId variable and will break the ability to send messages from |
| // JS to the native code. Wrapping injected script into "if (!injected)" check |
| // prevents multiple injections into the same page. |script_identifier| should |
| // identify the script being injected in order to enforce the injection of |
| // |script| to only once. |
| // NOTE: |script_identifier| will be used as the suffix for a JavaScript var, so |
| // it must adhere to JavaScript var naming rules. |
| NSString* MakeScriptInjectableOnce(NSString* script_identifier, |
| NSString* script); |
| |
| // Returns an autoreleased string containing the JavaScript to be injected into |
| // the main frame of the web view as early as possible. |
| NSString* GetDocumentStartScriptForMainFrame(BrowserState* browser_state); |
| |
| // Returns an autoreleased string containing the JavaScript to be injected into |
| // the main frame of the web view at the end of the document load. |
| NSString* GetDocumentEndScriptForMainFrame(BrowserState* browser_state); |
| |
| // Returns an autoreleased string containing the JavaScript to be injected into |
| // all frames of the web view as early as possible. |
| NSString* GetDocumentStartScriptForAllFrames(BrowserState* browser_state); |
| |
| // Returns an autoreleased string containing the JavaScript to be injected into |
| // all frames of the web view at the end of the document load. |
| NSString* GetDocumentEndScriptForAllFrames(BrowserState* browser_state); |
| |
| } // namespace web |
| |
| #endif // IOS_WEB_JS_MESSAGING_PAGE_SCRIPT_UTIL_H_ |