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

Unified Diff: chrome/browser/ui/tab_contents/tab_contents_wrapper.cc

Issue 10528002: TabContentsWrapper -> TabContents, part 1. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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
Index: chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
deleted file mode 100644
index 923b190fd64ee8dcaf51646e96010b6a241c2fbd..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
-
-#include "base/command_line.h"
-#include "base/lazy_instance.h"
-#include "chrome/browser/autocomplete_history_manager.h"
-#include "chrome/browser/autofill/autofill_external_delegate.h"
-#include "chrome/browser/autofill/autofill_manager.h"
-#include "chrome/browser/automation/automation_tab_helper.h"
-#include "chrome/browser/content_settings/tab_specific_content_settings.h"
-#include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
-#include "chrome/browser/extensions/extension_tab_helper.h"
-#include "chrome/browser/external_protocol/external_protocol_observer.h"
-#include "chrome/browser/favicon/favicon_tab_helper.h"
-#include "chrome/browser/history/history_tab_helper.h"
-#include "chrome/browser/infobars/infobar_tab_helper.h"
-#include "chrome/browser/omnibox_search_hint.h"
-#include "chrome/browser/password_manager/password_manager.h"
-#include "chrome/browser/password_manager/password_manager_delegate_impl.h"
-#include "chrome/browser/plugin_observer.h"
-#include "chrome/browser/prerender/prerender_tab_helper.h"
-#include "chrome/browser/printing/print_preview_message_handler.h"
-#include "chrome/browser/printing/print_view_manager.h"
-#include "chrome/browser/safe_browsing/safe_browsing_tab_observer.h"
-#include "chrome/browser/sessions/restore_tab_helper.h"
-#include "chrome/browser/tab_contents/tab_contents_ssl_helper.h"
-#include "chrome/browser/tab_contents/thumbnail_generator.h"
-#include "chrome/browser/translate/translate_tab_helper.h"
-#include "chrome/browser/ui/alternate_error_tab_observer.h"
-#include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h"
-#include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
-#include "chrome/browser/ui/constrained_window_tab_helper.h"
-#include "chrome/browser/ui/find_bar/find_tab_helper.h"
-#include "chrome/browser/ui/hung_plugin_tab_helper.h"
-#include "chrome/browser/ui/intents/web_intent_picker_controller.h"
-#include "chrome/browser/ui/pdf/pdf_tab_observer.h"
-#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
-#include "chrome/browser/ui/sad_tab_helper.h"
-#include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
-#include "chrome/browser/ui/snapshot_tab_helper.h"
-#include "chrome/browser/ui/sync/one_click_signin_helper.h"
-#include "chrome/browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.h"
-#include "chrome/browser/ui/tab_contents/core_tab_helper.h"
-#include "chrome/browser/view_type_utils.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/thumbnail_support.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/web_contents.h"
-
-#if defined(OS_WIN)
-#include "base/win/metro.h"
-#endif
-
-using content::WebContents;
-
-namespace {
-
-static base::LazyInstance<base::PropertyAccessor<TabContentsWrapper*> >
- g_tab_contents_wrapper_property_accessor = LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
-////////////////////////////////////////////////////////////////////////////////
-// TabContentsWrapper, public:
-
-TabContentsWrapper::TabContentsWrapper(WebContents* contents)
- : content::WebContentsObserver(contents),
- in_destructor_(false),
- web_contents_(contents) {
- DCHECK(contents);
- DCHECK(!GetCurrentWrapperForContents(contents));
-
- chrome::SetViewType(contents, chrome::VIEW_TYPE_TAB_CONTENTS);
-
- // Stash this in the property bag so it can be retrieved without having to
- // go to a Browser.
- property_accessor()->SetProperty(contents->GetPropertyBag(), this);
-
- // Create the tab helpers.
- autocomplete_history_manager_.reset(new AutocompleteHistoryManager(contents));
- autofill_manager_ = new AutofillManager(this);
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kExternalAutofillPopup)) {
- autofill_external_delegate_.reset(
- AutofillExternalDelegate::Create(this, autofill_manager_.get()));
- autofill_manager_->SetExternalDelegate(autofill_external_delegate_.get());
- autocomplete_history_manager_->SetExternalDelegate(
- autofill_external_delegate_.get());
- }
-#if defined(ENABLE_AUTOMATION)
- automation_tab_helper_.reset(new AutomationTabHelper(contents));
-#endif
- blocked_content_tab_helper_.reset(new BlockedContentTabHelper(this));
- bookmark_tab_helper_.reset(new BookmarkTabHelper(this));
- constrained_window_tab_helper_.reset(new ConstrainedWindowTabHelper(this));
- core_tab_helper_.reset(new CoreTabHelper(contents));
- extension_tab_helper_.reset(new ExtensionTabHelper(this));
- favicon_tab_helper_.reset(new FaviconTabHelper(contents));
- find_tab_helper_.reset(new FindTabHelper(contents));
- history_tab_helper_.reset(new HistoryTabHelper(contents));
- hung_plugin_tab_helper_.reset(new HungPluginTabHelper(contents));
- infobar_tab_helper_.reset(new InfoBarTabHelper(contents));
- password_manager_delegate_.reset(new PasswordManagerDelegateImpl(this));
- password_manager_.reset(
- new PasswordManager(contents, password_manager_delegate_.get()));
- prefs_tab_helper_.reset(new PrefsTabHelper(contents));
- prerender_tab_helper_.reset(new prerender::PrerenderTabHelper(this));
- restore_tab_helper_.reset(new RestoreTabHelper(contents));
- search_engine_tab_helper_.reset(new SearchEngineTabHelper(contents));
- snapshot_tab_helper_.reset(new SnapshotTabHelper(contents));
- ssl_helper_.reset(new TabContentsSSLHelper(this));
- synced_tab_delegate_.reset(new TabContentsWrapperSyncedTabDelegate(this));
- content_settings_.reset(new TabSpecificContentSettings(contents));
- translate_tab_helper_.reset(new TranslateTabHelper(contents));
- web_intent_picker_controller_.reset(new WebIntentPickerController(this));
-
-#if !defined(OS_ANDROID)
- print_view_manager_.reset(new printing::PrintViewManager(this));
- sad_tab_helper_.reset(new SadTabHelper(contents));
-#endif
-
- // Create the per-tab observers.
- alternate_error_page_tab_observer_.reset(
- new AlternateErrorPageTabObserver(contents, profile()));
- webnavigation_observer_.reset(
- new extensions::WebNavigationTabObserver(contents));
- external_protocol_observer_.reset(new ExternalProtocolObserver(contents));
- pdf_tab_observer_.reset(new PDFTabObserver(this));
- safe_browsing_tab_observer_.reset(
- new safe_browsing::SafeBrowsingTabObserver(this));
-
-#if defined(OS_WIN)
- // Metro mode Chrome on Windows does not support plugins. Avoid registering
- // the PluginObserver so we don't popup plugin-related infobars.
- if (!base::win::GetMetroModule())
- plugin_observer_.reset(new PluginObserver(this));
-#else
- plugin_observer_.reset(new PluginObserver(this));
-#endif
-
-#if !defined(OS_ANDROID)
- if (OmniboxSearchHint::IsEnabled(profile()))
- omnibox_search_hint_.reset(new OmniboxSearchHint(this));
- print_preview_.reset(new printing::PrintPreviewMessageHandler(contents));
-#endif
-
- // Start the in-browser thumbnailing if the feature is enabled.
- if (ShouldEnableInBrowserThumbnailing()) {
- thumbnail_generator_.reset(new ThumbnailGenerator);
- thumbnail_generator_->StartThumbnailing(web_contents_.get());
- }
-
- // If this is not an incognito window, setup to handle one-click login.
- // We don't want to check that the profile is already connected at this time
- // because the connected state may change while this tab is open. Having a
- // one-click signin helper attached does not cause problems if the profile
- // happens to be already connected.
-#if defined(ENABLE_ONE_CLICK_SIGNIN)
- if (OneClickSigninHelper::CanOffer(contents, false))
- one_click_signin_helper_.reset(new OneClickSigninHelper(contents));
-#endif
-}
-
-TabContentsWrapper::~TabContentsWrapper() {
- in_destructor_ = true;
-
- // Need to reset |thumbnail_generator_| here before |web_contents_| is
- // deleted because destructing |web_contents_| can end up causing the
- // thumbnailer to generate a thumbnail. Since TabContentsWrapper can be
- // destructed during shutdown, trying to generate a thumbnail by sending an
- // IPC message to the GPU process is not safe. Sending
- // chrome::NOTIFICATION_TAB_CONTENTS_DESTROYED can also cause the thumbnailer
- // to generate a thumbnail, so this must be placed before sending the
- // notification.
- thumbnail_generator_.reset();
-
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_TAB_CONTENTS_DESTROYED,
- content::Source<TabContentsWrapper>(this),
- content::NotificationService::NoDetails());
-
- // Need to tear down infobars before the WebContents goes away.
- // TODO(avi): Can we get this handled by the tab helper itself?
- infobar_tab_helper_.reset();
-}
-
-base::PropertyAccessor<TabContentsWrapper*>*
- TabContentsWrapper::property_accessor() {
- return g_tab_contents_wrapper_property_accessor.Pointer();
-}
-
-TabContentsWrapper* TabContentsWrapper::Clone() {
- WebContents* new_contents = web_contents()->Clone();
- TabContentsWrapper* new_wrapper = new TabContentsWrapper(new_contents);
-
- // TODO(avi): Can we generalize this so that knowledge of the functionings of
- // the tab helpers isn't required here?
- new_wrapper->extension_tab_helper()->CopyStateFrom(
- *extension_tab_helper_.get());
- return new_wrapper;
-}
-
-// static
-TabContentsWrapper* TabContentsWrapper::GetCurrentWrapperForContents(
- WebContents* contents) {
- TabContentsWrapper** wrapper =
- property_accessor()->GetProperty(contents->GetPropertyBag());
-
- return wrapper ? *wrapper : NULL;
-}
-
-// static
-const TabContentsWrapper* TabContentsWrapper::GetCurrentWrapperForContents(
- const WebContents* contents) {
- TabContentsWrapper* const* wrapper =
- property_accessor()->GetProperty(contents->GetPropertyBag());
-
- return wrapper ? *wrapper : NULL;
-}
-
-WebContents* TabContentsWrapper::web_contents() const {
- return web_contents_.get();
-}
-
-Profile* TabContentsWrapper::profile() const {
- return Profile::FromBrowserContext(web_contents()->GetBrowserContext());
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// WebContentsObserver overrides
-
-void TabContentsWrapper::WebContentsDestroyed(WebContents* tab) {
- // Destruction of the WebContents should only be done by us from our
- // destructor. Otherwise it's very likely we (or one of the helpers we own)
- // will attempt to access the WebContents and we'll crash.
- DCHECK(in_destructor_);
-}
« no previous file with comments | « chrome/browser/ui/tab_contents/tab_contents_wrapper.h ('k') | chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698