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

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

Issue 2842953002: Implement CWVWebView.scrollView. (Closed)
Patch Set: Apply review comments. Created 3 years, 7 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
« no previous file with comments | « ios/web_view/internal/cwv_scroll_view_internal.h ('k') | ios/web_view/public/ChromeWebView.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.h" 5 #import "ios/web_view/public/cwv_web_view.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #import "base/ios/weak_nsobject.h" 10 #import "base/ios/weak_nsobject.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/strings/sys_string_conversions.h" 12 #include "base/strings/sys_string_conversions.h"
13 #include "google_apis/google_api_keys.h" 13 #include "google_apis/google_api_keys.h"
14 #import "ios/web/public/navigation_manager.h" 14 #import "ios/web/public/navigation_manager.h"
15 #include "ios/web/public/referrer.h" 15 #include "ios/web/public/referrer.h"
16 #include "ios/web/public/reload_type.h" 16 #include "ios/web/public/reload_type.h"
17 #import "ios/web/public/web_state/context_menu_params.h" 17 #import "ios/web/public/web_state/context_menu_params.h"
18 #import "ios/web/public/web_state/js/crw_js_injection_receiver.h" 18 #import "ios/web/public/web_state/js/crw_js_injection_receiver.h"
19 #import "ios/web/public/web_state/ui/crw_web_delegate.h" 19 #import "ios/web/public/web_state/ui/crw_web_delegate.h"
20 #import "ios/web/public/web_state/ui/crw_web_view_proxy.h"
21 #import "ios/web/public/web_state/ui/crw_web_view_scroll_view_proxy.h"
20 #import "ios/web/public/web_state/web_state.h" 22 #import "ios/web/public/web_state/web_state.h"
21 #import "ios/web/public/web_state/web_state_delegate_bridge.h" 23 #import "ios/web/public/web_state/web_state_delegate_bridge.h"
22 #import "ios/web/public/web_state/web_state_observer_bridge.h" 24 #import "ios/web/public/web_state/web_state_observer_bridge.h"
23 #import "ios/web_view/internal/cwv_html_element_internal.h" 25 #import "ios/web_view/internal/cwv_html_element_internal.h"
24 #import "ios/web_view/internal/cwv_navigation_action_internal.h" 26 #import "ios/web_view/internal/cwv_navigation_action_internal.h"
27 #import "ios/web_view/internal/cwv_scroll_view_internal.h"
25 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h" 28 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h"
26 #import "ios/web_view/internal/translate/web_view_translate_client.h" 29 #import "ios/web_view/internal/translate/web_view_translate_client.h"
27 #include "ios/web_view/internal/web_view_browser_state.h" 30 #include "ios/web_view/internal/web_view_browser_state.h"
28 #import "ios/web_view/internal/web_view_java_script_dialog_presenter.h" 31 #import "ios/web_view/internal/web_view_java_script_dialog_presenter.h"
29 #import "ios/web_view/internal/web_view_web_state_policy_decider.h" 32 #import "ios/web_view/internal/web_view_web_state_policy_decider.h"
30 #import "ios/web_view/public/cwv_navigation_delegate.h" 33 #import "ios/web_view/public/cwv_navigation_delegate.h"
31 #import "ios/web_view/public/cwv_ui_delegate.h" 34 #import "ios/web_view/public/cwv_ui_delegate.h"
32 #import "ios/web_view/public/cwv_web_view_configuration.h" 35 #import "ios/web_view/public/cwv_web_view_configuration.h"
33 #import "net/base/mac/url_conversions.h" 36 #import "net/base/mac/url_conversions.h"
34 #include "ui/base/page_transition_types.h" 37 #include "ui/base/page_transition_types.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 81
79 static NSString* gUserAgentProduct = nil; 82 static NSString* gUserAgentProduct = nil;
80 83
81 @implementation CWVWebView 84 @implementation CWVWebView
82 85
83 @synthesize configuration = _configuration; 86 @synthesize configuration = _configuration;
84 @synthesize navigationDelegate = _navigationDelegate; 87 @synthesize navigationDelegate = _navigationDelegate;
85 @synthesize translationDelegate = _translationDelegate; 88 @synthesize translationDelegate = _translationDelegate;
86 @synthesize estimatedProgress = _estimatedProgress; 89 @synthesize estimatedProgress = _estimatedProgress;
87 @synthesize UIDelegate = _UIDelegate; 90 @synthesize UIDelegate = _UIDelegate;
91 @synthesize scrollView = _scrollView;
88 92
89 + (NSString*)userAgentProduct { 93 + (NSString*)userAgentProduct {
90 return gUserAgentProduct; 94 return gUserAgentProduct;
91 } 95 }
92 96
93 + (void)setUserAgentProduct:(NSString*)product { 97 + (void)setUserAgentProduct:(NSString*)product {
94 gUserAgentProduct = [product copy]; 98 gUserAgentProduct = [product copy];
95 } 99 }
96 100
97 + (void)setGoogleAPIKey:(NSString*)googleAPIKey 101 + (void)setGoogleAPIKey:(NSString*)googleAPIKey
98 clientID:(NSString*)clientID 102 clientID:(NSString*)clientID
99 clientSecret:(NSString*)clientSecret { 103 clientSecret:(NSString*)clientSecret {
100 google_apis::SetAPIKey(base::SysNSStringToUTF8(googleAPIKey)); 104 google_apis::SetAPIKey(base::SysNSStringToUTF8(googleAPIKey));
101 105
102 std::string clientIDString = base::SysNSStringToUTF8(clientID); 106 std::string clientIDString = base::SysNSStringToUTF8(clientID);
103 std::string clientSecretString = base::SysNSStringToUTF8(clientSecret); 107 std::string clientSecretString = base::SysNSStringToUTF8(clientSecret);
104 for (size_t i = 0; i < google_apis::CLIENT_NUM_ITEMS; ++i) { 108 for (size_t i = 0; i < google_apis::CLIENT_NUM_ITEMS; ++i) {
105 google_apis::OAuth2Client client = 109 google_apis::OAuth2Client client =
106 static_cast<google_apis::OAuth2Client>(i); 110 static_cast<google_apis::OAuth2Client>(i);
107 google_apis::SetOAuth2ClientID(client, clientIDString); 111 google_apis::SetOAuth2ClientID(client, clientIDString);
108 google_apis::SetOAuth2ClientSecret(client, clientSecretString); 112 google_apis::SetOAuth2ClientSecret(client, clientSecretString);
109 } 113 }
110 } 114 }
111 115
112 - (instancetype)initWithFrame:(CGRect)frame 116 - (instancetype)initWithFrame:(CGRect)frame
113 configuration:(CWVWebViewConfiguration*)configuration { 117 configuration:(CWVWebViewConfiguration*)configuration {
114 self = [super initWithFrame:frame]; 118 self = [super initWithFrame:frame];
115 if (self) { 119 if (self) {
116 _configuration = [configuration copy]; 120 _configuration = [configuration copy];
121 _scrollView = [[CWVScrollView alloc] init];
117 [self resetWebStateWithSessionStorage:nil]; 122 [self resetWebStateWithSessionStorage:nil];
118 } 123 }
119 return self; 124 return self;
120 } 125 }
121 126
122 - (BOOL)canGoBack { 127 - (BOOL)canGoBack {
123 return _webState && _webState->GetNavigationManager()->CanGoBack(); 128 return _webState && _webState->GetNavigationManager()->CanGoBack();
124 } 129 }
125 130
126 - (BOOL)canGoForward { 131 - (BOOL)canGoForward {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 _webState->SetDelegate(_webStateDelegate.get()); 339 _webState->SetDelegate(_webStateDelegate.get());
335 340
336 _webStatePolicyDecider = 341 _webStatePolicyDecider =
337 base::MakeUnique<ios_web_view::WebViewWebStatePolicyDecider>( 342 base::MakeUnique<ios_web_view::WebViewWebStatePolicyDecider>(
338 _webState.get(), self); 343 _webState.get(), self);
339 344
340 _javaScriptDialogPresenter = 345 _javaScriptDialogPresenter =
341 base::MakeUnique<ios_web_view::WebViewJavaScriptDialogPresenter>(self, 346 base::MakeUnique<ios_web_view::WebViewJavaScriptDialogPresenter>(self,
342 nullptr); 347 nullptr);
343 348
349 _scrollView.proxy = _webState.get()->GetWebViewProxy().scrollViewProxy;
350
344 // Initialize Translate. 351 // Initialize Translate.
345 ios_web_view::WebViewTranslateClient::CreateForWebState(_webState.get()); 352 ios_web_view::WebViewTranslateClient::CreateForWebState(_webState.get());
346 353
347 [self addInternalWebViewAsSubview]; 354 [self addInternalWebViewAsSubview];
348 } 355 }
349 356
350 // Adds the web view provided by |_webState| as a subview unless it has already. 357 // Adds the web view provided by |_webState| as a subview unless it has already.
351 - (void)addInternalWebViewAsSubview { 358 - (void)addInternalWebViewAsSubview {
352 UIView* subview = _webState->GetView(); 359 UIView* subview = _webState->GetView();
353 if (subview.superview == self) { 360 if (subview.superview == self) {
354 return; 361 return;
355 } 362 }
356 subview.frame = self.bounds; 363 subview.frame = self.bounds;
357 subview.autoresizingMask = 364 subview.autoresizingMask =
358 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 365 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
359 [self addSubview:subview]; 366 [self addSubview:subview];
360 } 367 }
361 368
362 @end 369 @end
OLDNEW
« no previous file with comments | « ios/web_view/internal/cwv_scroll_view_internal.h ('k') | ios/web_view/public/ChromeWebView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698