OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/web_state/ui/wk_web_view_configuration_provider.h" | 5 #import "ios/web/web_state/ui/wk_web_view_configuration_provider.h" |
6 | 6 |
7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
8 #import <WebKit/WebKit.h> | 8 #import <WebKit/WebKit.h> |
9 | 9 |
10 #import "base/ios/weak_nsobject.h" | 10 #import "base/ios/weak_nsobject.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/ptr_util.h" |
12 #include "ios/web/public/browser_state.h" | 13 #include "ios/web/public/browser_state.h" |
13 #import "ios/web/web_state/js/page_script_util.h" | 14 #import "ios/web/web_state/js/page_script_util.h" |
14 #import "ios/web/web_state/ui/crw_wk_script_message_router.h" | 15 #import "ios/web/web_state/ui/crw_wk_script_message_router.h" |
15 | 16 |
16 namespace web { | 17 namespace web { |
17 | 18 |
18 namespace { | 19 namespace { |
19 // A key used to associate a WKWebViewConfigurationProvider with a BrowserState. | 20 // A key used to associate a WKWebViewConfigurationProvider with a BrowserState. |
20 const char kWKWebViewConfigProviderKeyName[] = "wk_web_view_config_provider"; | 21 const char kWKWebViewConfigProviderKeyName[] = "wk_web_view_config_provider"; |
21 | 22 |
22 // Returns an autoreleased instance of WKUserScript to be added to | 23 // Returns an autoreleased instance of WKUserScript to be added to |
23 // configuration's userContentController. | 24 // configuration's userContentController. |
24 WKUserScript* InternalGetEarlyPageScript(BrowserState* browser_state) { | 25 WKUserScript* InternalGetEarlyPageScript(BrowserState* browser_state) { |
25 return [[[WKUserScript alloc] | 26 return [[[WKUserScript alloc] |
26 initWithSource:GetEarlyPageScript(browser_state) | 27 initWithSource:GetEarlyPageScript(browser_state) |
27 injectionTime:WKUserScriptInjectionTimeAtDocumentStart | 28 injectionTime:WKUserScriptInjectionTimeAtDocumentStart |
28 forMainFrameOnly:YES] autorelease]; | 29 forMainFrameOnly:YES] autorelease]; |
29 } | 30 } |
30 | 31 |
31 } // namespace | 32 } // namespace |
32 | 33 |
33 // static | 34 // static |
34 WKWebViewConfigurationProvider& | 35 WKWebViewConfigurationProvider& |
35 WKWebViewConfigurationProvider::FromBrowserState(BrowserState* browser_state) { | 36 WKWebViewConfigurationProvider::FromBrowserState(BrowserState* browser_state) { |
36 DCHECK([NSThread isMainThread]); | 37 DCHECK([NSThread isMainThread]); |
37 DCHECK(browser_state); | 38 DCHECK(browser_state); |
38 if (!browser_state->GetUserData(kWKWebViewConfigProviderKeyName)) { | 39 if (!browser_state->GetUserData(kWKWebViewConfigProviderKeyName)) { |
39 browser_state->SetUserData( | 40 browser_state->SetUserData( |
40 kWKWebViewConfigProviderKeyName, | 41 kWKWebViewConfigProviderKeyName, |
41 new WKWebViewConfigurationProvider(browser_state)); | 42 base::WrapUnique(new WKWebViewConfigurationProvider(browser_state))); |
42 } | 43 } |
43 return *(static_cast<WKWebViewConfigurationProvider*>( | 44 return *(static_cast<WKWebViewConfigurationProvider*>( |
44 browser_state->GetUserData(kWKWebViewConfigProviderKeyName))); | 45 browser_state->GetUserData(kWKWebViewConfigProviderKeyName))); |
45 } | 46 } |
46 | 47 |
47 WKWebViewConfigurationProvider::WKWebViewConfigurationProvider( | 48 WKWebViewConfigurationProvider::WKWebViewConfigurationProvider( |
48 BrowserState* browser_state) | 49 BrowserState* browser_state) |
49 : browser_state_(browser_state) {} | 50 : browser_state_(browser_state) {} |
50 | 51 |
51 WKWebViewConfigurationProvider::~WKWebViewConfigurationProvider() { | 52 WKWebViewConfigurationProvider::~WKWebViewConfigurationProvider() { |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 configuration_.reset(); | 95 configuration_.reset(); |
95 router_.reset(); | 96 router_.reset(); |
96 // Make sure that no one retains configuration, router, processPool. | 97 // Make sure that no one retains configuration, router, processPool. |
97 DCHECK(!weak_configuration); | 98 DCHECK(!weak_configuration); |
98 DCHECK(!weak_router); | 99 DCHECK(!weak_router); |
99 // TODO(crbug.com/522672): Enable this DCHECK. | 100 // TODO(crbug.com/522672): Enable this DCHECK. |
100 // DCHECK(!weak_process_pool); | 101 // DCHECK(!weak_process_pool); |
101 } | 102 } |
102 | 103 |
103 } // namespace web | 104 } // namespace web |
OLD | NEW |