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

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

Issue 8342048: Make NotificationService an interface in the content namespace, and switch callers to use it. Mov... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 23 matching lines...) Expand all
34 #include "content/browser/tab_contents/provisional_load_details.h" 34 #include "content/browser/tab_contents/provisional_load_details.h"
35 #include "content/browser/tab_contents/tab_contents_delegate.h" 35 #include "content/browser/tab_contents/tab_contents_delegate.h"
36 #include "content/browser/tab_contents/tab_contents_observer.h" 36 #include "content/browser/tab_contents/tab_contents_observer.h"
37 #include "content/browser/tab_contents/tab_contents_view.h" 37 #include "content/browser/tab_contents/tab_contents_view.h"
38 #include "content/browser/tab_contents/title_updated_details.h" 38 #include "content/browser/tab_contents/title_updated_details.h"
39 #include "content/browser/user_metrics.h" 39 #include "content/browser/user_metrics.h"
40 #include "content/browser/webui/web_ui_factory.h" 40 #include "content/browser/webui/web_ui_factory.h"
41 #include "content/common/content_constants.h" 41 #include "content/common/content_constants.h"
42 #include "content/common/content_restriction.h" 42 #include "content/common/content_restriction.h"
43 #include "content/common/intents_messages.h" 43 #include "content/common/intents_messages.h"
44 #include "content/common/notification_service.h" 44 #include "content/public/browser/notification_service.h"
45 #include "content/common/view_messages.h" 45 #include "content/common/view_messages.h"
46 #include "content/public/browser/content_browser_client.h" 46 #include "content/public/browser/content_browser_client.h"
47 #include "content/public/browser/navigation_types.h" 47 #include "content/public/browser/navigation_types.h"
48 #include "content/public/common/bindings_policy.h" 48 #include "content/public/common/bindings_policy.h"
49 #include "content/public/common/url_constants.h" 49 #include "content/public/common/url_constants.h"
50 #include "content/public/common/view_types.h" 50 #include "content/public/common/view_types.h"
51 #include "net/base/net_util.h" 51 #include "net/base/net_util.h"
52 #include "net/url_request/url_request_context_getter.h" 52 #include "net/url_request/url_request_context_getter.h"
53 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 53 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
54 #include "ui/gfx/codec/png_codec.h" 54 #include "ui/gfx/codec/png_codec.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 TabContents::~TabContents() { 215 TabContents::~TabContents() {
216 is_being_destroyed_ = true; 216 is_being_destroyed_ = true;
217 217
218 // Clear out any JavaScript state. 218 // Clear out any JavaScript state.
219 if (dialog_creator_) 219 if (dialog_creator_)
220 dialog_creator_->ResetJavaScriptState(this); 220 dialog_creator_->ResetJavaScriptState(this);
221 221
222 NotifyDisconnected(); 222 NotifyDisconnected();
223 223
224 // Notify any observer that have a reference on this tab contents. 224 // Notify any observer that have a reference on this tab contents.
225 NotificationService::current()->Notify( 225 content::NotificationService::current()->Notify(
226 content::NOTIFICATION_TAB_CONTENTS_DESTROYED, 226 content::NOTIFICATION_TAB_CONTENTS_DESTROYED,
227 content::Source<TabContents>(this), 227 content::Source<TabContents>(this),
228 NotificationService::NoDetails()); 228 content::NotificationService::NoDetails());
229 229
230 // TODO(brettw) this should be moved to the view. 230 // TODO(brettw) this should be moved to the view.
231 #if defined(OS_WIN) 231 #if defined(OS_WIN)
232 // If we still have a window handle, destroy it. GetNativeView can return 232 // If we still have a window handle, destroy it. GetNativeView can return
233 // NULL if this contents was part of a window that closed. 233 // NULL if this contents was part of a window that closed.
234 if (GetNativeView()) { 234 if (GetNativeView()) {
235 RenderViewHost* host = render_view_host(); 235 RenderViewHost* host = render_view_host();
236 if (host && host->view()) 236 if (host && host->view())
237 host->view()->WillWmDestroy(); 237 host->view()->WillWmDestroy();
238 } 238 }
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 // |render_view_host()| can be NULL if the user middle clicks a link to open 444 // |render_view_host()| can be NULL if the user middle clicks a link to open
445 // a tab in then background, then closes the tab before selecting it. This 445 // a tab in then background, then closes the tab before selecting it. This
446 // is because closing the tab calls TabContents::Destroy(), which removes 446 // is because closing the tab calls TabContents::Destroy(), which removes
447 // the |render_view_host()|; then when we actually destroy the window, 447 // the |render_view_host()|; then when we actually destroy the window,
448 // OnWindowPosChanged() notices and calls HideContents() (which calls us). 448 // OnWindowPosChanged() notices and calls HideContents() (which calls us).
449 RenderWidgetHostView* rwhv = GetRenderWidgetHostView(); 449 RenderWidgetHostView* rwhv = GetRenderWidgetHostView();
450 if (rwhv) 450 if (rwhv)
451 rwhv->WasHidden(); 451 rwhv->WasHidden();
452 } 452 }
453 453
454 NotificationService::current()->Notify( 454 content::NotificationService::current()->Notify(
455 content::NOTIFICATION_TAB_CONTENTS_HIDDEN, 455 content::NOTIFICATION_TAB_CONTENTS_HIDDEN,
456 content::Source<TabContents>(this), 456 content::Source<TabContents>(this),
457 NotificationService::NoDetails()); 457 content::NotificationService::NoDetails());
458 } 458 }
459 459
460 void TabContents::Activate() { 460 void TabContents::Activate() {
461 if (delegate_) 461 if (delegate_)
462 delegate_->ActivateContents(this); 462 delegate_->ActivateContents(this);
463 } 463 }
464 464
465 void TabContents::Deactivate() { 465 void TabContents::Deactivate() {
466 if (delegate_) 466 if (delegate_)
467 delegate_->DeactivateContents(this); 467 delegate_->DeactivateContents(this);
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 // Send out a notification that we failed a provisional load with an error. 976 // Send out a notification that we failed a provisional load with an error.
977 ProvisionalLoadDetails details( 977 ProvisionalLoadDetails details(
978 params.is_main_frame, 978 params.is_main_frame,
979 controller_.IsURLInPageNavigation(validated_url), 979 controller_.IsURLInPageNavigation(validated_url),
980 validated_url, 980 validated_url,
981 std::string(), 981 std::string(),
982 false, 982 false,
983 params.frame_id); 983 params.frame_id);
984 details.set_error_code(params.error_code); 984 details.set_error_code(params.error_code);
985 985
986 NotificationService::current()->Notify( 986 content::NotificationService::current()->Notify(
987 content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR, 987 content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR,
988 content::Source<NavigationController>(&controller_), 988 content::Source<NavigationController>(&controller_),
989 content::Details<ProvisionalLoadDetails>(&details)); 989 content::Details<ProvisionalLoadDetails>(&details));
990 990
991 FOR_EACH_OBSERVER(TabContentsObserver, 991 FOR_EACH_OBSERVER(TabContentsObserver,
992 observers_, 992 observers_,
993 DidFailProvisionalLoad(params.frame_id, 993 DidFailProvisionalLoad(params.frame_id,
994 params.is_main_frame, 994 params.is_main_frame,
995 validated_url, 995 validated_url,
996 params.error_code, 996 params.error_code,
(...skipping 13 matching lines...) Expand all
1010 net::CertStatus cert_status = 0; 1010 net::CertStatus cert_status = 0;
1011 int security_bits = -1; 1011 int security_bits = -1;
1012 int connection_status = 0; 1012 int connection_status = 0;
1013 SSLManager::DeserializeSecurityInfo(security_info, 1013 SSLManager::DeserializeSecurityInfo(security_info,
1014 &cert_id, &cert_status, 1014 &cert_id, &cert_status,
1015 &security_bits, 1015 &security_bits,
1016 &connection_status); 1016 &connection_status);
1017 LoadFromMemoryCacheDetails details(url, GetRenderProcessHost()->id(), 1017 LoadFromMemoryCacheDetails details(url, GetRenderProcessHost()->id(),
1018 cert_id, cert_status); 1018 cert_id, cert_status);
1019 1019
1020 NotificationService::current()->Notify( 1020 content::NotificationService::current()->Notify(
1021 content::NOTIFICATION_LOAD_FROM_MEMORY_CACHE, 1021 content::NOTIFICATION_LOAD_FROM_MEMORY_CACHE,
1022 content::Source<NavigationController>(&controller_), 1022 content::Source<NavigationController>(&controller_),
1023 content::Details<LoadFromMemoryCacheDetails>(&details)); 1023 content::Details<LoadFromMemoryCacheDetails>(&details));
1024 } 1024 }
1025 1025
1026 void TabContents::OnDidDisplayInsecureContent() { 1026 void TabContents::OnDidDisplayInsecureContent() {
1027 UserMetrics::RecordAction(UserMetricsAction("SSL.DisplayedInsecureContent")); 1027 UserMetrics::RecordAction(UserMetricsAction("SSL.DisplayedInsecureContent"));
1028 displayed_insecure_content_ = true; 1028 displayed_insecure_content_ = true;
1029 SSLManager::NotifySSLInternalStateChanged(&controller()); 1029 SSLManager::NotifySSLInternalStateChanged(&controller());
1030 } 1030 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 1083
1084 void TabContents::OnUpdateZoomLimits(int minimum_percent, 1084 void TabContents::OnUpdateZoomLimits(int minimum_percent,
1085 int maximum_percent, 1085 int maximum_percent,
1086 bool remember) { 1086 bool remember) {
1087 minimum_zoom_percent_ = minimum_percent; 1087 minimum_zoom_percent_ = minimum_percent;
1088 maximum_zoom_percent_ = maximum_percent; 1088 maximum_zoom_percent_ = maximum_percent;
1089 temporary_zoom_settings_ = !remember; 1089 temporary_zoom_settings_ = !remember;
1090 } 1090 }
1091 1091
1092 void TabContents::OnFocusedNodeChanged(bool is_editable_node) { 1092 void TabContents::OnFocusedNodeChanged(bool is_editable_node) {
1093 NotificationService::current()->Notify( 1093 content::NotificationService::current()->Notify(
1094 content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE, 1094 content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
1095 content::Source<TabContents>(this), 1095 content::Source<TabContents>(this),
1096 content::Details<const bool>(&is_editable_node)); 1096 content::Details<const bool>(&is_editable_node));
1097 } 1097 }
1098 1098
1099 void TabContents::OnEnumerateDirectory(int request_id, 1099 void TabContents::OnEnumerateDirectory(int request_id,
1100 const FilePath& path) { 1100 const FilePath& path) {
1101 delegate()->EnumerateDirectory(this, request_id, path); 1101 delegate()->EnumerateDirectory(this, request_id, path);
1102 } 1102 }
1103 1103
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 1170
1171 is_loading_ = is_loading; 1171 is_loading_ = is_loading;
1172 waiting_for_response_ = is_loading; 1172 waiting_for_response_ = is_loading;
1173 1173
1174 if (delegate_) 1174 if (delegate_)
1175 delegate_->LoadingStateChanged(this); 1175 delegate_->LoadingStateChanged(this);
1176 NotifyNavigationStateChanged(INVALIDATE_LOAD); 1176 NotifyNavigationStateChanged(INVALIDATE_LOAD);
1177 1177
1178 int type = is_loading ? content::NOTIFICATION_LOAD_START : 1178 int type = is_loading ? content::NOTIFICATION_LOAD_START :
1179 content::NOTIFICATION_LOAD_STOP; 1179 content::NOTIFICATION_LOAD_STOP;
1180 content::NotificationDetails det = NotificationService::NoDetails(); 1180 content::NotificationDetails det = content::NotificationService::NoDetails();
1181 if (details) 1181 if (details)
1182 det = content::Details<LoadNotificationDetails>(details); 1182 det = content::Details<LoadNotificationDetails>(details);
1183 NotificationService::current()->Notify(type, 1183 content::NotificationService::current()->Notify(type,
1184 content::Source<NavigationController>(&controller_), 1184 content::Source<NavigationController>(&controller_),
1185 det); 1185 det);
1186 } 1186 }
1187 1187
1188 WebUI* TabContents::GetWebUIForCurrentState() { 1188 WebUI* TabContents::GetWebUIForCurrentState() {
1189 // When there is a pending navigation entry, we want to use the pending WebUI 1189 // When there is a pending navigation entry, we want to use the pending WebUI
1190 // that goes along with it to control the basic flags. For example, we want to 1190 // that goes along with it to control the basic flags. For example, we want to
1191 // show the pending URL in the URL bar, so we want the display_url flag to 1191 // show the pending URL in the URL bar, so we want the display_url flag to
1192 // be from the pending entry. 1192 // be from the pending entry.
1193 // 1193 //
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 return false; // Nothing changed, don't bother. 1341 return false; // Nothing changed, don't bother.
1342 1342
1343 page_title_when_no_navigation_entry_ = final_title; 1343 page_title_when_no_navigation_entry_ = final_title;
1344 } 1344 }
1345 1345
1346 // Lastly, set the title for the view. 1346 // Lastly, set the title for the view.
1347 view_->SetPageTitle(final_title); 1347 view_->SetPageTitle(final_title);
1348 1348
1349 TitleUpdatedDetails details(entry, explicit_set); 1349 TitleUpdatedDetails details(entry, explicit_set);
1350 1350
1351 NotificationService::current()->Notify( 1351 content::NotificationService::current()->Notify(
1352 content::NOTIFICATION_TAB_CONTENTS_TITLE_UPDATED, 1352 content::NOTIFICATION_TAB_CONTENTS_TITLE_UPDATED,
1353 content::Source<TabContents>(this), 1353 content::Source<TabContents>(this),
1354 content::Details<TitleUpdatedDetails>(&details)); 1354 content::Details<TitleUpdatedDetails>(&details));
1355 1355
1356 return true; 1356 return true;
1357 } 1357 }
1358 1358
1359 void TabContents::NotifySwapped() { 1359 void TabContents::NotifySwapped() {
1360 // After sending out a swap notification, we need to send a disconnect 1360 // After sending out a swap notification, we need to send a disconnect
1361 // notification so that clients that pick up a pointer to |this| can NULL the 1361 // notification so that clients that pick up a pointer to |this| can NULL the
1362 // pointer. See Bug 1230284. 1362 // pointer. See Bug 1230284.
1363 notify_disconnection_ = true; 1363 notify_disconnection_ = true;
1364 NotificationService::current()->Notify( 1364 content::NotificationService::current()->Notify(
1365 content::NOTIFICATION_TAB_CONTENTS_SWAPPED, 1365 content::NOTIFICATION_TAB_CONTENTS_SWAPPED,
1366 content::Source<TabContents>(this), 1366 content::Source<TabContents>(this),
1367 NotificationService::NoDetails()); 1367 content::NotificationService::NoDetails());
1368 } 1368 }
1369 1369
1370 void TabContents::NotifyConnected() { 1370 void TabContents::NotifyConnected() {
1371 notify_disconnection_ = true; 1371 notify_disconnection_ = true;
1372 NotificationService::current()->Notify( 1372 content::NotificationService::current()->Notify(
1373 content::NOTIFICATION_TAB_CONTENTS_CONNECTED, 1373 content::NOTIFICATION_TAB_CONTENTS_CONNECTED,
1374 content::Source<TabContents>(this), 1374 content::Source<TabContents>(this),
1375 NotificationService::NoDetails()); 1375 content::NotificationService::NoDetails());
1376 } 1376 }
1377 1377
1378 void TabContents::NotifyDisconnected() { 1378 void TabContents::NotifyDisconnected() {
1379 if (!notify_disconnection_) 1379 if (!notify_disconnection_)
1380 return; 1380 return;
1381 1381
1382 notify_disconnection_ = false; 1382 notify_disconnection_ = false;
1383 NotificationService::current()->Notify( 1383 content::NotificationService::current()->Notify(
1384 content::NOTIFICATION_TAB_CONTENTS_DISCONNECTED, 1384 content::NOTIFICATION_TAB_CONTENTS_DISCONNECTED,
1385 content::Source<TabContents>(this), 1385 content::Source<TabContents>(this),
1386 NotificationService::NoDetails()); 1386 content::NotificationService::NoDetails());
1387 } 1387 }
1388 1388
1389 RenderViewHostDelegate::View* TabContents::GetViewDelegate() { 1389 RenderViewHostDelegate::View* TabContents::GetViewDelegate() {
1390 return view_.get(); 1390 return view_.get();
1391 } 1391 }
1392 1392
1393 RenderViewHostDelegate::RendererManagement* 1393 RenderViewHostDelegate::RendererManagement*
1394 TabContents::GetRendererManagementDelegate() { 1394 TabContents::GetRendererManagementDelegate() {
1395 return &render_manager_; 1395 return &render_manager_;
1396 } 1396 }
1397 1397
1398 RendererPreferences TabContents::GetRendererPrefs( 1398 RendererPreferences TabContents::GetRendererPrefs(
1399 content::BrowserContext* browser_context) const { 1399 content::BrowserContext* browser_context) const {
1400 return renderer_preferences_; 1400 return renderer_preferences_;
1401 } 1401 }
1402 1402
1403 TabContents* TabContents::GetAsTabContents() { 1403 TabContents* TabContents::GetAsTabContents() {
1404 return this; 1404 return this;
1405 } 1405 }
1406 1406
1407 content::ViewType TabContents::GetRenderViewType() const { 1407 content::ViewType TabContents::GetRenderViewType() const {
1408 return content::VIEW_TYPE_TAB_CONTENTS; 1408 return content::VIEW_TYPE_TAB_CONTENTS;
1409 } 1409 }
1410 1410
1411 void TabContents::RenderViewCreated(RenderViewHost* render_view_host) { 1411 void TabContents::RenderViewCreated(RenderViewHost* render_view_host) {
1412 NotificationService::current()->Notify( 1412 content::NotificationService::current()->Notify(
1413 content::NOTIFICATION_RENDER_VIEW_HOST_CREATED_FOR_TAB, 1413 content::NOTIFICATION_RENDER_VIEW_HOST_CREATED_FOR_TAB,
1414 content::Source<TabContents>(this), 1414 content::Source<TabContents>(this),
1415 content::Details<RenderViewHost>(render_view_host)); 1415 content::Details<RenderViewHost>(render_view_host));
1416 NavigationEntry* entry = controller_.GetActiveEntry(); 1416 NavigationEntry* entry = controller_.GetActiveEntry();
1417 if (!entry) 1417 if (!entry)
1418 return; 1418 return;
1419 1419
1420 // When we're creating views, we're still doing initial setup, so we always 1420 // When we're creating views, we're still doing initial setup, so we always
1421 // use the pending Web UI rather than any possibly existing committed one. 1421 // use the pending Web UI rather than any possibly existing committed one.
1422 if (render_manager_.pending_web_ui()) 1422 if (render_manager_.pending_web_ui())
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1671 } 1671 }
1672 1672
1673 void TabContents::DidChangeLoadProgress(double progress) { 1673 void TabContents::DidChangeLoadProgress(double progress) {
1674 if (delegate()) 1674 if (delegate())
1675 delegate()->LoadProgressChanged(progress); 1675 delegate()->LoadProgressChanged(progress);
1676 } 1676 }
1677 1677
1678 void TabContents::DocumentOnLoadCompletedInMainFrame( 1678 void TabContents::DocumentOnLoadCompletedInMainFrame(
1679 RenderViewHost* render_view_host, 1679 RenderViewHost* render_view_host,
1680 int32 page_id) { 1680 int32 page_id) {
1681 NotificationService::current()->Notify( 1681 content::NotificationService::current()->Notify(
1682 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 1682 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
1683 content::Source<TabContents>(this), 1683 content::Source<TabContents>(this),
1684 content::Details<int>(&page_id)); 1684 content::Details<int>(&page_id));
1685 } 1685 }
1686 1686
1687 void TabContents::RequestOpenURL(const GURL& url, 1687 void TabContents::RequestOpenURL(const GURL& url,
1688 const GURL& referrer, 1688 const GURL& referrer,
1689 WindowOpenDisposition disposition, 1689 WindowOpenDisposition disposition,
1690 int64 source_frame_id) { 1690 int64 source_frame_id) {
1691 TabContents* new_contents = NULL; 1691 TabContents* new_contents = NULL;
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 1994 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) {
1995 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); 1995 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh);
1996 rwh_view->SetSize(view()->GetContainerSize()); 1996 rwh_view->SetSize(view()->GetContainerSize());
1997 } 1997 }
1998 1998
1999 bool TabContents::GotResponseToLockMouseRequest(bool allowed) { 1999 bool TabContents::GotResponseToLockMouseRequest(bool allowed) {
2000 return render_view_host() ? 2000 return render_view_host() ?
2001 render_view_host()->GotResponseToLockMouseRequest(allowed) : false; 2001 render_view_host()->GotResponseToLockMouseRequest(allowed) : false;
2002 } 2002 }
2003 2003
OLDNEW
« no previous file with comments | « content/browser/tab_contents/render_view_host_manager.cc ('k') | content/browser/user_metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698