Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: ios/web_view/internal/cwv_web_view_configuration.mm

Issue 2764773002: Add CWVUserContentController which enables injecting JavaScripts. (Closed)
Patch Set: Rebase. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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_view/public/cwv_web_view_configuration.h" 5 #import "ios/web_view/public/cwv_web_view_configuration.h"
6 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h" 6 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h"
7 7
8 #import "ios/web_view/internal/cwv_user_content_controller_internal.h"
8 #import "ios/web_view/internal/web_view_browser_state.h" 9 #import "ios/web_view/internal/web_view_browser_state.h"
9 #import "ios/web_view/internal/web_view_web_client.h" 10 #import "ios/web_view/internal/web_view_web_client.h"
10 11
11 #if !defined(__has_feature) || !__has_feature(objc_arc) 12 #if !defined(__has_feature) || !__has_feature(objc_arc)
12 #error "This file requires ARC support." 13 #error "This file requires ARC support."
13 #endif 14 #endif
14 15
15 @interface CWVWebViewConfiguration () 16 @interface CWVWebViewConfiguration ()
16 // Initialize configuration with the specified browser state. 17 // Initialize configuration with the specified browser state.
17 - (instancetype)initWithBrowserState: 18 - (instancetype)initWithBrowserState:
18 (ios_web_view::WebViewBrowserState*)browserState; 19 (ios_web_view::WebViewBrowserState*)browserState;
19 @end 20 @end
20 21
21 @implementation CWVWebViewConfiguration { 22 @implementation CWVWebViewConfiguration {
22 // TODO(crbug.com/690182): CWVWebViewConfiguration should own _browserState. 23 // TODO(crbug.com/690182): CWVWebViewConfiguration should own _browserState.
23 ios_web_view::WebViewBrowserState* _browserState; 24 ios_web_view::WebViewBrowserState* _browserState;
24 } 25 }
25 26
27 @synthesize userContentController = _userContentController;
28
26 + (instancetype)defaultConfiguration { 29 + (instancetype)defaultConfiguration {
27 static dispatch_once_t once; 30 static dispatch_once_t once;
28 static CWVWebViewConfiguration* configuration; 31 static CWVWebViewConfiguration* configuration;
29 dispatch_once(&once, ^{ 32 dispatch_once(&once, ^{
30 ios_web_view::WebViewWebClient* client = 33 ios_web_view::WebViewWebClient* client =
31 static_cast<ios_web_view::WebViewWebClient*>(web::GetWebClient()); 34 static_cast<ios_web_view::WebViewWebClient*>(web::GetWebClient());
32 configuration = [[self alloc] initWithBrowserState:client->browser_state()]; 35 configuration = [[self alloc] initWithBrowserState:client->browser_state()];
33 }); 36 });
34 return configuration; 37 return configuration;
35 } 38 }
36 39
37 + (instancetype)incognitoConfiguration { 40 + (instancetype)incognitoConfiguration {
38 static dispatch_once_t once; 41 static dispatch_once_t once;
39 static CWVWebViewConfiguration* configuration; 42 static CWVWebViewConfiguration* configuration;
40 dispatch_once(&once, ^{ 43 dispatch_once(&once, ^{
41 ios_web_view::WebViewWebClient* client = 44 ios_web_view::WebViewWebClient* client =
42 static_cast<ios_web_view::WebViewWebClient*>(web::GetWebClient()); 45 static_cast<ios_web_view::WebViewWebClient*>(web::GetWebClient());
43 configuration = [[self alloc] 46 configuration = [[self alloc]
44 initWithBrowserState:client->off_the_record_browser_state()]; 47 initWithBrowserState:client->off_the_record_browser_state()];
45 }); 48 });
46 return configuration; 49 return configuration;
47 } 50 }
48 51
49 - (instancetype)initWithBrowserState: 52 - (instancetype)initWithBrowserState:
50 (ios_web_view::WebViewBrowserState*)browserState { 53 (ios_web_view::WebViewBrowserState*)browserState {
51 self = [super init]; 54 self = [super init];
52 if (self) { 55 if (self) {
53 _browserState = browserState; 56 _browserState = browserState;
57 _userContentController =
58 [[CWVUserContentController alloc] initWithConfiguration:self];
54 } 59 }
55 return self; 60 return self;
56 } 61 }
57 62
58 - (BOOL)isPersistent { 63 - (BOOL)isPersistent {
59 return !_browserState->IsOffTheRecord(); 64 return !_browserState->IsOffTheRecord();
60 } 65 }
61 66
62 - (ios_web_view::WebViewBrowserState*)browserState { 67 - (ios_web_view::WebViewBrowserState*)browserState {
63 return _browserState; 68 return _browserState;
64 } 69 }
65 70
66 // NSCopying 71 // NSCopying
67 72
68 - (id)copyWithZone:(NSZone*)zone { 73 - (id)copyWithZone:(NSZone*)zone {
69 return [[[self class] allocWithZone:zone] initWithBrowserState:_browserState]; 74 return [[[self class] allocWithZone:zone] initWithBrowserState:_browserState];
70 } 75 }
71 76
72 @end 77 @end
OLDNEW
« no previous file with comments | « ios/web_view/internal/cwv_web_view.mm ('k') | ios/web_view/internal/web_view_early_page_script_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698