Changeset 109778 in webkit
- Timestamp:
- Mar 5, 2012 11:50:05 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/chromium/ChangeLog
r109777 r109778 1 2012-03-05 Charlie Reis <creis@chromium.org> 2 3 [chromium] Pass WebNavigationPolicy to WebViewClient::createView 4 https://bugs.webkit.org/show_bug.cgi?id=80057 5 6 Reviewed by Darin Fisher. 7 8 * public/WebViewClient.h: 9 (WebViewClient): 10 (WebKit::WebViewClient::createView): 11 * src/ChromeClientImpl.cpp: 12 (WebKit::ChromeClientImpl::ChromeClientImpl): 13 (WebKit::ChromeClientImpl::createWindow): 14 (WebKit::ChromeClientImpl::getNavigationPolicy): 15 (WebKit): 16 (WebKit::ChromeClientImpl::show): 17 (WebKit::ChromeClientImpl::setNewWindowNavigationPolicy): 18 * src/ChromeClientImpl.h: 19 (ChromeClientImpl): 20 * src/FrameLoaderClientImpl.cpp: 21 (WebKit::FrameLoaderClientImpl::dispatchCreatePage): 22 (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForNewWindowAction): 23 1 24 2012-03-05 James Robinson <jamesr@chromium.org> 2 25 -
trunk/Source/WebKit/chromium/public/WebViewClient.h
r107832 r109778 94 94 // The request parameter is only for the client to check if the request 95 95 // could be fulfilled. The client should not load the request. 96 // The policy parameter indicates how the new view will be displayed in 97 // WebWidgetClient::show. 96 98 virtual WebView* createView(WebFrame* creator, 97 99 const WebURLRequest& request, 98 100 const WebWindowFeatures& features, 99 const WebString& name) { 101 const WebString& name, 102 WebNavigationPolicy policy) { 100 103 return 0; 101 104 } -
trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp
r108883 r109778 137 137 , m_menubarVisible(true) 138 138 , m_resizable(true) 139 , m_nextNewWindowNavigationPolicy(WebNavigationPolicyIgnore) 139 140 { 140 141 } … … 239 240 return 0; 240 241 242 // FrameLoaderClientImpl may have given us a policy to use for the next new 243 // window navigation. If not, determine the policy using the same logic as 244 // show(). 245 WebNavigationPolicy policy; 246 if (m_nextNewWindowNavigationPolicy != WebNavigationPolicyIgnore) { 247 policy = m_nextNewWindowNavigationPolicy; 248 m_nextNewWindowNavigationPolicy = WebNavigationPolicyIgnore; 249 } else 250 policy = getNavigationPolicy(); 251 241 252 WrappedResourceRequest request; 242 253 if (!r.resourceRequest().isEmpty()) … … 245 256 request.bind(action.resourceRequest()); 246 257 WebViewImpl* newView = static_cast<WebViewImpl*>( 247 m_webView->client()->createView(WebFrameImpl::fromFrame(frame), request, features, r.frameName() ));258 m_webView->client()->createView(WebFrameImpl::fromFrame(frame), request, features, r.frameName(), policy)); 248 259 if (!newView) 249 260 return 0; … … 288 299 } 289 300 290 void ChromeClientImpl::show() 291 { 292 if (!m_webView->client()) 293 return; 294 301 WebNavigationPolicy ChromeClientImpl::getNavigationPolicy() 302 { 295 303 // If our default configuration was modified by a script or wasn't 296 304 // created by a user gesture, then show as a popup. Else, let this … … 307 315 if (currentEventShouldCauseBackgroundTab(WebViewImpl::currentInputEvent())) 308 316 policy = WebNavigationPolicyNewBackgroundTab; 309 310 m_webView->client()->show(policy); 317 return policy; 318 } 319 320 void ChromeClientImpl::show() 321 { 322 if (!m_webView->client()) 323 return; 324 325 m_webView->client()->show(getNavigationPolicy()); 311 326 } 312 327 … … 803 818 } 804 819 820 void ChromeClientImpl::setNewWindowNavigationPolicy(WebNavigationPolicy policy) 821 { 822 m_nextNewWindowNavigationPolicy = policy; 823 } 824 805 825 void ChromeClientImpl::formStateDidChange(const Node* node) 806 826 { -
trunk/Source/WebKit/chromium/src/ChromeClientImpl.h
r108957 r109778 36 36 #include "PopupMenu.h" 37 37 #include "SearchPopupMenu.h" 38 #include "WebNavigationPolicy.h" 38 39 39 40 namespace WebCore { … … 190 191 // ChromeClientImpl: 191 192 void setCursorForPlugin(const WebCursorInfo&); 193 void setNewWindowNavigationPolicy(WebNavigationPolicy); 192 194 193 195 virtual bool selectItemWritingDirectionIsNatural(); … … 210 212 211 213 private: 214 WebNavigationPolicy getNavigationPolicy(); 212 215 void getPopupMenuInfo(WebCore::PopupContainer*, WebPopupMenuInfo*); 213 216 void setCursor(const WebCursorInfo&); … … 219 222 bool m_menubarVisible; 220 223 bool m_resizable; 224 225 // The policy for how the next webview to be created will be shown. 226 WebNavigationPolicy m_nextNewWindowNavigationPolicy; 221 227 }; 222 228 -
trunk/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp
r109670 r109778 874 874 Frame* FrameLoaderClientImpl::dispatchCreatePage(const NavigationAction& action) 875 875 { 876 struct WindowFeatures features;877 Page* newPage = m_webFrame->frame()->page()->chrome()->createWindow(878 m_webFrame->frame(), FrameLoadRequest(m_webFrame->frame()->document()->securityOrigin()),879 features, action);880 881 876 // Make sure that we have a valid disposition. This should have been set in 882 877 // the preceeding call to dispatchDecidePolicyForNewWindowAction. … … 885 880 m_nextNavigationPolicy = WebNavigationPolicyIgnore; 886 881 882 // Store the disposition on the opener ChromeClientImpl so that we can pass 883 // it to WebViewClient::createView. 884 ChromeClientImpl* chromeClient = static_cast<ChromeClientImpl*>(m_webFrame->frame()->page()->chrome()->client()); 885 chromeClient->setNewWindowNavigationPolicy(policy); 886 887 struct WindowFeatures features; 888 Page* newPage = m_webFrame->frame()->page()->chrome()->createWindow( 889 m_webFrame->frame(), FrameLoadRequest(m_webFrame->frame()->document()->securityOrigin()), 890 features, action); 891 887 892 // createWindow can return null (e.g., popup blocker denies the window). 888 893 if (!newPage) 889 894 return 0; 890 895 896 // Also give the disposition to the new window. 891 897 WebViewImpl::fromPage(newPage)->setInitialNavigationPolicy(policy); 892 898 return newPage->mainFrame(); … … 950 956 // to keep this state. 951 957 m_nextNavigationPolicy = navigationPolicy; 958 959 // Store the disposition on the opener ChromeClientImpl so that we can pass 960 // it to WebViewClient::createView. 961 ChromeClientImpl* chromeClient = static_cast<ChromeClientImpl*>(m_webFrame->frame()->page()->chrome()->client()); 962 chromeClient->setNewWindowNavigationPolicy(navigationPolicy); 952 963 } 953 964 (m_webFrame->frame()->loader()->policyChecker()->*function)(policyAction); -
trunk/Tools/ChangeLog
r109760 r109778 1 2012-03-05 Charlie Reis <creis@chromium.org> 2 3 [chromium] Pass WebNavigationPolicy to WebViewClient::createView 4 https://bugs.webkit.org/show_bug.cgi?id=80057 5 6 Reviewed by Darin Fisher. 7 8 * DumpRenderTree/chromium/WebViewHost.cpp: 9 (WebViewHost::createView): 10 * DumpRenderTree/chromium/WebViewHost.h: 11 (WebViewHost): 12 1 13 2012-03-05 Martin Robinson <mrobinson@igalia.com> 2 14 -
trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp
r109462 r109778 243 243 // WebViewClient ------------------------------------------------------------- 244 244 245 WebView* WebViewHost::createView(WebFrame*, const WebURLRequest& request, const WebWindowFeatures&, const WebString& )245 WebView* WebViewHost::createView(WebFrame*, const WebURLRequest& request, const WebWindowFeatures&, const WebString&, WebNavigationPolicy) 246 246 { 247 247 if (!layoutTestController()->canOpenWindows()) -
trunk/Tools/DumpRenderTree/chromium/WebViewHost.h
r109236 r109778 127 127 128 128 // WebKit::WebViewClient 129 virtual WebKit::WebView* createView(WebKit::WebFrame*, const WebKit::WebURLRequest&, const WebKit::WebWindowFeatures&, const WebKit::WebString& );129 virtual WebKit::WebView* createView(WebKit::WebFrame*, const WebKit::WebURLRequest&, const WebKit::WebWindowFeatures&, const WebKit::WebString&, WebKit::WebNavigationPolicy); 130 130 virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType); 131 131 virtual WebKit::WebWidget* createPopupMenu(const WebKit::WebPopupMenuInfo&);
Note: See TracChangeset
for help on using the changeset viewer.