OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "content/renderer/render_view.h" | 5 #include "content/renderer/render_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
536 void RenderView::PluginCrashed(const FilePath& plugin_path) { | 536 void RenderView::PluginCrashed(const FilePath& plugin_path) { |
537 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path)); | 537 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path)); |
538 } | 538 } |
539 | 539 |
540 WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame, | 540 WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame, |
541 const WebPluginParams& params) { | 541 const WebPluginParams& params) { |
542 webkit::npapi::WebPluginInfo info; | 542 webkit::npapi::WebPluginInfo info; |
543 bool found; | 543 bool found; |
544 std::string mime_type; | 544 std::string mime_type; |
545 Send(new ViewHostMsg_GetPluginInfo( | 545 Send(new ViewHostMsg_GetPluginInfo( |
546 routing_id_, params.url, frame->top()->url(), params.mimeType.utf8(), | 546 routing_id_, params.url, frame->top()->document().url(), |
547 &found, &info, &mime_type)); | 547 params.mimeType.utf8(), &found, &info, &mime_type)); |
548 if (!found || !webkit::npapi::IsPluginEnabled(info)) | 548 if (!found || !webkit::npapi::IsPluginEnabled(info)) |
549 return NULL; | 549 return NULL; |
550 | 550 |
551 bool pepper_plugin_was_registered = false; | 551 bool pepper_plugin_was_registered = false; |
552 scoped_refptr<webkit::ppapi::PluginModule> pepper_module( | 552 scoped_refptr<webkit::ppapi::PluginModule> pepper_module( |
553 pepper_delegate_.CreatePepperPlugin(info.path, | 553 pepper_delegate_.CreatePepperPlugin(info.path, |
554 &pepper_plugin_was_registered)); | 554 &pepper_plugin_was_registered)); |
555 if (pepper_plugin_was_registered) { | 555 if (pepper_plugin_was_registered) { |
556 if (pepper_module) | 556 if (pepper_module) |
557 return CreatePepperPlugin(frame, params, info.path, pepper_module.get()); | 557 return CreatePepperPlugin(frame, params, info.path, pepper_module.get()); |
(...skipping 18 matching lines...) Expand all Loading... |
576 delegate->SetContentAreaFocus(has_focus()); | 576 delegate->SetContentAreaFocus(has_focus()); |
577 } | 577 } |
578 | 578 |
579 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { | 579 void RenderView::UnregisterPluginDelegate(WebPluginDelegateProxy* delegate) { |
580 plugin_delegates_.erase(delegate); | 580 plugin_delegates_.erase(delegate); |
581 } | 581 } |
582 | 582 |
583 bool RenderView::OnMessageReceived(const IPC::Message& message) { | 583 bool RenderView::OnMessageReceived(const IPC::Message& message) { |
584 WebFrame* main_frame = webview() ? webview()->mainFrame() : NULL; | 584 WebFrame* main_frame = webview() ? webview()->mainFrame() : NULL; |
585 if (main_frame) | 585 if (main_frame) |
586 content::GetContentClient()->SetActiveURL(main_frame->url()); | 586 content::GetContentClient()->SetActiveURL(main_frame->document().url()); |
587 | 587 |
588 ObserverListBase<RenderViewObserver>::Iterator it(observers_); | 588 ObserverListBase<RenderViewObserver>::Iterator it(observers_); |
589 RenderViewObserver* observer; | 589 RenderViewObserver* observer; |
590 while ((observer = it.GetNext()) != NULL) | 590 while ((observer = it.GetNext()) != NULL) |
591 if (observer->OnMessageReceived(message)) | 591 if (observer->OnMessageReceived(message)) |
592 return true; | 592 return true; |
593 | 593 |
594 bool handled = true; | 594 bool handled = true; |
595 IPC_BEGIN_MESSAGE_MAP(RenderView, message) | 595 IPC_BEGIN_MESSAGE_MAP(RenderView, message) |
596 IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate) | 596 IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate) |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) | 1256 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) |
1257 return NULL; | 1257 return NULL; |
1258 | 1258 |
1259 ViewHostMsg_CreateWindow_Params params; | 1259 ViewHostMsg_CreateWindow_Params params; |
1260 params.opener_id = routing_id_; | 1260 params.opener_id = routing_id_; |
1261 params.user_gesture = creator->isProcessingUserGesture(); | 1261 params.user_gesture = creator->isProcessingUserGesture(); |
1262 params.window_container_type = WindowFeaturesToContainerType(features); | 1262 params.window_container_type = WindowFeaturesToContainerType(features); |
1263 params.session_storage_namespace_id = session_storage_namespace_id_; | 1263 params.session_storage_namespace_id = session_storage_namespace_id_; |
1264 params.frame_name = frame_name; | 1264 params.frame_name = frame_name; |
1265 params.opener_frame_id = creator->identifier(); | 1265 params.opener_frame_id = creator->identifier(); |
1266 params.opener_url = creator->url(); | 1266 params.opener_url = creator->document().url(); |
1267 params.opener_security_origin = creator->securityOrigin().toString().utf8(); | 1267 params.opener_security_origin = |
| 1268 creator->document().securityOrigin().toString().utf8(); |
1268 if (!request.isNull()) | 1269 if (!request.isNull()) |
1269 params.target_url = request.url(); | 1270 params.target_url = request.url(); |
1270 | 1271 |
1271 int32 routing_id = MSG_ROUTING_NONE; | 1272 int32 routing_id = MSG_ROUTING_NONE; |
1272 int64 cloned_session_storage_namespace_id; | 1273 int64 cloned_session_storage_namespace_id; |
1273 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); | 1274 bool opener_suppressed = creator->willSuppressOpenerInNewFrame(); |
1274 | 1275 |
1275 render_thread_->Send( | 1276 render_thread_->Send( |
1276 new ViewHostMsg_CreateWindow(params, | 1277 new ViewHostMsg_CreateWindow(params, |
1277 &routing_id, | 1278 &routing_id, |
(...skipping 10 matching lines...) Expand all Loading... |
1288 shared_popup_counter_, | 1289 shared_popup_counter_, |
1289 routing_id, | 1290 routing_id, |
1290 cloned_session_storage_namespace_id, | 1291 cloned_session_storage_namespace_id, |
1291 frame_name); | 1292 frame_name); |
1292 view->opened_by_user_gesture_ = params.user_gesture; | 1293 view->opened_by_user_gesture_ = params.user_gesture; |
1293 | 1294 |
1294 // Record whether the creator frame is trying to suppress the opener field. | 1295 // Record whether the creator frame is trying to suppress the opener field. |
1295 view->opener_suppressed_ = opener_suppressed; | 1296 view->opener_suppressed_ = opener_suppressed; |
1296 | 1297 |
1297 // Record the security origin of the creator. | 1298 // Record the security origin of the creator. |
1298 GURL creator_url(creator->securityOrigin().toString().utf8()); | 1299 GURL creator_url(creator->document().securityOrigin().toString().utf8()); |
1299 if (!creator_url.is_valid() || !creator_url.IsStandard()) | 1300 if (!creator_url.is_valid() || !creator_url.IsStandard()) |
1300 creator_url = GURL(); | 1301 creator_url = GURL(); |
1301 view->creator_url_ = creator_url; | 1302 view->creator_url_ = creator_url; |
1302 | 1303 |
1303 // Copy over the alternate error page URL so we can have alt error pages in | 1304 // Copy over the alternate error page URL so we can have alt error pages in |
1304 // the new render view (we don't need the browser to send the URL back down). | 1305 // the new render view (we don't need the browser to send the URL back down). |
1305 view->alternate_error_page_url_ = alternate_error_page_url_; | 1306 view->alternate_error_page_url_ = alternate_error_page_url_; |
1306 | 1307 |
1307 return view->webview(); | 1308 return view->webview(); |
1308 } | 1309 } |
(...skipping 19 matching lines...) Expand all Loading... |
1328 DCHECK(!external_popup_menu_.get()); | 1329 DCHECK(!external_popup_menu_.get()); |
1329 external_popup_menu_.reset( | 1330 external_popup_menu_.reset( |
1330 new ExternalPopupMenu(this, popup_menu_info, popup_menu_client)); | 1331 new ExternalPopupMenu(this, popup_menu_info, popup_menu_client)); |
1331 return external_popup_menu_.get(); | 1332 return external_popup_menu_.get(); |
1332 } | 1333 } |
1333 | 1334 |
1334 RenderWidgetFullscreenPepper* RenderView::CreatePepperFullscreenContainer( | 1335 RenderWidgetFullscreenPepper* RenderView::CreatePepperFullscreenContainer( |
1335 webkit::ppapi::PluginInstance* plugin) { | 1336 webkit::ppapi::PluginInstance* plugin) { |
1336 GURL active_url; | 1337 GURL active_url; |
1337 if (webview() && webview()->mainFrame()) | 1338 if (webview() && webview()->mainFrame()) |
1338 active_url = GURL(webview()->mainFrame()->url()); | 1339 active_url = GURL(webview()->mainFrame()->document().url()); |
1339 RenderWidgetFullscreenPepper* widget = RenderWidgetFullscreenPepper::Create( | 1340 RenderWidgetFullscreenPepper* widget = RenderWidgetFullscreenPepper::Create( |
1340 routing_id_, render_thread_, plugin, active_url); | 1341 routing_id_, render_thread_, plugin, active_url); |
1341 widget->show(WebKit::WebNavigationPolicyIgnore); | 1342 widget->show(WebKit::WebNavigationPolicyIgnore); |
1342 return widget; | 1343 return widget; |
1343 } | 1344 } |
1344 | 1345 |
1345 WebStorageNamespace* RenderView::createSessionStorageNamespace(unsigned quota) { | 1346 WebStorageNamespace* RenderView::createSessionStorageNamespace(unsigned quota) { |
1346 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) | 1347 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) |
1347 return WebStorageNamespace::createSessionStorageNamespace(quota); | 1348 return WebStorageNamespace::createSessionStorageNamespace(quota); |
1348 CHECK(session_storage_namespace_id_ != kInvalidSessionStorageNamespaceId); | 1349 CHECK(session_storage_namespace_id_ != kInvalidSessionStorageNamespaceId); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 ipc_params.accept_types = params.acceptTypes; | 1566 ipc_params.accept_types = params.acceptTypes; |
1566 | 1567 |
1567 return ScheduleFileChooser(ipc_params, chooser_completion); | 1568 return ScheduleFileChooser(ipc_params, chooser_completion); |
1568 } | 1569 } |
1569 | 1570 |
1570 void RenderView::runModalAlertDialog( | 1571 void RenderView::runModalAlertDialog( |
1571 WebFrame* frame, const WebString& message) { | 1572 WebFrame* frame, const WebString& message) { |
1572 RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptAlert, | 1573 RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptAlert, |
1573 message, | 1574 message, |
1574 string16(), | 1575 string16(), |
1575 frame->url(), | 1576 frame->document().url(), |
1576 NULL); | 1577 NULL); |
1577 } | 1578 } |
1578 | 1579 |
1579 bool RenderView::runModalConfirmDialog( | 1580 bool RenderView::runModalConfirmDialog( |
1580 WebFrame* frame, const WebString& message) { | 1581 WebFrame* frame, const WebString& message) { |
1581 return RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptConfirm, | 1582 return RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptConfirm, |
1582 message, | 1583 message, |
1583 string16(), | 1584 string16(), |
1584 frame->url(), | 1585 frame->document().url(), |
1585 NULL); | 1586 NULL); |
1586 } | 1587 } |
1587 | 1588 |
1588 bool RenderView::runModalPromptDialog( | 1589 bool RenderView::runModalPromptDialog( |
1589 WebFrame* frame, const WebString& message, const WebString& default_value, | 1590 WebFrame* frame, const WebString& message, const WebString& default_value, |
1590 WebString* actual_value) { | 1591 WebString* actual_value) { |
1591 string16 result; | 1592 string16 result; |
1592 bool ok = RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptPrompt, | 1593 bool ok = RunJavaScriptMessage(ui::MessageBoxFlags::kIsJavascriptPrompt, |
1593 message, | 1594 message, |
1594 default_value, | 1595 default_value, |
1595 frame->url(), | 1596 frame->document().url(), |
1596 &result); | 1597 &result); |
1597 if (ok) | 1598 if (ok) |
1598 actual_value->assign(result); | 1599 actual_value->assign(result); |
1599 return ok; | 1600 return ok; |
1600 } | 1601 } |
1601 | 1602 |
1602 bool RenderView::runModalBeforeUnloadDialog( | 1603 bool RenderView::runModalBeforeUnloadDialog( |
1603 WebFrame* frame, const WebString& message) { | 1604 WebFrame* frame, const WebString& message) { |
1604 // If we are swapping out, we have already run the beforeunload handler. | 1605 // If we are swapping out, we have already run the beforeunload handler. |
1605 // TODO(creis): Fix OnSwapOut to clear the frame without running beforeunload | 1606 // TODO(creis): Fix OnSwapOut to clear the frame without running beforeunload |
1606 // at all, to avoid running it twice. | 1607 // at all, to avoid running it twice. |
1607 if (is_swapped_out_) | 1608 if (is_swapped_out_) |
1608 return true; | 1609 return true; |
1609 | 1610 |
1610 bool success = false; | 1611 bool success = false; |
1611 // This is an ignored return value, but is included so we can accept the same | 1612 // This is an ignored return value, but is included so we can accept the same |
1612 // response as RunJavaScriptMessage. | 1613 // response as RunJavaScriptMessage. |
1613 string16 ignored_result; | 1614 string16 ignored_result; |
1614 SendAndRunNestedMessageLoop(new ViewHostMsg_RunBeforeUnloadConfirm( | 1615 SendAndRunNestedMessageLoop(new ViewHostMsg_RunBeforeUnloadConfirm( |
1615 routing_id_, frame->url(), message, &success, &ignored_result)); | 1616 routing_id_, frame->document().url(), message, |
| 1617 &success, &ignored_result)); |
1616 return success; | 1618 return success; |
1617 } | 1619 } |
1618 | 1620 |
1619 void RenderView::showContextMenu( | 1621 void RenderView::showContextMenu( |
1620 WebFrame* frame, const WebContextMenuData& data) { | 1622 WebFrame* frame, const WebContextMenuData& data) { |
1621 ContextMenuParams params = ContextMenuParams(data); | 1623 ContextMenuParams params = ContextMenuParams(data); |
1622 // Serializing a GURL longer than content::kMaxURLChars will fail, so don't do | 1624 // Serializing a GURL longer than content::kMaxURLChars will fail, so don't do |
1623 // it. We replace it with an empty GURL so the appropriate items are disabled | 1625 // it. We replace it with an empty GURL so the appropriate items are disabled |
1624 // in the context menu. | 1626 // in the context menu. |
1625 // TODO(jcivelli): http://crbug.com/45160 This prevents us from saving large | 1627 // TODO(jcivelli): http://crbug.com/45160 This prevents us from saving large |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1970 IsNonLocalTopLevelNavigation(url, frame, type)) { | 1972 IsNonLocalTopLevelNavigation(url, frame, type)) { |
1971 GURL referrer(request.httpHeaderField(WebString::fromUTF8("Referer"))); | 1973 GURL referrer(request.httpHeaderField(WebString::fromUTF8("Referer"))); |
1972 // Reset these counters as the RenderView could be reused for the next | 1974 // Reset these counters as the RenderView could be reused for the next |
1973 // navigation. | 1975 // navigation. |
1974 page_id_ = -1; | 1976 page_id_ = -1; |
1975 last_page_id_sent_to_browser_ = -1; | 1977 last_page_id_sent_to_browser_ = -1; |
1976 OpenURL(url, referrer, default_policy); | 1978 OpenURL(url, referrer, default_policy); |
1977 return WebKit::WebNavigationPolicyIgnore; // Suppress the load here. | 1979 return WebKit::WebNavigationPolicyIgnore; // Suppress the load here. |
1978 } | 1980 } |
1979 | 1981 |
1980 GURL old_url(frame->url()); | 1982 GURL old_url(frame->document().url()); |
1981 | 1983 |
1982 // Detect when we're crossing a permission-based boundary (e.g. into or out of | 1984 // Detect when we're crossing a permission-based boundary (e.g. into or out of |
1983 // an extension or app origin, leaving a WebUI page, etc). We only care about | 1985 // an extension or app origin, leaving a WebUI page, etc). We only care about |
1984 // top-level navigations within the current tab (as opposed to, for example, | 1986 // top-level navigations within the current tab (as opposed to, for example, |
1985 // opening a new window). But we sometimes navigate to about:blank to clear a | 1987 // opening a new window). But we sometimes navigate to about:blank to clear a |
1986 // tab, and we want to still allow that. | 1988 // tab, and we want to still allow that. |
1987 // | 1989 // |
1988 // Note: we do this only for GET requests because our mechanism for switching | 1990 // Note: we do this only for GET requests because our mechanism for switching |
1989 // processes only issues GET requests. In particular, POST requests don't | 1991 // processes only issues GET requests. In particular, POST requests don't |
1990 // work, because this mechanism does not preserve form POST data. If it | 1992 // work, because this mechanism does not preserve form POST data. If it |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2054 // Must be a JavaScript navigation, which appears as "other". | 2056 // Must be a JavaScript navigation, which appears as "other". |
2055 type == WebKit::WebNavigationTypeOther; | 2057 type == WebKit::WebNavigationTypeOther; |
2056 | 2058 |
2057 // Recognize if this navigation is from a link with rel=noreferrer and | 2059 // Recognize if this navigation is from a link with rel=noreferrer and |
2058 // target=_blank attributes, in which case the opener will be suppressed. If | 2060 // target=_blank attributes, in which case the opener will be suppressed. If |
2059 // so, it is safe to load cross-site pages in a separate process, so we | 2061 // so, it is safe to load cross-site pages in a separate process, so we |
2060 // should let the browser handle it. | 2062 // should let the browser handle it. |
2061 bool is_noreferrer_and_blank_target = | 2063 bool is_noreferrer_and_blank_target = |
2062 // Frame should be top level and not yet navigated. | 2064 // Frame should be top level and not yet navigated. |
2063 frame->parent() == NULL && | 2065 frame->parent() == NULL && |
2064 frame->url().isEmpty() && | 2066 frame->document().url().isEmpty() && |
2065 historyBackListCount() < 1 && | 2067 historyBackListCount() < 1 && |
2066 historyForwardListCount() < 1 && | 2068 historyForwardListCount() < 1 && |
2067 // Links with rel=noreferrer will have no Referer field, and their | 2069 // Links with rel=noreferrer will have no Referer field, and their |
2068 // resulting frame will have its window.opener suppressed. | 2070 // resulting frame will have its window.opener suppressed. |
2069 // TODO(creis): should add a request.httpReferrer() method to help avoid | 2071 // TODO(creis): should add a request.httpReferrer() method to help avoid |
2070 // typos on the unusual spelling of Referer. | 2072 // typos on the unusual spelling of Referer. |
2071 request.httpHeaderField(WebString::fromUTF8("Referer")).isNull() && | 2073 request.httpHeaderField(WebString::fromUTF8("Referer")).isNull() && |
2072 opener_suppressed_ && | 2074 opener_suppressed_ && |
2073 frame->opener() == NULL && | 2075 frame->opener() == NULL && |
2074 // Links with target=_blank will have no name. | 2076 // Links with target=_blank will have no name. |
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2427 completed_client_redirect_src_ = GURL(); | 2429 completed_client_redirect_src_ = GURL(); |
2428 | 2430 |
2429 // Check whether we have new encoding name. | 2431 // Check whether we have new encoding name. |
2430 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 2432 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
2431 } | 2433 } |
2432 | 2434 |
2433 void RenderView::didClearWindowObject(WebFrame* frame) { | 2435 void RenderView::didClearWindowObject(WebFrame* frame) { |
2434 FOR_EACH_OBSERVER(RenderViewObserver, observers_, | 2436 FOR_EACH_OBSERVER(RenderViewObserver, observers_, |
2435 DidClearWindowObject(frame)); | 2437 DidClearWindowObject(frame)); |
2436 | 2438 |
2437 GURL frame_url = frame->url(); | 2439 GURL frame_url = frame->document().url(); |
2438 if (BindingsPolicy::is_web_ui_enabled(enabled_bindings_) && | 2440 if (BindingsPolicy::is_web_ui_enabled(enabled_bindings_) && |
2439 (frame_url.SchemeIs(chrome::kChromeUIScheme) || | 2441 (frame_url.SchemeIs(chrome::kChromeUIScheme) || |
2440 frame_url.SchemeIs(chrome::kDataScheme))) { | 2442 frame_url.SchemeIs(chrome::kDataScheme))) { |
2441 GetWebUIBindings()->set_message_sender(this); | 2443 GetWebUIBindings()->set_message_sender(this); |
2442 GetWebUIBindings()->set_routing_id(routing_id_); | 2444 GetWebUIBindings()->set_routing_id(routing_id_); |
2443 GetWebUIBindings()->BindToJavascript(frame, "chrome"); | 2445 GetWebUIBindings()->BindToJavascript(frame, "chrome"); |
2444 } | 2446 } |
2445 } | 2447 } |
2446 | 2448 |
2447 void RenderView::didCreateDocumentElement(WebFrame* frame) { | 2449 void RenderView::didCreateDocumentElement(WebFrame* frame) { |
2448 // Notify the browser about non-blank documents loading in the top frame. | 2450 // Notify the browser about non-blank documents loading in the top frame. |
2449 GURL url = frame->url(); | 2451 GURL url = frame->document().url(); |
2450 if (url.is_valid() && url.spec() != chrome::kAboutBlankURL) { | 2452 if (url.is_valid() && url.spec() != chrome::kAboutBlankURL) { |
2451 if (frame == webview()->mainFrame()) | 2453 if (frame == webview()->mainFrame()) |
2452 Send(new ViewHostMsg_DocumentAvailableInMainFrame(routing_id_)); | 2454 Send(new ViewHostMsg_DocumentAvailableInMainFrame(routing_id_)); |
2453 } | 2455 } |
2454 | 2456 |
2455 FOR_EACH_OBSERVER(RenderViewObserver, observers_, | 2457 FOR_EACH_OBSERVER(RenderViewObserver, observers_, |
2456 DidCreateDocumentElement(frame)); | 2458 DidCreateDocumentElement(frame)); |
2457 } | 2459 } |
2458 | 2460 |
2459 void RenderView::didReceiveTitle(WebFrame* frame, const WebString& title, | 2461 void RenderView::didReceiveTitle(WebFrame* frame, const WebString& title, |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2623 WebFrame* frame, unsigned identifier) { | 2625 WebFrame* frame, unsigned identifier) { |
2624 NavigationState* navigation_state = | 2626 NavigationState* navigation_state = |
2625 NavigationState::FromDataSource(frame->dataSource()); | 2627 NavigationState::FromDataSource(frame->dataSource()); |
2626 if (!navigation_state->use_error_page()) | 2628 if (!navigation_state->use_error_page()) |
2627 return; | 2629 return; |
2628 | 2630 |
2629 // Display error page, if appropriate. | 2631 // Display error page, if appropriate. |
2630 int http_status_code = navigation_state->http_status_code(); | 2632 int http_status_code = navigation_state->http_status_code(); |
2631 if (http_status_code == 404) { | 2633 if (http_status_code == 404) { |
2632 // On 404s, try a remote search page as a fallback. | 2634 // On 404s, try a remote search page as a fallback. |
2633 const GURL& frame_url = frame->url(); | 2635 const GURL& document_url = frame->document().url(); |
2634 | 2636 |
2635 const GURL& error_page_url = GetAlternateErrorPageURL(frame_url, HTTP_404); | 2637 const GURL& error_page_url = |
| 2638 GetAlternateErrorPageURL(document_url, HTTP_404); |
2636 if (error_page_url.is_valid()) { | 2639 if (error_page_url.is_valid()) { |
2637 WebURLError original_error; | 2640 WebURLError original_error; |
2638 original_error.domain = "http"; | 2641 original_error.domain = "http"; |
2639 original_error.reason = 404; | 2642 original_error.reason = 404; |
2640 original_error.unreachableURL = frame_url; | 2643 original_error.unreachableURL = document_url; |
2641 | 2644 |
2642 navigation_state->set_alt_error_page_fetcher( | 2645 navigation_state->set_alt_error_page_fetcher( |
2643 new AltErrorPageResourceFetcher( | 2646 new AltErrorPageResourceFetcher( |
2644 error_page_url, frame, original_error, | 2647 error_page_url, frame, original_error, |
2645 NewCallback(this, &RenderView::AltErrorPageFinished))); | 2648 NewCallback(this, &RenderView::AltErrorPageFinished))); |
2646 return; | 2649 return; |
2647 } | 2650 } |
2648 } | 2651 } |
2649 | 2652 |
2650 content::GetContentClient()->renderer()->ShowErrorPage( | 2653 content::GetContentClient()->renderer()->ShowErrorPage( |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2787 } | 2790 } |
2788 | 2791 |
2789 void RenderView::openFileSystem( | 2792 void RenderView::openFileSystem( |
2790 WebFrame* frame, | 2793 WebFrame* frame, |
2791 WebFileSystem::Type type, | 2794 WebFileSystem::Type type, |
2792 long long size, | 2795 long long size, |
2793 bool create, | 2796 bool create, |
2794 WebFileSystemCallbacks* callbacks) { | 2797 WebFileSystemCallbacks* callbacks) { |
2795 DCHECK(callbacks); | 2798 DCHECK(callbacks); |
2796 | 2799 |
2797 WebSecurityOrigin origin = frame->securityOrigin(); | 2800 WebSecurityOrigin origin = frame->document().securityOrigin(); |
2798 if (origin.isEmpty()) { | 2801 if (origin.isEmpty()) { |
2799 // Uninitialized document? | 2802 // Uninitialized document? |
2800 callbacks->didFail(WebKit::WebFileErrorAbort); | 2803 callbacks->didFail(WebKit::WebFileErrorAbort); |
2801 return; | 2804 return; |
2802 } | 2805 } |
2803 | 2806 |
2804 ChildThread::current()->file_system_dispatcher()->OpenFileSystem( | 2807 ChildThread::current()->file_system_dispatcher()->OpenFileSystem( |
2805 GURL(origin.toString()), static_cast<fileapi::FileSystemType>(type), | 2808 GURL(origin.toString()), static_cast<fileapi::FileSystemType>(type), |
2806 size, create, new WebFileSystemCallbackDispatcher(callbacks)); | 2809 size, create, new WebFileSystemCallbackDispatcher(callbacks)); |
2807 } | 2810 } |
2808 | 2811 |
2809 void RenderView::queryStorageUsageAndQuota( | 2812 void RenderView::queryStorageUsageAndQuota( |
2810 WebFrame* frame, | 2813 WebFrame* frame, |
2811 WebStorageQuotaType type, | 2814 WebStorageQuotaType type, |
2812 WebStorageQuotaCallbacks* callbacks) { | 2815 WebStorageQuotaCallbacks* callbacks) { |
2813 DCHECK(frame); | 2816 DCHECK(frame); |
2814 WebSecurityOrigin origin = frame->securityOrigin(); | 2817 WebSecurityOrigin origin = frame->document().securityOrigin(); |
2815 if (origin.isEmpty()) { | 2818 if (origin.isEmpty()) { |
2816 // Uninitialized document? | 2819 // Uninitialized document? |
2817 callbacks->didFail(WebKit::WebStorageQuotaErrorAbort); | 2820 callbacks->didFail(WebKit::WebStorageQuotaErrorAbort); |
2818 return; | 2821 return; |
2819 } | 2822 } |
2820 ChildThread::current()->quota_dispatcher()->QueryStorageUsageAndQuota( | 2823 ChildThread::current()->quota_dispatcher()->QueryStorageUsageAndQuota( |
2821 GURL(origin.toString()), type, callbacks); | 2824 GURL(origin.toString()), type, callbacks); |
2822 } | 2825 } |
2823 | 2826 |
2824 void RenderView::requestStorageQuota( | 2827 void RenderView::requestStorageQuota( |
2825 WebFrame* frame, | 2828 WebFrame* frame, |
2826 WebStorageQuotaType type, | 2829 WebStorageQuotaType type, |
2827 unsigned long long requested_size, | 2830 unsigned long long requested_size, |
2828 WebStorageQuotaCallbacks* callbacks) { | 2831 WebStorageQuotaCallbacks* callbacks) { |
2829 DCHECK(frame); | 2832 DCHECK(frame); |
2830 WebSecurityOrigin origin = frame->securityOrigin(); | 2833 WebSecurityOrigin origin = frame->document().securityOrigin(); |
2831 if (origin.isEmpty()) { | 2834 if (origin.isEmpty()) { |
2832 // Uninitialized document? | 2835 // Uninitialized document? |
2833 callbacks->didFail(WebKit::WebStorageQuotaErrorAbort); | 2836 callbacks->didFail(WebKit::WebStorageQuotaErrorAbort); |
2834 return; | 2837 return; |
2835 } | 2838 } |
2836 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( | 2839 ChildThread::current()->quota_dispatcher()->RequestStorageQuota( |
2837 routing_id(), GURL(origin.toString()), type, requested_size, callbacks); | 2840 routing_id(), GURL(origin.toString()), type, requested_size, callbacks); |
2838 } | 2841 } |
2839 | 2842 |
2840 // webkit_glue::WebPluginPageDelegate ----------------------------------------- | 2843 // webkit_glue::WebPluginPageDelegate ----------------------------------------- |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3299 void RenderView::OnScriptEvalRequest(const string16& frame_xpath, | 3302 void RenderView::OnScriptEvalRequest(const string16& frame_xpath, |
3300 const string16& jscript, | 3303 const string16& jscript, |
3301 int id, | 3304 int id, |
3302 bool notify_result) { | 3305 bool notify_result) { |
3303 EvaluateScript(frame_xpath, jscript, id, notify_result); | 3306 EvaluateScript(frame_xpath, jscript, id, notify_result); |
3304 } | 3307 } |
3305 | 3308 |
3306 void RenderView::OnCSSInsertRequest(const std::wstring& frame_xpath, | 3309 void RenderView::OnCSSInsertRequest(const std::wstring& frame_xpath, |
3307 const std::string& css, | 3310 const std::string& css, |
3308 const std::string& id) { | 3311 const std::string& id) { |
3309 WebFrame* web_frame = GetChildFrame(frame_xpath); | 3312 WebFrame* frame = GetChildFrame(frame_xpath); |
3310 if (!web_frame) | 3313 if (!frame) |
3311 return; | 3314 return; |
3312 | 3315 |
3313 web_frame->insertStyleText(WebString::fromUTF8(css), WebString::fromUTF8(id)); | 3316 frame->document().insertStyleText(WebString::fromUTF8(css), |
| 3317 WebString::fromUTF8(id)); |
3314 } | 3318 } |
3315 | 3319 |
3316 void RenderView::OnAllowBindings(int enabled_bindings_flags) { | 3320 void RenderView::OnAllowBindings(int enabled_bindings_flags) { |
3317 enabled_bindings_ |= enabled_bindings_flags; | 3321 enabled_bindings_ |= enabled_bindings_flags; |
3318 } | 3322 } |
3319 | 3323 |
3320 void RenderView::OnSetWebUIProperty(const std::string& name, | 3324 void RenderView::OnSetWebUIProperty(const std::string& name, |
3321 const std::string& value) { | 3325 const std::string& value) { |
3322 DCHECK(BindingsPolicy::is_web_ui_enabled(enabled_bindings_)); | 3326 DCHECK(BindingsPolicy::is_web_ui_enabled(enabled_bindings_)); |
3323 GetWebUIBindings()->SetProperty(name, value); | 3327 GetWebUIBindings()->SetProperty(name, value); |
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4133 routing_id_, minimum_percent, maximum_percent, remember)); | 4137 routing_id_, minimum_percent, maximum_percent, remember)); |
4134 } | 4138 } |
4135 | 4139 |
4136 void RenderView::zoomLevelChanged() { | 4140 void RenderView::zoomLevelChanged() { |
4137 bool remember = !webview()->mainFrame()->document().isPluginDocument(); | 4141 bool remember = !webview()->mainFrame()->document().isPluginDocument(); |
4138 | 4142 |
4139 // Tell the browser which url got zoomed so it can update the menu and the | 4143 // Tell the browser which url got zoomed so it can update the menu and the |
4140 // saved values if necessary | 4144 // saved values if necessary |
4141 Send(new ViewHostMsg_DidZoomURL( | 4145 Send(new ViewHostMsg_DidZoomURL( |
4142 routing_id_, webview()->zoomLevel(), remember, | 4146 routing_id_, webview()->zoomLevel(), remember, |
4143 GURL(webview()->mainFrame()->url()))); | 4147 GURL(webview()->mainFrame()->document().url()))); |
4144 } | 4148 } |
4145 | 4149 |
4146 void RenderView::registerProtocolHandler(const WebString& scheme, | 4150 void RenderView::registerProtocolHandler(const WebString& scheme, |
4147 const WebString& base_url, | 4151 const WebString& base_url, |
4148 const WebString& url, | 4152 const WebString& url, |
4149 const WebString& title) { | 4153 const WebString& title) { |
4150 GURL base(base_url); | 4154 GURL base(base_url); |
4151 GURL absolute_url = base.Resolve(UTF16ToUTF8(url)); | 4155 GURL absolute_url = base.Resolve(UTF16ToUTF8(url)); |
4152 if (base.GetOrigin() != absolute_url.GetOrigin()) { | 4156 if (base.GetOrigin() != absolute_url.GetOrigin()) { |
4153 return; | 4157 return; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4192 type != WebKit::WebNavigationTypeFormResubmitted && | 4196 type != WebKit::WebNavigationTypeFormResubmitted && |
4193 type != WebKit::WebNavigationTypeBackForward) { | 4197 type != WebKit::WebNavigationTypeBackForward) { |
4194 // The opener relationship between the new window and the parent allows the | 4198 // The opener relationship between the new window and the parent allows the |
4195 // new window to script the parent and vice versa. This is not allowed if | 4199 // new window to script the parent and vice versa. This is not allowed if |
4196 // the origins of the two domains are different. This can be treated as a | 4200 // the origins of the two domains are different. This can be treated as a |
4197 // top level navigation and routed back to the host. | 4201 // top level navigation and routed back to the host. |
4198 WebKit::WebFrame* opener = frame->opener(); | 4202 WebKit::WebFrame* opener = frame->opener(); |
4199 if (!opener) { | 4203 if (!opener) { |
4200 return true; | 4204 return true; |
4201 } else { | 4205 } else { |
4202 if (url.GetOrigin() != GURL(opener->url()).GetOrigin()) | 4206 if (url.GetOrigin() != GURL(opener->document().url()).GetOrigin()) |
4203 return true; | 4207 return true; |
4204 } | 4208 } |
4205 } | 4209 } |
4206 return false; | 4210 return false; |
4207 } | 4211 } |
4208 | 4212 |
4209 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code, | 4213 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code, |
4210 IPC::PlatformFileForTransit file_for_transit, | 4214 IPC::PlatformFileForTransit file_for_transit, |
4211 int message_id) { | 4215 int message_id) { |
4212 pepper_delegate_.OnAsyncFileOpened( | 4216 pepper_delegate_.OnAsyncFileOpened( |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4257 const webkit_glue::CustomContextMenuContext& custom_context) { | 4261 const webkit_glue::CustomContextMenuContext& custom_context) { |
4258 if (custom_context.is_pepper_menu) | 4262 if (custom_context.is_pepper_menu) |
4259 pepper_delegate_.OnContextMenuClosed(custom_context); | 4263 pepper_delegate_.OnContextMenuClosed(custom_context); |
4260 else | 4264 else |
4261 context_menu_node_.reset(); | 4265 context_menu_node_.reset(); |
4262 } | 4266 } |
4263 | 4267 |
4264 void RenderView::OnNetworkStateChanged(bool online) { | 4268 void RenderView::OnNetworkStateChanged(bool online) { |
4265 WebNetworkStateNotifier::setOnLine(online); | 4269 WebNetworkStateNotifier::setOnLine(online); |
4266 } | 4270 } |
OLD | NEW |