blob: 9b011b9ba3e02523752a0bb2df219dd9bb794bae [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// 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 {
// 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
// web frame id 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);
} // namespace web
#endif // IOS_WEB_JS_MESSAGING_PAGE_SCRIPT_UTIL_H_