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

Side by Side Diff: content/browser/tab_contents/tab_contents.cc

Issue 6708114: Revert 79691 - Move WebUIFactory to chrome/browser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 | Annotate | Revision Log
OLDNEW
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/browser/tab_contents/tab_contents.h" 5 #include "content/browser/tab_contents/tab_contents.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #include "chrome/common/extensions/extension_action.h" 59 #include "chrome/common/extensions/extension_action.h"
60 #include "chrome/common/extensions/extension_icon_set.h" 60 #include "chrome/common/extensions/extension_icon_set.h"
61 #include "chrome/common/extensions/extension_messages.h" 61 #include "chrome/common/extensions/extension_messages.h"
62 #include "chrome/common/extensions/extension_resource.h" 62 #include "chrome/common/extensions/extension_resource.h"
63 #include "chrome/common/extensions/url_pattern.h" 63 #include "chrome/common/extensions/url_pattern.h"
64 #include "chrome/common/net/url_request_context_getter.h" 64 #include "chrome/common/net/url_request_context_getter.h"
65 #include "chrome/common/pref_names.h" 65 #include "chrome/common/pref_names.h"
66 #include "chrome/common/render_messages.h" 66 #include "chrome/common/render_messages.h"
67 #include "chrome/common/url_constants.h" 67 #include "chrome/common/url_constants.h"
68 #include "content/browser/child_process_security_policy.h" 68 #include "content/browser/child_process_security_policy.h"
69 #include "content/browser/content_browser_client.h"
70 #include "content/browser/host_zoom_map.h" 69 #include "content/browser/host_zoom_map.h"
71 #include "content/browser/in_process_webkit/session_storage_namespace.h" 70 #include "content/browser/in_process_webkit/session_storage_namespace.h"
72 #include "content/browser/renderer_host/render_process_host.h" 71 #include "content/browser/renderer_host/render_process_host.h"
73 #include "content/browser/renderer_host/render_view_host.h" 72 #include "content/browser/renderer_host/render_view_host.h"
74 #include "content/browser/renderer_host/render_widget_host_view.h" 73 #include "content/browser/renderer_host/render_widget_host_view.h"
75 #include "content/browser/renderer_host/resource_request_details.h" 74 #include "content/browser/renderer_host/resource_request_details.h"
76 #include "content/browser/site_instance.h" 75 #include "content/browser/site_instance.h"
77 #include "content/browser/tab_contents/interstitial_page.h" 76 #include "content/browser/tab_contents/interstitial_page.h"
78 #include "content/browser/tab_contents/navigation_entry.h" 77 #include "content/browser/tab_contents/navigation_entry.h"
79 #include "content/browser/tab_contents/provisional_load_details.h" 78 #include "content/browser/tab_contents/provisional_load_details.h"
80 #include "content/browser/tab_contents/tab_contents_delegate.h" 79 #include "content/browser/tab_contents/tab_contents_delegate.h"
81 #include "content/browser/tab_contents/tab_contents_observer.h" 80 #include "content/browser/tab_contents/tab_contents_observer.h"
82 #include "content/browser/tab_contents/tab_contents_view.h" 81 #include "content/browser/tab_contents/tab_contents_view.h"
83 #include "content/browser/webui/web_ui_factory.h" 82 #include "content/browser/webui/web_ui.h"
84 #include "content/common/content_client.h"
85 #include "content/common/navigation_types.h" 83 #include "content/common/navigation_types.h"
86 #include "content/common/notification_service.h" 84 #include "content/common/notification_service.h"
87 #include "content/common/view_messages.h" 85 #include "content/common/view_messages.h"
88 #include "net/base/net_util.h" 86 #include "net/base/net_util.h"
89 #include "net/base/registry_controlled_domain.h" 87 #include "net/base/registry_controlled_domain.h"
90 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 88 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
91 #include "ui/base/resource/resource_bundle.h" 89 #include "ui/base/resource/resource_bundle.h"
92 #include "ui/gfx/codec/png_codec.h" 90 #include "ui/gfx/codec/png_codec.h"
93 #include "webkit/glue/password_form.h" 91 #include "webkit/glue/password_form.h"
94 #include "webkit/glue/webpreferences.h" 92 #include "webkit/glue/webpreferences.h"
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 displayed_insecure_content_(false), 243 displayed_insecure_content_(false),
246 extension_app_(NULL), 244 extension_app_(NULL),
247 capturing_contents_(false), 245 capturing_contents_(false),
248 is_being_destroyed_(false), 246 is_being_destroyed_(false),
249 notify_disconnection_(false), 247 notify_disconnection_(false),
250 #if defined(OS_WIN) 248 #if defined(OS_WIN)
251 message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)), 249 message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)),
252 #endif 250 #endif
253 suppress_javascript_messages_(false), 251 suppress_javascript_messages_(false),
254 is_showing_before_unload_dialog_(false), 252 is_showing_before_unload_dialog_(false),
255 opener_web_ui_type_(WebUI::kNoWebUI), 253 opener_web_ui_type_(WebUIFactory::kNoWebUI),
256 language_state_(&controller_), 254 language_state_(&controller_),
257 closed_by_user_gesture_(false), 255 closed_by_user_gesture_(false),
258 minimum_zoom_percent_( 256 minimum_zoom_percent_(
259 static_cast<int>(WebKit::WebView::minTextSizeMultiplier * 100)), 257 static_cast<int>(WebKit::WebView::minTextSizeMultiplier * 100)),
260 maximum_zoom_percent_( 258 maximum_zoom_percent_(
261 static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)), 259 static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)),
262 temporary_zoom_settings_(false), 260 temporary_zoom_settings_(false),
263 content_restrictions_(0) { 261 content_restrictions_(0) {
264 renderer_preferences_util::UpdateFromSystemSettings( 262 renderer_preferences_util::UpdateFromSystemSettings(
265 &renderer_preferences_, profile); 263 &renderer_preferences_, profile);
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 543
546 bool TabContents::ShouldDisplayURL() { 544 bool TabContents::ShouldDisplayURL() {
547 // Don't hide the url in view source mode and with interstitials. 545 // Don't hide the url in view source mode and with interstitials.
548 NavigationEntry* entry = controller_.GetActiveEntry(); 546 NavigationEntry* entry = controller_.GetActiveEntry();
549 if (entry && (entry->IsViewSourceMode() || 547 if (entry && (entry->IsViewSourceMode() ||
550 entry->page_type() == INTERSTITIAL_PAGE)) { 548 entry->page_type() == INTERSTITIAL_PAGE)) {
551 return true; 549 return true;
552 } 550 }
553 551
554 // We always display the URL for non-WebUI URLs to prevent spoofing. 552 // We always display the URL for non-WebUI URLs to prevent spoofing.
555 if (entry && !content::WebUIFactory::Get()->HasWebUIScheme(entry->url())) 553 if (entry && !WebUIFactory::HasWebUIScheme(entry->url()))
556 return true; 554 return true;
557 555
558 WebUI* web_ui = GetWebUIForCurrentState(); 556 WebUI* web_ui = GetWebUIForCurrentState();
559 if (web_ui) 557 if (web_ui)
560 return !web_ui->should_hide_url(); 558 return !web_ui->should_hide_url();
561 return true; 559 return true;
562 } 560 }
563 561
564 SkBitmap TabContents::GetFavicon() const { 562 SkBitmap TabContents::GetFavicon() const {
565 // Like GetTitle(), we also want to use the favicon for the last committed 563 // Like GetTitle(), we also want to use the favicon for the last committed
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 return false; // Unable to create the desired render view host. 706 return false; // Unable to create the desired render view host.
709 707
710 if (delegate_ && delegate_->ShouldEnablePreferredSizeNotifications()) { 708 if (delegate_ && delegate_->ShouldEnablePreferredSizeNotifications()) {
711 dest_render_view_host->EnablePreferredSizeChangedMode( 709 dest_render_view_host->EnablePreferredSizeChangedMode(
712 kPreferredSizeWidth | kPreferredSizeHeightThisIsSlow); 710 kPreferredSizeWidth | kPreferredSizeHeightThisIsSlow);
713 } 711 }
714 712
715 // For security, we should never send non-Web-UI URLs to a Web UI renderer. 713 // For security, we should never send non-Web-UI URLs to a Web UI renderer.
716 // Double check that here. 714 // Double check that here.
717 int enabled_bindings = dest_render_view_host->enabled_bindings(); 715 int enabled_bindings = dest_render_view_host->enabled_bindings();
718 bool is_allowed_in_web_ui_renderer = content::GetContentClient()-> 716 bool is_allowed_in_web_ui_renderer =
719 browser()->GetWebUIFactory()->IsURLAcceptableForWebUI(profile(), 717 WebUIFactory::IsURLAcceptableForWebUI(profile(), entry.url());
720 entry.url());
721 CHECK(!BindingsPolicy::is_web_ui_enabled(enabled_bindings) || 718 CHECK(!BindingsPolicy::is_web_ui_enabled(enabled_bindings) ||
722 is_allowed_in_web_ui_renderer); 719 is_allowed_in_web_ui_renderer);
723 720
724 // Tell DevTools agent that it is attached prior to the navigation. 721 // Tell DevTools agent that it is attached prior to the navigation.
725 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); 722 DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
726 if (devtools_manager) { // NULL in unit tests. 723 if (devtools_manager) { // NULL in unit tests.
727 devtools_manager->OnNavigatingToPendingEntry(render_view_host(), 724 devtools_manager->OnNavigatingToPendingEntry(render_view_host(),
728 dest_render_view_host, 725 dest_render_view_host,
729 entry.url()); 726 entry.url());
730 } 727 }
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1594 // 1591 //
1595 // - Normal state with no load: committed nav entry + no pending nav entry: 1592 // - Normal state with no load: committed nav entry + no pending nav entry:
1596 // -> Use committed Web UI. 1593 // -> Use committed Web UI.
1597 if (controller_.pending_entry() && 1594 if (controller_.pending_entry() &&
1598 (controller_.GetLastCommittedEntry() || 1595 (controller_.GetLastCommittedEntry() ||
1599 render_manager_.pending_web_ui())) 1596 render_manager_.pending_web_ui()))
1600 return render_manager_.pending_web_ui(); 1597 return render_manager_.pending_web_ui();
1601 return render_manager_.web_ui(); 1598 return render_manager_.web_ui();
1602 } 1599 }
1603 1600
1604 WebUI::TypeID TabContents::GetWebUITypeForCurrentState() {
1605 return content::WebUIFactory::Get()->GetWebUIType(profile(), GetURL());
1606 }
1607
1608 void TabContents::DidNavigateMainFramePostCommit( 1601 void TabContents::DidNavigateMainFramePostCommit(
1609 const NavigationController::LoadCommittedDetails& details, 1602 const NavigationController::LoadCommittedDetails& details,
1610 const ViewHostMsg_FrameNavigate_Params& params) { 1603 const ViewHostMsg_FrameNavigate_Params& params) {
1611 if (opener_web_ui_type_ != WebUI::kNoWebUI) { 1604 if (opener_web_ui_type_ != WebUIFactory::kNoWebUI) {
1612 // If this is a window.open navigation, use the same WebUI as the renderer 1605 // If this is a window.open navigation, use the same WebUI as the renderer
1613 // that opened the window, as long as both renderers have the same 1606 // that opened the window, as long as both renderers have the same
1614 // privileges. 1607 // privileges.
1615 if (delegate_ && opener_web_ui_type_ == GetWebUITypeForCurrentState()) { 1608 if (opener_web_ui_type_ ==
1616 WebUI* web_ui = content::GetContentClient()->browser()-> 1609 WebUIFactory::GetWebUIType(profile(), GetURL())) {
1617 GetWebUIFactory()->CreateWebUIForURL(this, GetURL()); 1610 WebUI* web_ui = WebUIFactory::CreateWebUIForURL(this, GetURL());
1618 // web_ui might be NULL if the URL refers to a non-existent extension. 1611 // web_ui might be NULL if the URL refers to a non-existent extension.
1619 if (web_ui) { 1612 if (web_ui) {
1620 render_manager_.SetWebUIPostCommit(web_ui); 1613 render_manager_.SetWebUIPostCommit(web_ui);
1621 web_ui->RenderViewCreated(render_view_host()); 1614 web_ui->RenderViewCreated(render_view_host());
1622 } 1615 }
1623 } 1616 }
1624 opener_web_ui_type_ = WebUI::kNoWebUI; 1617 opener_web_ui_type_ = WebUIFactory::kNoWebUI;
1625 } 1618 }
1626 1619
1627 if (details.is_user_initiated_main_frame_load()) { 1620 if (details.is_user_initiated_main_frame_load()) {
1628 // Clear the status bubble. This is a workaround for a bug where WebKit 1621 // Clear the status bubble. This is a workaround for a bug where WebKit
1629 // doesn't let us know that the cursor left an element during a 1622 // doesn't let us know that the cursor left an element during a
1630 // transition (this is also why the mouse cursor remains as a hand after 1623 // transition (this is also why the mouse cursor remains as a hand after
1631 // clicking on a link); see bugs 1184641 and 980803. We don't want to 1624 // clicking on a link); see bugs 1184641 and 980803. We don't want to
1632 // clear the bubble when a user navigates to a named anchor in the same 1625 // clear the bubble when a user navigates to a named anchor in the same
1633 // page. 1626 // page.
1634 UpdateTargetURL(details.entry->page_id(), GURL()); 1627 UpdateTargetURL(details.entry->page_id(), GURL());
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 NotificationService::current()->Notify( 1987 NotificationService::current()->Notify(
1995 NotificationType::RENDER_VIEW_HOST_CREATED_FOR_TAB, 1988 NotificationType::RENDER_VIEW_HOST_CREATED_FOR_TAB,
1996 Source<TabContents>(this), 1989 Source<TabContents>(this),
1997 Details<RenderViewHost>(render_view_host)); 1990 Details<RenderViewHost>(render_view_host));
1998 NavigationEntry* entry = controller_.GetActiveEntry(); 1991 NavigationEntry* entry = controller_.GetActiveEntry();
1999 if (!entry) 1992 if (!entry)
2000 return; 1993 return;
2001 1994
2002 // When we're creating views, we're still doing initial setup, so we always 1995 // When we're creating views, we're still doing initial setup, so we always
2003 // use the pending Web UI rather than any possibly existing committed one. 1996 // use the pending Web UI rather than any possibly existing committed one.
2004 if (render_manager_.pending_web_ui()) 1997 if (render_manager_.pending_web_ui()) {
2005 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host); 1998 render_manager_.pending_web_ui()->RenderViewCreated(render_view_host);
1999 }
2006 2000
2007 if (entry->IsViewSourceMode()) { 2001 if (entry->IsViewSourceMode()) {
2008 // Put the renderer in view source mode. 2002 // Put the renderer in view source mode.
2009 render_view_host->Send( 2003 render_view_host->Send(
2010 new ViewMsg_EnableViewSourceMode(render_view_host->routing_id())); 2004 new ViewMsg_EnableViewSourceMode(render_view_host->routing_id()));
2011 } 2005 }
2012 2006
2013 view()->RenderViewCreated(render_view_host); 2007 view()->RenderViewCreated(render_view_host);
2014 } 2008 }
2015 2009
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
2570 2564
2571 void TabContents::NotifySwappedFromRenderManager() { 2565 void TabContents::NotifySwappedFromRenderManager() {
2572 NotifySwapped(); 2566 NotifySwapped();
2573 } 2567 }
2574 2568
2575 NavigationController& TabContents::GetControllerForRenderManager() { 2569 NavigationController& TabContents::GetControllerForRenderManager() {
2576 return controller(); 2570 return controller();
2577 } 2571 }
2578 2572
2579 WebUI* TabContents::CreateWebUIForRenderManager(const GURL& url) { 2573 WebUI* TabContents::CreateWebUIForRenderManager(const GURL& url) {
2580 return content::WebUIFactory::Get()->CreateWebUIForURL(this, url); 2574 return WebUIFactory::CreateWebUIForURL(this, url);
2581 } 2575 }
2582 2576
2583 NavigationEntry* 2577 NavigationEntry*
2584 TabContents::GetLastCommittedNavigationEntryForRenderManager() { 2578 TabContents::GetLastCommittedNavigationEntryForRenderManager() {
2585 return controller_.GetLastCommittedEntry(); 2579 return controller_.GetLastCommittedEntry();
2586 } 2580 }
2587 2581
2588 bool TabContents::CreateRenderViewForRenderManager( 2582 bool TabContents::CreateRenderViewForRenderManager(
2589 RenderViewHost* render_view_host) { 2583 RenderViewHost* render_view_host) {
2590 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host); 2584 RenderWidgetHostView* rwh_view = view_->CreateViewForWidget(render_view_host);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 2751
2758 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 2752 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) {
2759 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); 2753 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh);
2760 rwh_view->SetSize(view()->GetContainerSize()); 2754 rwh_view->SetSize(view()->GetContainerSize());
2761 } 2755 }
2762 2756
2763 void TabContents::OnOnlineStateChanged(bool online) { 2757 void TabContents::OnOnlineStateChanged(bool online) {
2764 render_view_host()->Send(new ViewMsg_NetworkStateChanged( 2758 render_view_host()->Send(new ViewMsg_NetworkStateChanged(
2765 render_view_host()->routing_id(), online)); 2759 render_view_host()->routing_id(), online));
2766 } 2760 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/tab_contents.h ('k') | content/browser/tab_contents/tab_contents_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698