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

Unified Diff: ios/web/web_state/ui/crw_web_controller.mm

Issue 2755823002: Moved |openedByDOM| to WebState's CreateParams and public interface. (Closed)
Patch Set: . 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/public/web_state/web_state.h ('k') | ios/web/web_state/ui/crw_web_controller_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/ui/crw_web_controller.mm
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm
index e23141e1fb0ba7a4916fff43a41a8033ca04ef90..c15eb0c28b87b3c90437e3146c956e359006209b 100644
--- a/ios/web/web_state/ui/crw_web_controller.mm
+++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -436,6 +436,8 @@ @interface CRWWebController ()<CRWContextMenuDelegate,
@property(nonatomic, readonly) CRWSessionController* sessionController;
// The associated NavigationManagerImpl.
@property(nonatomic, readonly) NavigationManagerImpl* navigationManagerImpl;
+// Whether the associated WebState has an opener.
+@property(nonatomic, readonly) BOOL hasOpener;
// Dictionary where keys are the names of WKWebView properties and values are
// selector names which should be called when a corresponding property has
// changed. e.g. @{ @"URL" : @"webViewURLDidChange" } means that
@@ -1864,7 +1866,7 @@ - (void)loadCurrentURL {
![_nativeProvider hasControllerForURL:currentURL]) {
if (!(item->GetTransitionType() & ui::PAGE_TRANSITION_TYPED ||
item->GetTransitionType() & ui::PAGE_TRANSITION_AUTO_BOOKMARK) &&
- self.sessionController.openedByDOM) {
+ self.hasOpener) {
// WebUI URLs can not be opened by DOM to prevent cross-site scripting as
// they have increased power. WebUI URLs may only be opened when the user
// types in the URL or use bookmarks.
@@ -2196,7 +2198,7 @@ - (BOOL)shouldClosePageOnNativeApplicationLoad {
// the page has no navigation items, as occurs when an App Store link is
// opened from another application.
BOOL rendererInitiatedWithoutInteraction =
- self.sessionController.openedByDOM && !_userInteractedWithWebController;
+ self.hasOpener && !_userInteractedWithWebController;
BOOL noNavigationItems = !(self.navigationManagerImpl->GetItemCount());
return rendererInitiatedWithoutInteraction || noNavigationItems;
}
@@ -3473,6 +3475,10 @@ - (NavigationManagerImpl*)navigationManagerImpl {
return _webStateImpl ? &(_webStateImpl->GetNavigationManagerImpl()) : nil;
}
+- (BOOL)hasOpener {
+ return _webStateImpl ? _webStateImpl->HasOpener() : NO;
+}
+
- (web::NavigationItemImpl*)currentNavItem {
// This goes through the legacy Session* interface rather than Navigation*
// because it is itself a legacy method that should not exist, and this
@@ -4216,8 +4222,7 @@ - (WKWebView*)webView:(WKWebView*)webView
CRWWebController* childWebController =
static_cast<WebStateImpl*>(childWebState)->GetWebController();
- DCHECK(!childWebController ||
- childWebController.sessionController.openedByDOM);
+ DCHECK(!childWebController || childWebController.hasOpener);
// WKWebView requires WKUIDelegate to return a child view created with
// exactly the same |configuration| object (exception is raised if config is
@@ -4230,9 +4235,8 @@ - (WKWebView*)webView:(WKWebView*)webView
}
- (void)webViewDidClose:(WKWebView*)webView {
- if (self.sessionController.openedByDOM) {
+ if (self.hasOpener)
_webStateImpl->CloseWebState();
- }
}
- (void)webView:(WKWebView*)webView
« no previous file with comments | « ios/web/public/web_state/web_state.h ('k') | ios/web/web_state/ui/crw_web_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698