chromium/ios/web/js_messaging/page_script_util.h

// 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_