| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/web/public/web_state/js/crw_js_injection_manager.h" | 5 #import "ios/web/public/web_state/js/crw_js_injection_manager.h" |
| 6 | 6 |
| 7 #import <UIKit/UIKit.h> | 7 #import <UIKit/UIKit.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/mac/bundle_locations.h" | 10 #include "base/mac/bundle_locations.h" |
| 11 #import "base/mac/scoped_nsobject.h" | 11 #import "base/mac/scoped_nsobject.h" |
| 12 #include "base/strings/sys_string_conversions.h" | 12 #include "base/strings/sys_string_conversions.h" |
| 13 #import "ios/web/public/web_state/js/crw_js_injection_receiver.h" | 13 #import "ios/web/public/web_state/js/crw_js_injection_receiver.h" |
| 14 #import "ios/web/web_state/js/page_script_util.h" | 14 #import "ios/web/web_state/js/page_script_util.h" |
| 15 | 15 |
| 16 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 17 #error "This file requires ARC support." |
| 18 #endif |
| 19 |
| 16 @implementation CRWJSInjectionManager { | 20 @implementation CRWJSInjectionManager { |
| 17 // JS to inject into the page. This may be nil if it has been purged due to | 21 // JS to inject into the page. This may be nil if it has been purged due to |
| 18 // low memory. | 22 // low memory. |
| 19 base::scoped_nsobject<NSString> _injectObject; | 23 base::scoped_nsobject<NSString> _injectObject; |
| 20 // An object the can receive JavaScript injection. | 24 // An object the can receive JavaScript injection. |
| 21 CRWJSInjectionReceiver* _receiver; // Weak. | 25 __weak CRWJSInjectionReceiver* _receiver; |
| 22 } | 26 } |
| 23 | 27 |
| 24 - (id)initWithReceiver:(CRWJSInjectionReceiver*)receiver { | 28 - (id)initWithReceiver:(CRWJSInjectionReceiver*)receiver { |
| 25 DCHECK(receiver); | 29 DCHECK(receiver); |
| 26 self = [super init]; | 30 self = [super init]; |
| 27 if (self) { | 31 if (self) { |
| 28 _receiver = receiver; | 32 _receiver = receiver; |
| 29 // Register for low-memory warnings. | 33 // Register for low-memory warnings. |
| 30 [[NSNotificationCenter defaultCenter] | 34 [[NSNotificationCenter defaultCenter] |
| 31 addObserver:self | 35 addObserver:self |
| 32 selector:@selector(lowMemoryWarning:) | 36 selector:@selector(lowMemoryWarning:) |
| 33 name:UIApplicationDidReceiveMemoryWarningNotification | 37 name:UIApplicationDidReceiveMemoryWarningNotification |
| 34 object:nil]; | 38 object:nil]; |
| 35 } | 39 } |
| 36 return self; | 40 return self; |
| 37 } | 41 } |
| 38 | 42 |
| 39 - (void)dealloc { | 43 - (void)dealloc { |
| 40 [[NSNotificationCenter defaultCenter] removeObserver:self]; | 44 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| 41 [super dealloc]; | |
| 42 } | 45 } |
| 43 | 46 |
| 44 - (BOOL)hasBeenInjected { | 47 - (BOOL)hasBeenInjected { |
| 45 return [_receiver scriptHasBeenInjectedForClass:[self class]]; | 48 return [_receiver scriptHasBeenInjectedForClass:[self class]]; |
| 46 } | 49 } |
| 47 | 50 |
| 48 - (void)inject { | 51 - (void)inject { |
| 49 if ([self hasBeenInjected]) | 52 if ([self hasBeenInjected]) |
| 50 return; | 53 return; |
| 51 [_receiver injectScript:[self injectionContent] forClass:[self class]]; | 54 [_receiver injectScript:[self injectionContent] forClass:[self class]]; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 77 if (!_injectObject) | 80 if (!_injectObject) |
| 78 _injectObject.reset([[self staticInjectionContent] copy]); | 81 _injectObject.reset([[self staticInjectionContent] copy]); |
| 79 return _injectObject.get(); | 82 return _injectObject.get(); |
| 80 } | 83 } |
| 81 | 84 |
| 82 - (NSString*)staticInjectionContent { | 85 - (NSString*)staticInjectionContent { |
| 83 return web::GetPageScript([self scriptPath]); | 86 return web::GetPageScript([self scriptPath]); |
| 84 } | 87 } |
| 85 | 88 |
| 86 @end | 89 @end |
| OLD | NEW |