Port Android relocation packer to chromium build
[chromium-blink-merge.git] / ios / web / public / test / crw_test_js_injection_receiver.mm
blobca987a69048a1290f2c394cfc8e10c3867b66025
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "ios/web/public/test/crw_test_js_injection_receiver.h"
7 #import <UIKit/UIKit.h>
9 #import "base/mac/scoped_nsobject.h"
10 #import "ios/web/public/web_state/js/crw_js_injection_evaluator.h"
12 @interface CRWTestUIWebViewEvaluator : NSObject<CRWJSInjectionEvaluator> {
13   base::scoped_nsobject<UIWebView> _webView;
15 @end
17 @implementation CRWTestUIWebViewEvaluator
19 - (id) init {
20   if (self = [super init])
21     _webView.reset([[UIWebView alloc] init]);
22   return self;
25 #pragma mark -
26 #pragma mark CRWJSInjectionEvaluatorMethods
28 - (void)evaluateJavaScript:(NSString*)script
29        stringResultHandler:(web::JavaScriptCompletion)handler {
30   dispatch_async(dispatch_get_main_queue(), ^{
31       // TODO(shreyasv): Change to weaknsobject once weaknsobject is moved to
32       // ios/base.
33       NSString* result =
34           [_webView stringByEvaluatingJavaScriptFromString:script];
35       if (handler)
36         handler(result, nil);
37   });
40 - (BOOL)scriptHasBeenInjectedForClass:(Class)jsInjectionManagerClass
41                        presenceBeacon:(NSString*)beacon {
42   NSString* result = [_webView stringByEvaluatingJavaScriptFromString:
43       [NSString stringWithFormat:@"typeof %@", beacon]];
44   return [result isEqualToString:@"object"];
47 - (void)injectScript:(NSString*)script
48             forClass:(Class)jsInjectionManagerClass {
49   [_webView stringByEvaluatingJavaScriptFromString:script];
52 - (web::WebViewType)webViewType {
53   return web::UI_WEB_VIEW_TYPE;
56 @end
58 @interface CRWTestJSInjectionReceiver () {
59   base::scoped_nsobject<CRWTestUIWebViewEvaluator> evaluator_;
61 @end
63 @implementation CRWTestJSInjectionReceiver
65 - (id)init {
66   base::scoped_nsobject<CRWTestUIWebViewEvaluator> evaluator(
67       [[CRWTestUIWebViewEvaluator alloc] init]);
68   if (self = [super initWithEvaluator:evaluator])
69     evaluator_.swap(evaluator);
70   return self;
73 @end