| Index: ios/web/public/web_state/js/crw_js_injection_manager.h
|
| diff --git a/ios/web/public/web_state/js/crw_js_injection_manager.h b/ios/web/public/web_state/js/crw_js_injection_manager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b78411ce48042858b1f47e50a5e0048f22fb9157
|
| --- /dev/null
|
| +++ b/ios/web/public/web_state/js/crw_js_injection_manager.h
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2012 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_PUBLIC_WEB_STATE_JS_CRW_JS_INJECTION_MANAGER_H_
|
| +#define IOS_WEB_PUBLIC_WEB_STATE_JS_CRW_JS_INJECTION_MANAGER_H_
|
| +
|
| +#import <Foundation/Foundation.h>
|
| +
|
| +#import "ios/web/public/web_state/js/crw_js_injection_evaluator.h"
|
| +
|
| +@class CRWJSInjectionReceiver;
|
| +
|
| +// This class defines the abstract interface for managing JavaScript
|
| +// Injection into a UIWebView.
|
| +@interface CRWJSInjectionManager : NSObject
|
| +
|
| +// Designated initializer. Initializes the object with the |receiver|.
|
| +- (id)initWithReceiver:(CRWJSInjectionReceiver*)receiver;
|
| +
|
| +// The array of |CRWJSInjectionManager| this class depends on. Default to be
|
| +// empty array. Note circular dependency is not allowed, which will cause stack
|
| +// overflow in dependency related computation such as -allDependencies.
|
| +- (NSArray*)directDependencies;
|
| +
|
| +// Returns a list of all the CRWJSInjectionManagers required by this manager,
|
| +// that is, this manager and the managers it directly or indirectly depends on.
|
| +// The list is ordered in such a way that any CRWJSInjectionManager in the list
|
| +// only depends on those appear before it in the list.
|
| +- (NSArray*)allDependencies;
|
| +
|
| +// Returns whether JavaScript has already been injected into the receiver.
|
| +- (BOOL)hasBeenInjected;
|
| +
|
| +// Injects JavaScript at |self.scriptPath| into the receiver object if it is
|
| +// missing. It also injects the dependencies' JavaScript if they are missing.
|
| +- (void)inject;
|
| +
|
| +// Returns an autoreleased string that is the JavaScript to be injected into
|
| +// the receiver object including any JavaScript for all specified dependencies.
|
| +- (NSString*)injectionContentIncludingDependencies;
|
| +
|
| +// Evaluates the provided JavaScript expression, slightly deferred. Designed for
|
| +// scripts where the chance of crwebinvoke:// being triggered indirectly is
|
| +// high, and that aren't required to return a value.
|
| +- (void)deferredEvaluate:(NSString*)script;
|
| +
|
| +// Evaluate the provided JavaScript asynchronously calling completionHandler
|
| +// after execution. The |completionHandler| can be nil.
|
| +- (void)evaluate:(NSString*)script
|
| + stringResultHandler:(web::JavaScriptCompletion)completionHandler;
|
| +
|
| +@end
|
| +
|
| +@interface CRWJSInjectionManager (ProtectedMethods)
|
| +
|
| +// The injection receiver used to evaluate JavaScript.
|
| +- (CRWJSInjectionReceiver*)receiver;
|
| +
|
| +// Path for the resource in the application bundle of type "js" that needs to
|
| +// injected for this manager.
|
| +// Subclasses must override this method to return the path to the JavaScript
|
| +// that needs to be injected.
|
| +- (NSString*)scriptPath;
|
| +
|
| +// The JavaScript function that returns the JavaScript constant of undefined
|
| +// if the JavaScript has not been injected. Default to be nil. Subclasses
|
| +// should override this if their script should only be injected into a page
|
| +// once.
|
| +- (NSString*)presenceBeacon;
|
| +
|
| +// Returns the content that should be injected. This is called every time
|
| +// injection content is needed; by default is uses a cached copy of
|
| +// staticInjectionContent.
|
| +// Subclasses should override this only if the content needs to be dynamic
|
| +// rather than cached, otherwise they should override staticInjectionContent.
|
| +- (NSString*)injectionContent;
|
| +
|
| +// Returns an autoreleased string that is the JavaScript to be injected into
|
| +// the receiver object. By default this returns the contents of the script file;
|
| +// subclasses can override this if they need to get a static script from some
|
| +// other source.
|
| +// The return value from this method will be cached; if dynamic script content
|
| +// is necessary, override injectionContent instead.
|
| +- (NSString*)staticInjectionContent;
|
| +
|
| +// Injects dependencies if they are missing.
|
| +- (void)injectDependenciesIfMissing;
|
| +
|
| +@end
|
| +
|
| +#endif // IOS_WEB_PUBLIC_WEB_STATE_JS_CRW_JS_INJECTION_MANAGER_H_
|
|
|