diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-08 21:31:12 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-08 21:31:12 +0000 |
commit | e09f079d2a247ae24f52075bc8bcc446b2838ddf (patch) | |
tree | ec6225f1a76596d40b315897a2e804fff579ab4e /chrome/browser/ui | |
parent | edbe8a4d27175be21a21cba4f77aeeb45e627db1 (diff) | |
download | chromium_src-e09f079d2a247ae24f52075bc8bcc446b2838ddf.zip chromium_src-e09f079d2a247ae24f52075bc8bcc446b2838ddf.tar.gz chromium_src-e09f079d2a247ae24f52075bc8bcc446b2838ddf.tar.bz2 |
Remove frontend code that allows for dynamic profile setting, and read the profile off the browser where possible. This matches common practice and various invariants that expect profiles to be constant for the life of the browser.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/7574021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95889 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
36 files changed, 276 insertions, 468 deletions
diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h index c46133d..3e585ad 100644 --- a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h +++ b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h @@ -135,8 +135,9 @@ class OmniboxPopupViewMac : public AutocompletePopupView, // Returns whether or not to show the instant opt-in prompt. bool ShouldShowInstantOptIn(); - scoped_ptr<AutocompletePopupModel> model_; OmniboxViewMac* omnibox_view_; + scoped_ptr<AutocompletePopupModel> model_; + Profile* profile_; NSTextField* field_; // owned by tab controller // Child window containing a matrix which implements the popup. diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm index 984f66c..f73d25c 100644 --- a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm +++ b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.mm @@ -284,8 +284,9 @@ OmniboxPopupViewMac::OmniboxPopupViewMac(OmniboxViewMac* omnibox_view, AutocompleteEditModel* edit_model, Profile* profile, NSTextField* field) - : model_(new AutocompletePopupModel(this, edit_model, profile)), - omnibox_view_(omnibox_view), + : omnibox_view_(omnibox_view), + model_(new AutocompletePopupModel(this, edit_model)), + profile_(profile), field_(field), popup_(nil), opt_in_controller_(nil), @@ -549,12 +550,11 @@ void OmniboxPopupViewMac::OpenURLForRow(int row, bool force_background) { } void OmniboxPopupViewMac::UserPressedOptIn(bool opt_in) { - PromoCounter* counter = model_->profile()->GetInstantPromoCounter(); + PromoCounter* counter = profile_->GetInstantPromoCounter(); DCHECK(counter); counter->Hide(); if (opt_in) { - browser::ShowInstantConfirmDialogIfNecessary([field_ window], - model_->profile()); + browser::ShowInstantConfirmDialogIfNecessary([field_ window], profile_); } // This call will remove and delete |opt_in_controller_|. @@ -562,7 +562,7 @@ void OmniboxPopupViewMac::UserPressedOptIn(bool opt_in) { } bool OmniboxPopupViewMac::ShouldShowInstantOptIn() { - PromoCounter* counter = model_->profile()->GetInstantPromoCounter(); + PromoCounter* counter = profile_->GetInstantPromoCounter(); return (counter && counter->ShouldShow(base::Time::Now())); } diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc index b53e9c5..98639f8 100644 --- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc +++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc @@ -121,10 +121,9 @@ void RecordAppLaunch(Profile* profile, const GURL& url) { const int BookmarkBarGtk::kBookmarkBarNTPHeight = 57; BookmarkBarGtk::BookmarkBarGtk(BrowserWindowGtk* window, - Profile* profile, Browser* browser, + Browser* browser, TabstripOriginProvider* tabstrip_origin_provider) - : profile_(NULL), - page_navigator_(NULL), + : page_navigator_(NULL), browser_(browser), window_(window), tabstrip_origin_provider_(tabstrip_origin_provider), @@ -134,7 +133,7 @@ BookmarkBarGtk::BookmarkBarGtk(BrowserWindowGtk* window, dragged_node_(NULL), drag_icon_(NULL), toolbar_drop_item_(NULL), - theme_service_(GtkThemeService::GetFrom(profile)), + theme_service_(GtkThemeService::GetFrom(browser->profile())), show_instructions_(true), menu_bar_helper_(this), slide_animation_(this), @@ -142,6 +141,7 @@ BookmarkBarGtk::BookmarkBarGtk(BrowserWindowGtk* window, throbbing_widget_(NULL), method_factory_(this), bookmark_bar_state_(BookmarkBar::DETACHED) { + Profile* profile = browser->profile(); if (profile->GetProfileSyncService()) { // Obtain a pointer to the profile sync service and add our instance as an // observer. @@ -149,8 +149,7 @@ BookmarkBarGtk::BookmarkBarGtk(BrowserWindowGtk* window, sync_service_->AddObserver(this); } - Init(profile); - SetProfile(profile); + Init(); // Force an update by simulating being in the wrong state. // BrowserWindowGtk sets our true state after we're created. SetBookmarkBarState(BookmarkBar::SHOW, @@ -160,44 +159,21 @@ BookmarkBarGtk::BookmarkBarGtk(BrowserWindowGtk* window, Source<ThemeService>(theme_service_)); edit_bookmarks_enabled_.Init(prefs::kEditBookmarksEnabled, - profile_->GetPrefs(), this); + profile->GetPrefs(), this); OnEditBookmarksEnabledChanged(); } BookmarkBarGtk::~BookmarkBarGtk() { - RemoveAllBookmarkButtons(); + RemoveAllButtons(); bookmark_toolbar_.Destroy(); event_box_.Destroy(); } -void BookmarkBarGtk::SetProfile(Profile* profile) { - DCHECK(profile); - if (profile_ == profile) - return; - - RemoveAllBookmarkButtons(); - - profile_ = profile; - - if (model_) - model_->RemoveObserver(this); - - // TODO(erg): Handle extensions - - model_ = profile_->GetBookmarkModel(); - model_->AddObserver(this); - if (model_->IsLoaded()) - Loaded(model_, false); - - // else case: we'll receive notification back from the BookmarkModel when done - // loading, then we'll populate the bar. -} - void BookmarkBarGtk::SetPageNavigator(PageNavigator* navigator) { page_navigator_ = navigator; } -void BookmarkBarGtk::Init(Profile* profile) { +void BookmarkBarGtk::Init() { event_box_.Own(gtk_event_box_new()); g_signal_connect(event_box_.get(), "destroy", G_CALLBACK(&OnEventBoxDestroyThunk), this); @@ -221,6 +197,7 @@ void BookmarkBarGtk::Init(Profile* profile) { instructions_ = gtk_alignment_new(0, 0, 1, 1); gtk_alignment_set_padding(GTK_ALIGNMENT(instructions_), 0, 0, kInstructionsPadding, 0); + Profile* profile = browser_->profile(); instructions_gtk_.reset(new BookmarkBarInstructionsGtk(this, profile)); gtk_container_add(GTK_CONTAINER(instructions_), instructions_gtk_->widget()); gtk_box_pack_start(GTK_BOX(bookmark_hbox_), instructions_, @@ -310,6 +287,15 @@ void BookmarkBarGtk::Init(Profile* profile) { gtk_widget_show_all(widget()); gtk_widget_hide(widget()); + + AddCoreButtons(); + // TODO(erg): Handle extensions + model_ = profile->GetBookmarkModel(); + model_->AddObserver(this); + if (model_->IsLoaded()) + Loaded(model_, false); + // else case: we'll receive notification back from the BookmarkModel when done + // loading, then we'll populate the bar. } void BookmarkBarGtk::SetBookmarkBarState( @@ -398,7 +384,7 @@ void BookmarkBarGtk::PopupForButton(GtkWidget* button) { } current_menu_.reset( - new BookmarkMenuController(browser_, profile_, page_navigator_, + new BookmarkMenuController(browser_, browser_->profile(), page_navigator_, GTK_WINDOW(gtk_widget_get_toplevel(button)), node, button == overflow_button_ ? @@ -506,26 +492,6 @@ void BookmarkBarGtk::Hide(BookmarkBar::State old_state, } } -void BookmarkBarGtk::CreateAllBookmarkButtons() { - const BookmarkNode* bar = model_->bookmark_bar_node(); - DCHECK(bar && model_->other_node()); - - // Create a button for each of the children on the bookmark bar. - for (int i = 0; i < bar->child_count(); ++i) { - const BookmarkNode* node = bar->GetChild(i); - GtkToolItem* item = CreateBookmarkToolItem(node); - gtk_toolbar_insert(GTK_TOOLBAR(bookmark_toolbar_.get()), item, -1); - if (node->is_folder()) - menu_bar_helper_.Add(gtk_bin_get_child(GTK_BIN(item))); - } - - bookmark_utils::ConfigureButtonForNode(model_->other_node(), - model_, other_bookmarks_button_, theme_service_); - - SetInstructionState(); - SetChevronState(); -} - void BookmarkBarGtk::SetInstructionState() { if (model_) show_instructions_ = model_->bookmark_bar_node()->empty(); @@ -563,13 +529,39 @@ void BookmarkBarGtk::UpdateOtherBookmarksVisibility() { gtk_widget_set_visible(other_bookmarks_separator_, has_other_children); } -void BookmarkBarGtk::RemoveAllBookmarkButtons() { +void BookmarkBarGtk::RemoveAllButtons() { gtk_util::RemoveAllChildren(bookmark_toolbar_.get()); menu_bar_helper_.Clear(); +} + +void BookmarkBarGtk::AddCoreButtons() { menu_bar_helper_.Add(other_bookmarks_button_); menu_bar_helper_.Add(overflow_button_); } +void BookmarkBarGtk::ResetButtons() { + RemoveAllButtons(); + AddCoreButtons(); + + const BookmarkNode* bar = model_->bookmark_bar_node(); + DCHECK(bar && model_->other_node()); + + // Create a button for each of the children on the bookmark bar. + for (int i = 0; i < bar->child_count(); ++i) { + const BookmarkNode* node = bar->GetChild(i); + GtkToolItem* item = CreateBookmarkToolItem(node); + gtk_toolbar_insert(GTK_TOOLBAR(bookmark_toolbar_.get()), item, -1); + if (node->is_folder()) + menu_bar_helper_.Add(gtk_bin_get_child(GTK_BIN(item))); + } + + bookmark_utils::ConfigureButtonForNode(model_->other_node(), + model_, other_bookmarks_button_, theme_service_); + + SetInstructionState(); + SetChevronState(); +} + int BookmarkBarGtk::GetBookmarkButtonCount() { GList* children = gtk_container_get_children( GTK_CONTAINER(bookmark_toolbar_.get())); @@ -853,8 +845,7 @@ void BookmarkBarGtk::Loaded(BookmarkModel* model, bool ids_reassigned) { return; UpdateOtherBookmarksVisibility(); - RemoveAllBookmarkButtons(); - CreateAllBookmarkButtons(); + ResetButtons(); } void BookmarkBarGtk::BookmarkModelBeingDeleted(BookmarkModel* model) { @@ -949,9 +940,7 @@ void BookmarkBarGtk::BookmarkNodeChildrenReordered(BookmarkModel* model, if (node != model_->bookmark_bar_node()) return; // We only care about reordering of the bookmark bar node. - // Purge and rebuild the bar. - RemoveAllBookmarkButtons(); - CreateAllBookmarkButtons(); + ResetButtons(); } void BookmarkBarGtk::Observe(int type, @@ -961,8 +950,7 @@ void BookmarkBarGtk::Observe(int type, if (model_ && model_->IsLoaded()) { // Regenerate the bookmark bar with all new objects with their theme // properties set correctly for the new theme. - RemoveAllBookmarkButtons(); - CreateAllBookmarkButtons(); + ResetButtons(); } // Resize the bookmark bar since the target height may have changed. @@ -1119,7 +1107,7 @@ void BookmarkBarGtk::PopupMenuForNode(GtkWidget* sender, GtkWindow* window = GTK_WINDOW(gtk_widget_get_toplevel(sender)); current_context_menu_controller_.reset( new BookmarkContextMenuController( - window, this, profile_, page_navigator_, parent, nodes)); + window, this, browser_->profile(), page_navigator_, parent, nodes)); current_context_menu_.reset( new MenuGtk(NULL, current_context_menu_controller_->menu_model())); current_context_menu_->PopupAsContext( @@ -1157,10 +1145,10 @@ void BookmarkBarGtk::OnClicked(GtkWidget* sender) { DCHECK(node->is_url()); DCHECK(page_navigator_); - RecordAppLaunch(profile_, node->url()); - bookmark_utils::OpenAll(window_->GetNativeHandle(), - profile_, page_navigator_, node, - gtk_util::DispositionForCurrentButtonPressEvent()); + Profile* profile = browser_->profile(); + RecordAppLaunch(profile, node->url()); + bookmark_utils::OpenAll(window_->GetNativeHandle(), profile, page_navigator_, + node, gtk_util::DispositionForCurrentButtonPressEvent()); UserMetrics::RecordAction(UserMetricsAction("ClickedBookmarkBarURLButton")); } @@ -1220,12 +1208,14 @@ void BookmarkBarGtk::OnButtonDragEnd(GtkWidget* button, g_object_unref(button->parent); } -void BookmarkBarGtk::OnButtonDragGet(GtkWidget* widget, GdkDragContext* context, +void BookmarkBarGtk::OnButtonDragGet(GtkWidget* widget, + GdkDragContext* context, GtkSelectionData* selection_data, - guint target_type, guint time) { + guint target_type, + guint time) { const BookmarkNode* node = bookmark_utils::BookmarkNodeForWidget(widget); bookmark_utils::WriteBookmarkToSelection(node, selection_data, target_type, - profile_); + browser_->profile()); } void BookmarkBarGtk::OnFolderClicked(GtkWidget* sender) { @@ -1240,9 +1230,8 @@ void BookmarkBarGtk::OnFolderClicked(GtkWidget* sender) { PopupForButton(sender); } else if (event->button.button == 2) { const BookmarkNode* node = GetNodeForToolButton(sender); - bookmark_utils::OpenAll(window_->GetNativeHandle(), - profile_, page_navigator_, - node, NEW_BACKGROUND_TAB); + bookmark_utils::OpenAll(window_->GetNativeHandle(), browser_->profile(), + page_navigator_, node, NEW_BACKGROUND_TAB); } } @@ -1304,7 +1293,7 @@ void BookmarkBarGtk::OnDragReceived(GtkWidget* widget, std::vector<const BookmarkNode*> nodes = bookmark_utils::GetNodesFromSelection(context, selection_data, target_type, - profile_, + browser_->profile(), &delete_selection_data, &dnd_success); DCHECK(!nodes.empty()); diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h index 0f4851c..245166a 100644 --- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h +++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.h @@ -37,7 +37,6 @@ class CustomContainerButton; class GtkThemeService; class MenuGtk; class PageNavigator; -class Profile; class TabstripOriginProvider; class BookmarkBarGtk : public ui::AnimationDelegate, @@ -52,18 +51,10 @@ class BookmarkBarGtk : public ui::AnimationDelegate, static const int kBookmarkBarNTPHeight; BookmarkBarGtk(BrowserWindowGtk* window, - Profile* profile, Browser* browser, TabstripOriginProvider* tabstrip_origin_provider); virtual ~BookmarkBarGtk(); - // Resets the profile. This removes any buttons for the current profile and - // recreates the models. - void SetProfile(Profile* profile); - - // Returns the current profile. - Profile* GetProfile() { return profile_; } - // Returns the current browser. Browser* browser() const { return browser_; } @@ -75,7 +66,7 @@ class BookmarkBarGtk : public ui::AnimationDelegate, void SetPageNavigator(PageNavigator* navigator); // Create the contents of the bookmark bar. - void Init(Profile* profile); + void Init(); // Changes the state of the bookmark bar. void SetBookmarkBarState(BookmarkBar::State state, @@ -134,8 +125,14 @@ class BookmarkBarGtk : public ui::AnimationDelegate, // bookmarks in it. void UpdateOtherBookmarksVisibility(); - // Helper function which destroys all the bookmark buttons in the GtkToolbar. - void RemoveAllBookmarkButtons(); + // Destroys all the bookmark buttons in the GtkToolbar. + void RemoveAllButtons(); + + // Adds the "other bookmarks" and overflow buttons. + void AddCoreButtons(); + + // Removes and recreates all buttons in the bar. + void ResetButtons(); // Returns the number of buttons corresponding to starred urls/folders. This // is equivalent to the number of children the bookmark bar node from the @@ -302,8 +299,6 @@ class BookmarkBarGtk : public ui::AnimationDelegate, // Updates the drag&drop state when |edit_bookmarks_enabled_| changes. void OnEditBookmarksEnabledChanged(); - Profile* profile_; - // Used for opening urls. PageNavigator* page_navigator_; diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk_unittest.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk_unittest.cc index ea18968..030ab1e 100644 --- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk_unittest.cc +++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk_unittest.cc @@ -37,7 +37,7 @@ class BookmarkBarGtkUnittest : public TestingBrowserProcessTest { browser_.reset(new Browser(Browser::TYPE_TABBED, profile_.get())); origin_provider_.reset(new EmptyTabstripOriginProvider); - bookmark_bar_.reset(new BookmarkBarGtk(NULL, profile_.get(), browser_.get(), + bookmark_bar_.reset(new BookmarkBarGtk(NULL, browser_.get(), origin_provider_.get())); } diff --git a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc index 276fe06..09e6285 100644 --- a/chrome/browser/ui/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/ui/gtk/browser_toolbar_gtk.cc @@ -89,8 +89,7 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window) model_(browser->toolbar_model()), wrench_menu_model_(this, browser), browser_(browser), - window_(window), - profile_(NULL) { + window_(window) { browser_->command_updater()->AddCommandObserver(IDC_BACK, this); browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this); browser_->command_updater()->AddCommandObserver(IDC_HOME, this); @@ -112,11 +111,8 @@ BrowserToolbarGtk::~BrowserToolbarGtk() { wrench_menu_.reset(); } -void BrowserToolbarGtk::Init(Profile* profile, - GtkWindow* top_level_window) { - // Make sure to tell the location bar the profile before calling its Init. - SetProfile(profile); - +void BrowserToolbarGtk::Init(GtkWindow* top_level_window) { + Profile* profile = browser_->profile(); theme_service_ = GtkThemeService::GetFrom(profile); registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, @@ -165,9 +161,8 @@ void BrowserToolbarGtk::Init(Profile* profile, gtk_box_pack_start(GTK_BOX(toolbar_left_), reload_->widget(), FALSE, FALSE, 0); - home_.reset(new CustomDrawButton(GtkThemeService::GetFrom(profile_), - IDR_HOME, IDR_HOME_P, IDR_HOME_H, 0, GTK_STOCK_HOME, - GTK_ICON_SIZE_SMALL_TOOLBAR)); + home_.reset(new CustomDrawButton(theme_service_, IDR_HOME, IDR_HOME_P, + IDR_HOME_H, 0, GTK_STOCK_HOME, GTK_ICON_SIZE_SMALL_TOOLBAR)); gtk_widget_set_tooltip_text(home_->widget(), l10n_util::GetStringUTF8(IDS_TOOLTIP_HOME).c_str()); g_signal_connect(home_->widget(), "clicked", @@ -200,10 +195,8 @@ void BrowserToolbarGtk::Init(Profile* profile, wrench_menu_image_ = gtk_image_new_from_pixbuf( theme_service_->GetRTLEnabledPixbufNamed(IDR_TOOLS)); - wrench_menu_button_.reset(new CustomDrawButton( - GtkThemeService::GetFrom(profile_), - IDR_TOOLS, IDR_TOOLS_P, IDR_TOOLS_H, 0, - wrench_menu_image_)); + wrench_menu_button_.reset(new CustomDrawButton(theme_service_, IDR_TOOLS, + IDR_TOOLS_P, IDR_TOOLS_H, 0, wrench_menu_image_)); GtkWidget* wrench_button = wrench_menu_button_->widget(); gtk_widget_set_tooltip_text( @@ -224,7 +217,7 @@ void BrowserToolbarGtk::Init(Profile* profile, wrench_menu_.reset(new MenuGtk(this, &wrench_menu_model_)); registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, - Source<HostZoomMap>(browser_->profile()->GetHostZoomMap())); + Source<HostZoomMap>(profile->GetHostZoomMap())); if (ShouldOnlyShowLocation()) { gtk_widget_show(event_box_); @@ -399,14 +392,6 @@ void BrowserToolbarGtk::Observe(int type, // BrowserToolbarGtk, public --------------------------------------------------- -void BrowserToolbarGtk::SetProfile(Profile* profile) { - if (profile == profile_) - return; - - profile_ = profile; - location_bar_->SetProfile(profile); -} - void BrowserToolbarGtk::UpdateTabContents(TabContents* contents, bool should_restore_state) { location_bar_->Update(should_restore_state ? contents : NULL); diff --git a/chrome/browser/ui/gtk/browser_toolbar_gtk.h b/chrome/browser/ui/gtk/browser_toolbar_gtk.h index cd5d864..00e14d9 100644 --- a/chrome/browser/ui/gtk/browser_toolbar_gtk.h +++ b/chrome/browser/ui/gtk/browser_toolbar_gtk.h @@ -31,7 +31,6 @@ class CustomDrawButton; class GtkThemeService; class LocationBar; class LocationBarViewGtk; -class Profile; class ReloadButtonGtk; class TabContents; class ToolbarModel; @@ -48,7 +47,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, // Create the contents of the toolbar. |top_level_window| is the GtkWindow // to which we attach our accelerators. - void Init(Profile* profile, GtkWindow* top_level_window); + void Init(GtkWindow* top_level_window); // Set the various widgets' ViewIDs. void SetViewIDs(); @@ -101,9 +100,6 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, const NotificationSource& source, const NotificationDetails& details); - Profile* profile() { return profile_; } - void SetProfile(Profile* profile); - // Message that we should react to a state change. void UpdateTabContents(TabContents* contents, bool should_restore_state); @@ -194,7 +190,6 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, Browser* browser_; BrowserWindowGtk* window_; - Profile* profile_; // Controls whether or not a home button should be shown on the toolbar. BooleanPrefMember show_home_button_; diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 6320fcb..292ff4b 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -1302,10 +1302,8 @@ void BrowserWindowGtk::MaybeShowBookmarkBar(bool animate) { TabContentsWrapper* tab = GetDisplayedTab(); - if (tab) { - bookmark_bar_->SetProfile(tab->profile()); + if (tab) bookmark_bar_->SetPageNavigator(browser_.get()); - } BookmarkBar::State state = browser_->bookmark_bar_state(); if (contents_container_->HasPreview() && state == BookmarkBar::DETACHED) @@ -1684,7 +1682,7 @@ void BrowserWindowGtk::InitWidgets() { 0); toolbar_.reset(new BrowserToolbarGtk(browser_.get(), this)); - toolbar_->Init(browser_->profile(), window_); + toolbar_->Init(window_); gtk_box_pack_start(GTK_BOX(window_vbox_), toolbar_->widget(), FALSE, FALSE, 0); g_signal_connect_after(toolbar_->widget(), "expose-event", @@ -1750,7 +1748,6 @@ void BrowserWindowGtk::InitWidgets() { if (IsBookmarkBarSupported()) { bookmark_bar_.reset(new BookmarkBarGtk(this, - browser_->profile(), browser_.get(), tabstrip_.get())); PlaceBookmarkBar(false); diff --git a/chrome/browser/ui/gtk/location_bar_view_gtk.cc b/chrome/browser/ui/gtk/location_bar_view_gtk.cc index 10fc40d..5b32b01 100644 --- a/chrome/browser/ui/gtk/location_bar_view_gtk.cc +++ b/chrome/browser/ui/gtk/location_bar_view_gtk.cc @@ -161,7 +161,6 @@ LocationBarViewGtk::LocationBarViewGtk(Browser* browser) tab_to_search_hint_leading_label_(NULL), tab_to_search_hint_icon_(NULL), tab_to_search_hint_trailing_label_(NULL), - profile_(NULL), command_updater_(browser->command_updater()), toolbar_model_(browser->toolbar_model()), browser_(browser), @@ -187,7 +186,8 @@ LocationBarViewGtk::~LocationBarViewGtk() { void LocationBarViewGtk::Init(bool popup_window_mode) { popup_window_mode_ = popup_window_mode; - theme_service_ = GtkThemeService::GetFrom(profile_); + Profile* profile = browser_->profile(); + theme_service_ = GtkThemeService::GetFrom(profile); // Create the widget first, so we can pass it to the OmniboxViewGtk. hbox_.Own(gtk_hbox_new(FALSE, kInnerPadding)); @@ -199,12 +199,8 @@ void LocationBarViewGtk::Init(bool popup_window_mode) { gtk_widget_set_redraw_on_allocate(hbox_.get(), TRUE); // Now initialize the OmniboxViewGtk. - location_entry_.reset(new OmniboxViewGtk(this, - toolbar_model_, - profile_, - command_updater_, - popup_window_mode_, - hbox_.get())); + location_entry_.reset(new OmniboxViewGtk(this, toolbar_model_, profile, + command_updater_, popup_window_mode_, hbox_.get())); location_entry_->Init(); g_signal_connect(hbox_.get(), "expose-event", @@ -313,7 +309,7 @@ void LocationBarViewGtk::Init(bool popup_window_mode) { for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { ContentSettingImageViewGtk* content_setting_view = new ContentSettingImageViewGtk( - static_cast<ContentSettingsType>(i), this, profile_); + static_cast<ContentSettingsType>(i), this); content_setting_views_.push_back(content_setting_view); gtk_box_pack_end(GTK_BOX(content_setting_hbox_.get()), content_setting_view->widget(), FALSE, FALSE, 0); @@ -335,7 +331,7 @@ void LocationBarViewGtk::Init(bool popup_window_mode) { chrome::NOTIFICATION_BROWSER_THEME_CHANGED, Source<ThemeService>(theme_service_)); edit_bookmarks_enabled_.Init(prefs::kEditBookmarksEnabled, - profile_->GetPrefs(), this); + profile->GetPrefs(), this); theme_service_->InitThemesFor(this); } @@ -414,10 +410,6 @@ void LocationBarViewGtk::SetSiteTypeDragSource() { ui::CHROME_NAMED_URL); } -void LocationBarViewGtk::SetProfile(Profile* profile) { - profile_ = profile; -} - TabContents* LocationBarViewGtk::GetTabContents() const { return browser_->GetSelectedTabContents(); } @@ -554,14 +546,12 @@ void LocationBarViewGtk::OnKillFocus() { } void LocationBarViewGtk::OnSetFocus() { - AccessibilityTextBoxInfo info( - profile_, - l10n_util::GetStringUTF8(IDS_ACCNAME_LOCATION).c_str(), - false); + Profile* profile = browser_->profile(); + AccessibilityTextBoxInfo info(profile, + l10n_util::GetStringUTF8(IDS_ACCNAME_LOCATION), false); NotificationService::current()->Notify( chrome::NOTIFICATION_ACCESSIBILITY_CONTROL_FOCUSED, - Source<Profile>(profile_), - Details<AccessibilityTextBoxInfo>(&info)); + Source<Profile>(profile), Details<AccessibilityTextBoxInfo>(&info)); // Update the keyword and search hint states. OnChanged(); @@ -641,7 +631,7 @@ void LocationBarViewGtk::UpdateContentSettingsIcons() { void LocationBarViewGtk::UpdatePageActions() { std::vector<ExtensionAction*> page_actions; - ExtensionService* service = profile_->GetExtensionService(); + ExtensionService* service = browser_->profile()->GetExtensionService(); if (!service) return; @@ -658,7 +648,7 @@ void LocationBarViewGtk::UpdatePageActions() { for (size_t i = 0; i < page_actions.size(); ++i) { page_action_views_.push_back( - new PageActionViewGtk(this, profile_, page_actions[i])); + new PageActionViewGtk(this, page_actions[i])); gtk_box_pack_end(GTK_BOX(page_action_hbox_.get()), page_action_views_[i]->widget(), FALSE, FALSE, 0); } @@ -824,8 +814,7 @@ gboolean LocationBarViewGtk::HandleExpose(GtkWidget* widget, GdkEventExpose* event) { // If we're not using GTK theming, draw our own border over the edge pixels // of the background. - if (!profile_ || - !GtkThemeService::GetFrom(profile_)->UsingNativeTheme()) { + if (!GtkThemeService::GetFrom(browser_->profile())->UsingNativeTheme()) { int left, center, right; if (popup_window_mode_) { left = right = IDR_LOCATIONBG_POPUPMODE_EDGE; @@ -935,9 +924,9 @@ void LocationBarViewGtk::SetKeywordLabel(const string16& keyword) { if (keyword.empty()) return; - DCHECK(profile_); + Profile* profile = browser_->profile(); TemplateURLService* template_url_service = - TemplateURLServiceFactory::GetForProfile(profile_); + TemplateURLServiceFactory::GetForProfile(profile); if (!template_url_service) return; @@ -963,7 +952,7 @@ void LocationBarViewGtk::SetKeywordLabel(const string16& keyword) { if (is_extension_keyword) { const TemplateURL* template_url = template_url_service->GetTemplateURLForKeyword(keyword); - const SkBitmap& bitmap = profile_->GetExtensionService()-> + const SkBitmap& bitmap = profile->GetExtensionService()-> GetOmniboxIcon(template_url->GetExtensionId()); GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&bitmap); gtk_image_set_from_pixbuf(GTK_IMAGE(tab_to_search_magnifier_), pixbuf); @@ -980,9 +969,8 @@ void LocationBarViewGtk::SetKeywordHintLabel(const string16& keyword) { if (keyword.empty()) return; - DCHECK(profile_); TemplateURLService* template_url_service = - TemplateURLServiceFactory::GetForProfile(profile_); + TemplateURLServiceFactory::GetForProfile(browser_->profile()); if (!template_url_service) return; @@ -1021,7 +1009,8 @@ void LocationBarViewGtk::ShowFirstRunBubbleInternal( gfx::Rect bounds = gtk_util::WidgetBounds(location_icon_image_); bounds.set_x(bounds.x() + kFirstRunBubbleLeftSpacing); - FirstRunBubble::Show(profile_, location_icon_image_, bounds, bubble_type); + FirstRunBubble::Show(browser_->profile(), location_icon_image_, bounds, + bubble_type); } gboolean LocationBarViewGtk::OnIconReleased(GtkWidget* sender, @@ -1056,7 +1045,7 @@ gboolean LocationBarViewGtk::OnIconReleased(GtkWidget* sender, } GURL url; - if (!gtk_util::URLFromPrimarySelection(profile_, &url)) + if (!gtk_util::URLFromPrimarySelection(browser_->profile(), &url)) return FALSE; tab->OpenURL(url, GURL(), CURRENT_TAB, PageTransition::TYPED); @@ -1125,7 +1114,8 @@ void LocationBarViewGtk::ShowStarBubble(const GURL& url, if (!star_.get()) return; - BookmarkBubbleGtk::Show(star_.get(), profile_, url, newly_bookmarked); + BookmarkBubbleGtk::Show(star_.get(), browser_->profile(), url, + newly_bookmarked); } void LocationBarViewGtk::SetStarred(bool starred) { @@ -1222,8 +1212,7 @@ void LocationBarViewGtk::AdjustChildrenVisibility() { // LocationBarViewGtk::ContentSettingImageViewGtk LocationBarViewGtk::ContentSettingImageViewGtk::ContentSettingImageViewGtk( ContentSettingsType content_type, - const LocationBarViewGtk* parent, - Profile* profile) + const LocationBarViewGtk* parent) : content_setting_image_model_( ContentSettingImageModel::CreateContentSettingImageModel( content_type)), @@ -1233,7 +1222,6 @@ LocationBarViewGtk::ContentSettingImageViewGtk::ContentSettingImageViewGtk( image_(gtk_image_new()), label_(gtk_label_new(NULL)), parent_(parent), - profile_(profile), content_setting_bubble_(NULL), animation_(this), method_factory_(this) { @@ -1284,7 +1272,7 @@ void LocationBarViewGtk::ContentSettingImageViewGtk::UpdateFromTabContents( } gtk_image_set_from_pixbuf(GTK_IMAGE(image_.get()), - GtkThemeService::GetFrom(profile_)->GetPixbufNamed( + GtkThemeService::GetFrom(parent_->browser()->profile())->GetPixbufNamed( content_setting_image_model_->get_icon())); gtk_widget_set_tooltip_text(widget(), @@ -1368,12 +1356,13 @@ gboolean LocationBarViewGtk::ContentSettingImageViewGtk::OnButtonPressed( TabContentsWrapper* tab_contents = parent_->GetTabContentsWrapper(); if (!tab_contents) return TRUE; + Profile* profile = parent_->browser()->profile(); content_setting_bubble_ = new ContentSettingBubbleGtk( sender, this, ContentSettingBubbleModel::CreateContentSettingBubbleModel( - parent_->browser(), tab_contents, profile_, + parent_->browser(), tab_contents, profile, content_setting_image_model_->get_content_settings_type()), - profile_, tab_contents->tab_contents()); + profile, tab_contents->tab_contents()); return TRUE; } @@ -1416,10 +1405,9 @@ void LocationBarViewGtk::ContentSettingImageViewGtk::BubbleClosing( // LocationBarViewGtk::PageActionViewGtk LocationBarViewGtk::PageActionViewGtk::PageActionViewGtk( - LocationBarViewGtk* owner, Profile* profile, + LocationBarViewGtk* owner, ExtensionAction* page_action) : owner_(NULL), - profile_(profile), page_action_(page_action), last_icon_pixbuf_(NULL), tracker_(this), @@ -1439,8 +1427,9 @@ LocationBarViewGtk::PageActionViewGtk::PageActionViewGtk( image_.Own(gtk_image_new()); gtk_container_add(GTK_CONTAINER(event_box_.get()), image_.get()); - const Extension* extension = profile->GetExtensionService()-> - GetExtensionById(page_action->extension_id(), false); + const Extension* extension = owner->browser()->profile()-> + GetExtensionService()->GetExtensionById(page_action->extension_id(), + false); DCHECK(extension); // Load all the icons declared in the manifest. This is the contents of the @@ -1596,19 +1585,16 @@ bool LocationBarViewGtk::PageActionViewGtk::ShowPopup(bool devtools) { gboolean LocationBarViewGtk::PageActionViewGtk::OnButtonPressed( GtkWidget* sender, GdkEventButton* event) { + Profile* profile = owner_->browser()->profile(); if (event->button != 3) { if (!ShowPopup(false)) { - ExtensionService* service = profile_->GetExtensionService(); - service->browser_event_router()->PageActionExecuted( - profile_, - page_action_->extension_id(), - page_action_->id(), - current_tab_id_, - current_url_.spec(), - event->button); + ExtensionService* service = profile->GetExtensionService(); + service->browser_event_router()->PageActionExecuted(profile, + page_action_->extension_id(), page_action_->id(), current_tab_id_, + current_url_.spec(), event->button); } } else { - const Extension* extension = profile_->GetExtensionService()-> + const Extension* extension = profile->GetExtensionService()-> GetExtensionById(page_action()->extension_id(), false); if (extension->ShowConfigureContextMenus()) { @@ -1624,7 +1610,8 @@ gboolean LocationBarViewGtk::PageActionViewGtk::OnButtonPressed( } gboolean LocationBarViewGtk::PageActionViewGtk::OnExposeEvent( - GtkWidget* widget, GdkEventExpose* event) { + GtkWidget* widget, + GdkEventExpose* event) { TabContents* contents = owner_->GetTabContents(); if (!contents) return FALSE; diff --git a/chrome/browser/ui/gtk/location_bar_view_gtk.h b/chrome/browser/ui/gtk/location_bar_view_gtk.h index 837eb16..f18ed96 100644 --- a/chrome/browser/ui/gtk/location_bar_view_gtk.h +++ b/chrome/browser/ui/gtk/location_bar_view_gtk.h @@ -41,7 +41,6 @@ class ContentSettingImageModel; class ContentSettingBubbleGtk; class ExtensionAction; class GtkThemeService; -class Profile; class SkBitmap; class TabContents; class ToolbarModel; @@ -56,8 +55,6 @@ class LocationBarViewGtk : public AutocompleteEditController, void Init(bool popup_window_mode); - void SetProfile(Profile* profile); - // Returns the widget the caller should host. You must call Init() first. GtkWidget* widget() { return hbox_.get(); } @@ -149,14 +146,11 @@ class LocationBarViewGtk : public AutocompleteEditController, public ui::AnimationDelegate { public: ContentSettingImageViewGtk(ContentSettingsType content_type, - const LocationBarViewGtk* parent, - Profile* profile); + const LocationBarViewGtk* parent); virtual ~ContentSettingImageViewGtk(); GtkWidget* widget() { return alignment_.get(); } - void set_profile(Profile* profile) { profile_ = profile; } - bool IsVisible(); void UpdateFromTabContents(TabContents* tab_contents); @@ -195,9 +189,6 @@ class LocationBarViewGtk : public AutocompleteEditController, // The owning LocationBarViewGtk. const LocationBarViewGtk* parent_; - // The currently active profile. - Profile* profile_; - // The currently shown bubble if any. ContentSettingBubbleGtk* content_setting_bubble_; @@ -215,9 +206,7 @@ class LocationBarViewGtk : public AutocompleteEditController, class PageActionViewGtk : public ImageLoadingTracker::Observer, public ExtensionContextMenuModel::PopupDelegate { public: - PageActionViewGtk( - LocationBarViewGtk* owner, Profile* profile, - ExtensionAction* page_action); + PageActionViewGtk(LocationBarViewGtk* owner, ExtensionAction* page_action); virtual ~PageActionViewGtk(); GtkWidget* widget() { return event_box_.get(); } @@ -258,9 +247,6 @@ class LocationBarViewGtk : public AutocompleteEditController, // The location bar view that owns us. LocationBarViewGtk* owner_; - // The current profile (not owned by us). - Profile* profile_; - // The PageAction that this view represents. The PageAction is not owned by // us, it resides in the extension of this particular profile. ExtensionAction* page_action_; @@ -410,7 +396,6 @@ class LocationBarViewGtk : public AutocompleteEditController, // Alignment used to wrap |location_entry_|. GtkWidget* location_entry_alignment_; - Profile* profile_; CommandUpdater* command_updater_; ToolbarModel* toolbar_model_; Browser* browser_; diff --git a/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.cc b/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.cc index ee77e01..a3a85ed 100644 --- a/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.cc +++ b/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.cc @@ -270,14 +270,13 @@ void OmniboxPopupViewGtk::SetupLayoutForMatch( OmniboxPopupViewGtk::OmniboxPopupViewGtk(const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, GtkWidget* location_bar) - : model_(new AutocompletePopupModel(this, edit_model, profile)), + : model_(new AutocompletePopupModel(this, edit_model)), omnibox_view_(omnibox_view), location_bar_(location_bar), window_(gtk_window_new(GTK_WINDOW_POPUP)), layout_(NULL), - theme_service_(GtkThemeService::GetFrom(profile)), + theme_service_(GtkThemeService::GetFrom(edit_model->profile())), font_(font.DeriveFont(kEditFontAdjust)), ignore_mouse_drag_(false), opened_(false) { diff --git a/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.h b/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.h index 025e432..5903116 100644 --- a/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.h +++ b/chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.h @@ -25,16 +25,14 @@ class AutocompleteEditModel; class AutocompletePopupModel; class GtkThemeService; class OmniboxView; -class Profile; class SkBitmap; class OmniboxPopupViewGtk : public AutocompletePopupView, - public NotificationObserver { + public NotificationObserver { public: OmniboxPopupViewGtk(const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, GtkWidget* location_bar); virtual ~OmniboxPopupViewGtk(); diff --git a/chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.cc b/chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.cc index 838ed9f..3f57d3e 100644 --- a/chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.cc +++ b/chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.cc @@ -209,7 +209,7 @@ OmniboxViewGtk::OmniboxViewGtk( #else new OmniboxPopupViewGtk #endif - (GetFont(), this, model_.get(), profile, location_bar)); + (GetFont(), this, model_.get(), location_bar)); } OmniboxViewGtk::~OmniboxViewGtk() { diff --git a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc index f82f0d5..4f60c52 100644 --- a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc +++ b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc @@ -229,11 +229,11 @@ AutocompletePopupContentsView::AutocompletePopupContentsView( const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, views::View* location_bar) - : model_(new AutocompletePopupModel(this, edit_model, profile)), + : model_(new AutocompletePopupModel(this, edit_model)), opt_in_view_(NULL), omnibox_view_(omnibox_view), + profile_(edit_model->profile()), location_bar_(location_bar), result_font_(font.DeriveFont(kEditFontAdjust)), result_bold_font_(result_font_.DeriveFont(0, gfx::Font::BOLD)), @@ -331,7 +331,7 @@ void AutocompletePopupContentsView::UpdatePopupAppearance() { for (size_t i = model_->result().size(); i < child_rv_count; ++i) child_at(i)->SetVisible(false); - PromoCounter* counter = model_->profile()->GetInstantPromoCounter(); + PromoCounter* counter = profile_->GetInstantPromoCounter(); if (!opt_in_view_ && counter && counter->ShouldShow(base::Time::Now())) { opt_in_view_ = new InstantOptInView(this, result_bold_font_, result_font_); AddChildView(opt_in_view_); @@ -694,12 +694,12 @@ gfx::Rect AutocompletePopupContentsView::CalculateTargetBounds(int h) { void AutocompletePopupContentsView::UserPressedOptIn(bool opt_in) { delete opt_in_view_; opt_in_view_ = NULL; - PromoCounter* counter = model_->profile()->GetInstantPromoCounter(); + PromoCounter* counter = profile_->GetInstantPromoCounter(); DCHECK(counter); counter->Hide(); if (opt_in) { browser::ShowInstantConfirmDialogIfNecessary( - location_bar_->GetWidget()->GetNativeWindow(), model_->profile()); + location_bar_->GetWidget()->GetNativeWindow(), profile_); } UpdatePopupAppearance(); } diff --git a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h index 92d6c12..ba07542 100644 --- a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h +++ b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h @@ -36,7 +36,6 @@ class AutocompletePopupContentsView : public views::View, AutocompletePopupContentsView(const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, views::View* location_bar); virtual ~AutocompletePopupContentsView(); @@ -143,6 +142,8 @@ class AutocompletePopupContentsView : public views::View, // The edit view that invokes us. OmniboxView* omnibox_view_; + Profile* profile_; + // An object that the popup positions itself against. views::View* location_bar_; diff --git a/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.cc b/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.cc index 48f2588..c49b4b1 100644 --- a/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.cc +++ b/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.cc @@ -4,7 +4,6 @@ #include "chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/omnibox/omnibox_view.h" #include "third_party/skia/include/core/SkPaint.h" #include "ui/gfx/canvas.h" @@ -57,9 +56,8 @@ TouchAutocompletePopupContentsView::TouchAutocompletePopupContentsView( const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, views::View* location_bar) - : AutocompletePopupContentsView(font, omnibox_view, edit_model, profile, + : AutocompletePopupContentsView(font, omnibox_view, edit_model, location_bar) { } diff --git a/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h b/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h index 061ef4a..245c338 100644 --- a/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h +++ b/chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h @@ -11,7 +11,6 @@ class AutocompleteEditModel; class OmniboxView; -class Profile; namespace gfx { class Canvas; @@ -47,7 +46,6 @@ class TouchAutocompletePopupContentsView TouchAutocompletePopupContentsView(const gfx::Font& font, OmniboxView* omnibox_view, AutocompleteEditModel* edit_model, - Profile* profile, views::View* location_bar); virtual ~TouchAutocompletePopupContentsView(); diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc index 5f5d238..c701e65 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc @@ -362,16 +362,15 @@ static const SkBitmap& GetFolderIcon() { return *kFolderIcon; } -BookmarkBarView::BookmarkBarView(Profile* profile, Browser* browser) - : profile_(NULL), - page_navigator_(NULL), +BookmarkBarView::BookmarkBarView(Browser* browser) + : page_navigator_(NULL), model_(NULL), bookmark_menu_(NULL), bookmark_drop_menu_(NULL), other_bookmarked_button_(NULL), ALLOW_THIS_IN_INITIALIZER_LIST(show_folder_method_factory_(this)), sync_error_button_(NULL), - sync_service_(NULL), + sync_service_(browser->profile()->GetProfileSyncService()), overflow_button_(NULL), instructions_(NULL), bookmarks_separator_view_(NULL), @@ -380,16 +379,11 @@ BookmarkBarView::BookmarkBarView(Profile* profile, Browser* browser) throbbing_view_(NULL), bookmark_bar_state_(BookmarkBar::SHOW), animating_detached_(false) { - if (profile->GetProfileSyncService()) { - // Obtain a pointer to the profile sync service and add our instance as an - // observer. - sync_service_ = profile->GetProfileSyncService(); + if (sync_service_) sync_service_->AddObserver(this); - } set_id(VIEW_ID_BOOKMARK_BAR); Init(); - SetProfile(profile); size_animation_->Reset(1); } @@ -409,43 +403,6 @@ BookmarkBarView::~BookmarkBarView() { sync_service_->RemoveObserver(this); } -void BookmarkBarView::SetProfile(Profile* profile) { - DCHECK(profile); - if (profile_ == profile) - return; - - StopThrobbing(true); - - // Cancels the current cancelable. - registrar_.RemoveAll(); - - profile_ = profile; - - if (model_) - model_->RemoveObserver(this); - - // Disable the other bookmarked button, we'll re-enable when the model is - // loaded. - other_bookmarked_button_->SetEnabled(false); - - Source<Profile> ns_source(profile_->GetOriginalProfile()); - registrar_.Add(this, chrome::NOTIFICATION_BOOKMARK_BUBBLE_SHOWN, ns_source); - registrar_.Add(this, chrome::NOTIFICATION_BOOKMARK_BUBBLE_HIDDEN, ns_source); - - // Remove any existing bookmark buttons. - while (GetBookmarkButtonCount()) - delete child_at(0); - - model_ = profile_->GetBookmarkModel(); - if (model_) { - model_->AddObserver(this); - if (model_->IsLoaded()) - Loaded(model_, false); - // else case: we'll receive notification back from the BookmarkModel when - // done loading, then we'll populate the bar. - } -} - void BookmarkBarView::SetPageNavigator(PageNavigator* navigator) { page_navigator_ = navigator; } @@ -725,7 +682,8 @@ bool BookmarkBarView::AreDropTypesRequired() { bool BookmarkBarView::CanDrop(const ui::OSExchangeData& data) { if (!model_ || !model_->IsLoaded() || - !profile_->GetPrefs()->GetBoolean(prefs::kEditBookmarksEnabled)) + !browser_->profile()->GetPrefs()->GetBoolean( + prefs::kEditBookmarksEnabled)) return false; if (!drop_info_.get()) @@ -837,8 +795,8 @@ int BookmarkBarView::OnPerformDrop(const DropTargetEvent& event) { const BookmarkNodeData data = drop_info_->data; DCHECK(data.is_valid()); drop_info_.reset(); - return bookmark_utils::PerformBookmarkDrop(profile_, data, parent_node, - index); + return bookmark_utils::PerformBookmarkDrop(browser_->profile(), data, + parent_node, index); } void BookmarkBarView::ShowContextMenu(const gfx::Point& p, @@ -1019,7 +977,7 @@ int BookmarkBarView::GetDragOperationsForView(View* sender, for (int i = 0; i < GetBookmarkButtonCount(); ++i) { if (sender == GetBookmarkButton(i)) { return bookmark_utils::BookmarkDragOperation( - profile_, model_->bookmark_bar_node()->GetChild(i)); + browser_->profile(), model_->bookmark_bar_node()->GetChild(i)); } } NOTREACHED(); @@ -1065,8 +1023,8 @@ void BookmarkBarView::RunMenu(views::View* view, const gfx::Point& pt) { node = model_->bookmark_bar_node()->GetChild(button_index); } - bookmark_menu_ = new BookmarkMenuController( - profile_, page_navigator_, GetWidget(), node, start_index); + bookmark_menu_ = new BookmarkMenuController(browser_->profile(), + page_navigator_, GetWidget(), node, start_index); bookmark_menu_->set_observer(this); bookmark_menu_->RunMenuAt(this, false); } @@ -1094,12 +1052,13 @@ void BookmarkBarView::ButtonPressed(views::Button* sender, WindowOpenDisposition disposition_from_event_flags = event_utils::DispositionFromEventFlags(sender->mouse_event_flags()); + Profile* profile = browser_->profile(); if (node->is_url()) { - RecordAppLaunch(profile_, node->url()); + RecordAppLaunch(profile, node->url()); page_navigator_->OpenURL(node->url(), GURL(), disposition_from_event_flags, PageTransition::AUTO_BOOKMARK); } else { - bookmark_utils::OpenAll(GetWidget()->GetNativeWindow(), profile_, + bookmark_utils::OpenAll(GetWidget()->GetNativeWindow(), profile, page_navigator_, node, disposition_from_event_flags); } UserMetrics::RecordAction(UserMetricsAction("ClickedBookmarkBarURLButton")); @@ -1134,21 +1093,19 @@ void BookmarkBarView::ShowContextMenuForView(View* source, parent = model_->bookmark_bar_node(); nodes.push_back(parent); } - // Browser may be null during testing. - PageNavigator* navigator = - browser() ? browser()->GetSelectedTabContents() : NULL; + Profile* profile = browser_->profile(); bool close_on_remove = - (parent == profile_->GetBookmarkModel()->other_node() && - parent->child_count() == 1); - BookmarkContextMenu controller(GetWidget(), profile_, - navigator, parent, nodes, close_on_remove); + (parent == profile->GetBookmarkModel()->other_node()) && + (parent->child_count() == 1); + BookmarkContextMenu controller(GetWidget(), profile, + browser_->GetSelectedTabContents(), parent, nodes, close_on_remove); controller.RunMenuAt(p); } void BookmarkBarView::Observe(int type, const NotificationSource& source, const NotificationDetails& details) { - DCHECK(profile_); + DCHECK(browser_->profile()); switch (type) { case chrome::NOTIFICATION_BOOKMARK_BUBBLE_SHOWN: { StopThrobbing(true); @@ -1189,6 +1146,8 @@ void BookmarkBarView::Init() { AddChildView(overflow_button_); other_bookmarked_button_ = CreateOtherBookmarkedButton(); + // We'll re-enable when the model is loaded. + other_bookmarked_button_->SetEnabled(false); AddChildView(other_bookmarked_button_); bookmarks_separator_view_ = new ButtonSeparatorView(); @@ -1200,6 +1159,20 @@ void BookmarkBarView::Init() { set_context_menu_controller(this); size_animation_.reset(new ui::SlideAnimation(this)); + + Profile* profile = browser_->profile(); + Source<Profile> ns_source(profile->GetOriginalProfile()); + registrar_.Add(this, chrome::NOTIFICATION_BOOKMARK_BUBBLE_SHOWN, ns_source); + registrar_.Add(this, chrome::NOTIFICATION_BOOKMARK_BUBBLE_HIDDEN, ns_source); + + model_ = profile->GetBookmarkModel(); + if (model_) { + model_->AddObserver(this); + if (model_->IsLoaded()) + Loaded(model_, false); + // else case: we'll receive notification back from the BookmarkModel when + // done loading, then we'll populate the bar. + } } int BookmarkBarView::GetBookmarkButtonCount() { @@ -1280,7 +1253,7 @@ views::TextButton* BookmarkBarView::CreateSyncErrorButton() { views::View* BookmarkBarView::CreateBookmarkButton(const BookmarkNode* node) { if (node->is_url()) { BookmarkButton* button = new BookmarkButton(this, node->url(), - UTF16ToWide(node->GetTitle()), profile_); + UTF16ToWide(node->GetTitle()), browser_->profile()); ConfigureButton(node, button); return button; } else { @@ -1393,8 +1366,8 @@ void BookmarkBarView::ShowDropFolderForNode(const BookmarkNode* node) { start_index = GetFirstHiddenNodeIndex(); drop_info_->is_menu_showing = true; - bookmark_drop_menu_ = new BookmarkMenuController( - profile_, page_navigator_, GetWidget(), node, start_index); + bookmark_drop_menu_ = new BookmarkMenuController(browser_->profile(), + page_navigator_, GetWidget(), node, start_index); bookmark_drop_menu_->set_observer(this); bookmark_drop_menu_->RunMenuAt(this, true); } @@ -1436,6 +1409,7 @@ void BookmarkBarView::CalculateDropLocation(const DropTargetEvent& event, bool found = false; const int other_delta_x = mirrored_x - other_bookmarked_button_->x(); + Profile* profile = browser_->profile(); if (other_bookmarked_button_->IsVisible() && other_delta_x >= 0 && other_delta_x < other_bookmarked_button_->width()) { // Mouse is over 'other' folder. @@ -1445,9 +1419,8 @@ void BookmarkBarView::CalculateDropLocation(const DropTargetEvent& event, } else if (!GetBookmarkButtonCount()) { // No bookmarks, accept the drop. location->index = 0; - int ops = data.GetFirstNode(profile_) - ? ui::DragDropTypes::DRAG_MOVE - : ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK; + int ops = data.GetFirstNode(profile) ? ui::DragDropTypes::DRAG_MOVE : + ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK; location->operation = bookmark_utils::PreferredDropOperation(event.source_operations(), ops); return; @@ -1510,18 +1483,16 @@ void BookmarkBarView::CalculateDropLocation(const DropTargetEvent& event, model_->other_node() : model_->bookmark_bar_node()->GetChild(location->index); location->operation = - bookmark_utils::BookmarkDropOperation(profile_, event, data, parent, + bookmark_utils::BookmarkDropOperation(profile, event, data, parent, parent->child_count()); if (!location->operation && !data.has_single_url() && - data.GetFirstNode(profile_) == parent) { + data.GetFirstNode(profile) == parent) { // Don't open a menu if the node being dragged is the menu to open. location->on = false; } } else { - location->operation = - bookmark_utils::BookmarkDropOperation(profile_, event, data, - model_->bookmark_bar_node(), - location->index); + location->operation = bookmark_utils::BookmarkDropOperation(profile, event, + data, model_->bookmark_bar_node(), location->index); } } @@ -1529,7 +1500,7 @@ void BookmarkBarView::WriteBookmarkDragData(const BookmarkNode* node, ui::OSExchangeData* data) { DCHECK(node && data); BookmarkNodeData drag_data(node); - drag_data.Write(profile_, data); + drag_data.Write(browser_->profile(), data); } void BookmarkBarView::StartThrobbing(const BookmarkNode* node, diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h index a3651e4..44aa561 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h @@ -70,13 +70,9 @@ class BookmarkBarView : public DetachableToolbarView, // Maximum size of buttons on the bookmark bar. static const int kMaxButtonWidth; - BookmarkBarView(Profile* profile, Browser* browser); + explicit BookmarkBarView(Browser* browser); virtual ~BookmarkBarView(); - // Resets the profile. This removes any buttons for the current profile and - // recreates the models. - void SetProfile(Profile* profile); - // Returns the current browser. Browser* browser() const { return browser_; } @@ -362,8 +358,6 @@ class BookmarkBarView : public DetachableToolbarView, NotificationRegistrar registrar_; - Profile* profile_; - // Used for opening urls. PageNavigator* page_navigator_; @@ -405,7 +399,7 @@ class BookmarkBarView : public DetachableToolbarView, ButtonSeparatorView* bookmarks_separator_view_; - // Owning browser. This is NULL during testing. + // Owning browser. Browser* browser_; // True if the owning browser is showing an infobar. diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc index 0f3cbf0..a27d3f2 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc @@ -11,12 +11,14 @@ #include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/view_event_test_base.h" +#include "chrome/test/testing_browser_process.h" #include "content/browser/tab_contents/page_navigator.h" #include "content/common/notification_service.h" #include "grit/generated_resources.h" @@ -180,10 +182,12 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { profile_->BlockUntilBookmarkModelLoaded(); profile_->GetPrefs()->SetBoolean(prefs::kShowBookmarkBar, true); + browser_.reset(new Browser(Browser::TYPE_TABBED, profile_.get())); + model_ = profile_->GetBookmarkModel(); model_->ClearStore(); - bb_view_ = new BookmarkBarView(profile_.get(), NULL); + bb_view_.reset(new BookmarkBarView(browser_.get())); bb_view_->SetPageNavigator(&navigator_); AddTestData(CreateBigMenu()); @@ -200,7 +204,7 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { // we brute force search for a size that triggers the overflow button. views::View tmp_parent; - tmp_parent.AddChildView(bb_view_); + tmp_parent.AddChildView(bb_view_.get()); bb_view_pref_ = bb_view_->GetPreferredSize(); bb_view_pref_.set_width(1000); @@ -211,12 +215,21 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { bb_view_->Layout(); } - tmp_parent.RemoveChildView(bb_view_); + tmp_parent.RemoveChildView(bb_view_.get()); ViewEventTestBase::SetUp(); } virtual void TearDown() { + // Destroy everything, then run the message loop to ensure we delete all + // Tasks and fully shut down. + browser_->CloseAllTabs(); + bb_view_.reset(); + browser_.reset(); + profile_.reset(); + MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask); + MessageLoop::current()->Run(); + ViewEventTestBase::TearDown(); BookmarkBarView::testing_ = false; views::ViewsDelegate::views_delegate = NULL; @@ -228,7 +241,7 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { } virtual views::View* CreateContentsView() { - return bb_view_; + return bb_view_.get(); } virtual gfx::Size GetPreferredSize() { return bb_view_pref_; } @@ -241,7 +254,7 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { virtual bool CreateBigMenu() { return false; } BookmarkModel* model_; - BookmarkBarView* bb_view_; + scoped_ptr<BookmarkBarView> bb_view_; TestingPageNavigator navigator_; private: @@ -275,7 +288,9 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase { } gfx::Size bb_view_pref_; + ScopedTestingBrowserProcess testing_browser_process_; scoped_ptr<TestingProfile> profile_; + scoped_ptr<Browser> browser_; BrowserThread ui_thread_; BrowserThread file_thread_; ViewsDelegateImpl views_delegate_; @@ -358,7 +373,7 @@ class BookmarkBarViewTest2 : public BookmarkBarViewEventTestBase { // true. If that changes, this code will need to find another empty space // to press the mouse on. gfx::Point mouse_loc; - views::View::ConvertPointToScreen(bb_view_, &mouse_loc); + views::View::ConvertPointToScreen(bb_view_.get(), &mouse_loc); ui_controls::SendMouseMove(0, 0); ui_controls::SendMouseEventsNotifyWhenDone( ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, @@ -1043,7 +1058,7 @@ class BookmarkBarViewTest11 : public BookmarkBarViewEventTestBase { // Now click on empty space. gfx::Point mouse_loc; - views::View::ConvertPointToScreen(bb_view_, &mouse_loc); + views::View::ConvertPointToScreen(bb_view_.get(), &mouse_loc); ui_controls::SendMouseMove(mouse_loc.x(), mouse_loc.y()); ui_controls::SendMouseEventsNotifyWhenDone( ui_controls::LEFT, ui_controls::UP | ui_controls::DOWN, diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc deleted file mode 100644 index 6c6478d..0000000 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_unittest.cc +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2011 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 "base/utf_string_conversions.h" -#include "chrome/browser/bookmarks/bookmark_model.h" -#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" -#include "chrome/test/base/browser_with_test_window_test.h" -#include "chrome/test/base/testing_profile.h" -#include "content/browser/browser_thread.h" - -typedef BrowserWithTestWindowTest BookmarkBarViewTest; - -TEST_F(BookmarkBarViewTest, SwitchProfile) { - profile()->CreateBookmarkModel(true); - profile()->BlockUntilBookmarkModelLoaded(); - - profile()->GetBookmarkModel()->AddURL( - profile()->GetBookmarkModel()->bookmark_bar_node(), - 0, - ASCIIToUTF16("blah"), - GURL("http://www.google.com")); - - BookmarkBarView bookmark_bar(profile(), browser()); - - EXPECT_EQ(1, bookmark_bar.GetBookmarkButtonCount()); - - TestingProfile profile2; - profile2.CreateBookmarkModel(true); - profile2.BlockUntilBookmarkModelLoaded(); - - bookmark_bar.SetProfile(&profile2); - - EXPECT_EQ(0, bookmark_bar.GetBookmarkButtonCount()); - - bookmark_bar.SetProfile(profile()); - EXPECT_EQ(1, bookmark_bar.GetBookmarkButtonCount()); -} diff --git a/chrome/browser/ui/views/compact_nav/compact_location_bar_view.cc b/chrome/browser/ui/views/compact_nav/compact_location_bar_view.cc index 6375c5e..98185e8 100644 --- a/chrome/browser/ui/views/compact_nav/compact_location_bar_view.cc +++ b/chrome/browser/ui/views/compact_nav/compact_location_bar_view.cc @@ -110,7 +110,6 @@ void CompactLocationBarView::Init() { // Location bar. location_bar_view_ = new LocationBarView( - browser()->profile(), browser(), browser()->toolbar_model(), clb_host(), diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 8adde3b..3085aed 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -2094,8 +2094,7 @@ bool BrowserView::MaybeShowBookmarkBar(TabContentsWrapper* contents) { if (browser_->SupportsWindowFeature(Browser::FEATURE_BOOKMARKBAR) && contents) { if (!bookmark_bar_view_.get()) { - bookmark_bar_view_.reset(new BookmarkBarView(contents->profile(), - browser_.get())); + bookmark_bar_view_.reset(new BookmarkBarView(browser_.get())); bookmark_bar_view_->set_parent_owned(false); bookmark_bar_view_->set_background( new BookmarkExtensionBackground(this, bookmark_bar_view_.get(), @@ -2103,8 +2102,6 @@ bool BrowserView::MaybeShowBookmarkBar(TabContentsWrapper* contents) { bookmark_bar_view_->SetBookmarkBarState( browser_->bookmark_bar_state(), BookmarkBar::DONT_ANIMATE_STATE_CHANGE); - } else { - bookmark_bar_view_->SetProfile(contents->profile()); } bookmark_bar_view_->SetPageNavigator(contents->tab_contents()); new_bookmark_bar_view = bookmark_bar_view_.get(); @@ -2644,7 +2641,7 @@ void BrowserView::SetToolbar(ToolbarView* toolbar) { toolbar_ = toolbar; if (toolbar) { AddChildView(toolbar_); - toolbar_->Init(browser_->profile()); + toolbar_->Init(); } } diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc index d7220b4..3123709 100644 --- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc +++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc @@ -6,6 +6,7 @@ #include "base/utf_string_conversions.h" #include "chrome/browser/content_settings/tab_specific_content_settings.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" #include "chrome/browser/ui/content_settings/content_setting_image_model.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" @@ -45,14 +46,12 @@ const double kAnimatingFraction = kOpenTimeMs * 1.0 / kMoveTimeMs; ContentSettingImageView::ContentSettingImageView( ContentSettingsType content_type, - LocationBarView* parent, - Profile* profile) + LocationBarView* parent) : ui::LinearAnimation(kMoveTimeMs, kFrameRateHz, NULL), content_setting_image_model_( ContentSettingImageModel::CreateContentSettingImageModel( content_type)), parent_(parent), - profile_(profile), bubble_(NULL), animation_in_progress_(false), text_size_(0), @@ -136,12 +135,13 @@ void ContentSettingImageView::OnMouseReleased(const views::MouseEvent& event) { gfx::Point origin(screen_bounds.origin()); views::View::ConvertPointToScreen(this, &origin); screen_bounds.set_origin(origin); + Profile* profile = parent_->browser()->profile(); ContentSettingBubbleContents* bubble_contents = new ContentSettingBubbleContents( ContentSettingBubbleModel::CreateContentSettingBubbleModel( - parent_->browser(), tab_contents, profile_, + parent_->browser(), tab_contents, profile, content_setting_image_model_->get_content_settings_type()), - profile_, tab_contents->tab_contents()); + profile, tab_contents->tab_contents()); bubble_ = Bubble::Show(GetWidget(), screen_bounds, BubbleBorder::TOP_RIGHT, bubble_contents, this); bubble_contents->set_bubble(bubble_); diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.h b/chrome/browser/ui/views/location_bar/content_setting_image_view.h index e500b90..3a948dd 100644 --- a/chrome/browser/ui/views/location_bar/content_setting_image_view.h +++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.h @@ -16,7 +16,6 @@ class ContentSettingImageModel; class Bubble; class LocationBarView; -class Profile; class TabContents; namespace views { @@ -28,11 +27,9 @@ class ContentSettingImageView : public views::ImageView, public ui::LinearAnimation { public: ContentSettingImageView(ContentSettingsType content_type, - LocationBarView* parent, - Profile* profile); + LocationBarView* parent); virtual ~ContentSettingImageView(); - void set_profile(Profile* profile) { profile_ = profile; } // |new_navigation| true if this is a new navigation, false if the tab was // just switched to. void UpdateFromTabContents(TabContents* tab_contents); @@ -61,9 +58,6 @@ class ContentSettingImageView : public views::ImageView, // The owning LocationBarView. LocationBarView* parent_; - // The currently active profile. - Profile* profile_; - // The currently shown info bubble if any. Bubble* bubble_; diff --git a/chrome/browser/ui/views/location_bar/keyword_hint_view.h b/chrome/browser/ui/views/location_bar/keyword_hint_view.h index e0a3858..0658f43 100644 --- a/chrome/browser/ui/views/location_bar/keyword_hint_view.h +++ b/chrome/browser/ui/views/location_bar/keyword_hint_view.h @@ -45,8 +45,6 @@ class KeywordHintView : public views::View { virtual gfx::Size GetMinimumSize(); virtual void Layout(); - void set_profile(Profile* profile) { profile_ = profile; } - private: views::Label* leading_label_; views::Label* trailing_label_; diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 34069d2..b9af06f 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc @@ -102,13 +102,11 @@ static const int kNormalModeBackgroundImages[] = { // LocationBarView ----------------------------------------------------------- -LocationBarView::LocationBarView(Profile* profile, - Browser* browser, +LocationBarView::LocationBarView(Browser* browser, ToolbarModel* model, Delegate* delegate, Mode mode) - : profile_(profile), - browser_(browser), + : browser_(browser), model_(model), delegate_(delegate), disposition_(CURRENT_TAB), @@ -127,7 +125,6 @@ LocationBarView::LocationBarView(Profile* profile, bubble_type_(FirstRun::MINIMAL_BUBBLE), template_url_service_(NULL), animation_offset_(0) { - DCHECK(profile_); set_id(VIEW_ID_LOCATION_BAR); set_focusable(true); @@ -135,7 +132,7 @@ LocationBarView::LocationBarView(Profile* profile, painter_.reset(new views::HorizontalPainter(kNormalModeBackgroundImages)); edit_bookmarks_enabled_.Init(prefs::kEditBookmarksEnabled, - profile_->GetPrefs(), this); + browser_->profile()->GetPrefs(), this); } LocationBarView::~LocationBarView() { @@ -173,20 +170,20 @@ void LocationBarView::Init() { // URL edit field. // View container for URL edit field. + Profile* profile = browser_->profile(); #if defined(OS_WIN) if (views::Widget::IsPureViews()) { - OmniboxViewViews* omnibox_view = - new OmniboxViewViews(this, model_, profile_, - browser_->command_updater(), mode_ == POPUP, this); + OmniboxViewViews* omnibox_view = new OmniboxViewViews(this, model_, profile, + browser_->command_updater(), mode_ == POPUP, this); omnibox_view->Init(); location_entry_.reset(omnibox_view); } else { location_entry_.reset(new OmniboxViewWin(font_, this, model_, this, - GetWidget()->GetNativeView(), profile_, browser_->command_updater(), + GetWidget()->GetNativeView(), browser_->command_updater(), mode_ == POPUP, this)); } #else - location_entry_.reset(OmniboxViewGtk::Create(this, model_, profile_, + location_entry_.reset(OmniboxViewGtk::Create(this, model_, profile, browser_->command_updater(), mode_ == POPUP, this)); #endif @@ -195,22 +192,22 @@ void LocationBarView::Init() { selected_keyword_view_ = new SelectedKeywordView( kSelectedKeywordBackgroundImages, IDR_KEYWORD_SEARCH_MAGNIFIER, - GetColor(ToolbarModel::NONE, TEXT), profile_), + GetColor(ToolbarModel::NONE, TEXT), profile); AddChildView(selected_keyword_view_); selected_keyword_view_->SetFont(font_); selected_keyword_view_->SetVisible(false); SkColor dimmed_text = GetColor(ToolbarModel::NONE, DEEMPHASIZED_TEXT); - keyword_hint_view_ = new KeywordHintView(profile_); + keyword_hint_view_ = new KeywordHintView(profile); AddChildView(keyword_hint_view_); keyword_hint_view_->SetVisible(false); keyword_hint_view_->SetFont(font_); keyword_hint_view_->SetColor(dimmed_text); for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { - ContentSettingImageView* content_blocked_view = new ContentSettingImageView( - static_cast<ContentSettingsType>(i), this, profile_); + ContentSettingImageView* content_blocked_view = + new ContentSettingImageView(static_cast<ContentSettingsType>(i), this); content_setting_views_.push_back(content_blocked_view); AddChildView(content_blocked_view); content_blocked_view->SetVisible(false); @@ -347,19 +344,6 @@ void LocationBarView::OnFocus() { this, ui::AccessibilityTypes::EVENT_FOCUS, true); } -void LocationBarView::SetProfile(Profile* profile) { - DCHECK(profile); - if (profile_ != profile) { - profile_ = profile; - location_entry_->model()->SetProfile(profile); - selected_keyword_view_->set_profile(profile); - keyword_hint_view_->set_profile(profile); - for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); - i != content_setting_views_.end(); ++i) - (*i)->set_profile(profile); - } -} - void LocationBarView::SetPreviewEnabledPageAction(ExtensionAction* page_action, bool preview_enabled) { if (mode_ != NORMAL) @@ -406,7 +390,7 @@ void LocationBarView::ShowStarBubble(const GURL& url, bool newly_bookmarked) { views::View::ConvertPointToScreen(star_view_, &origin); screen_bounds.set_origin(origin); browser::ShowBookmarkBubbleView(GetWidget(), screen_bounds, star_view_, - profile_, url, newly_bookmarked); + browser_->profile(), url, newly_bookmarked); } gfx::Point LocationBarView::GetLocationEntryOrigin() const { @@ -572,12 +556,13 @@ void LocationBarView::Layout() { if (show_selected_keyword) { if (selected_keyword_view_->keyword() != keyword) { selected_keyword_view_->SetKeyword(keyword); + Profile* profile = browser_->profile(); const TemplateURL* template_url = - TemplateURLServiceFactory::GetForProfile(profile_)-> + TemplateURLServiceFactory::GetForProfile(profile)-> GetTemplateURLForKeyword(keyword); if (template_url && template_url->IsExtensionKeyword()) { - const SkBitmap& bitmap = profile_->GetExtensionService()-> - GetOmniboxIcon(template_url->GetExtensionId()); + const SkBitmap& bitmap = profile->GetExtensionService()->GetOmniboxIcon( + template_url->GetExtensionId()); selected_keyword_view_->SetImage(bitmap); selected_keyword_view_->set_is_extension_icon(true); } else { @@ -937,7 +922,7 @@ void LocationBarView::RefreshPageActionViews() { if (mode_ != NORMAL) return; - ExtensionService* service = profile_->GetExtensionService(); + ExtensionService* service = browser_->profile()->GetExtensionService(); if (!service) return; @@ -965,7 +950,7 @@ void LocationBarView::RefreshPageActionViews() { // inserted in left-to-right order for accessibility. for (int i = page_actions.size() - 1; i >= 0; --i) { page_action_views_[i] = new PageActionWithBadgeView( - new PageActionImageView(this, profile_, page_actions[i])); + new PageActionImageView(this, page_actions[i])); page_action_views_[i]->SetVisible(false); AddChildViewAt(page_action_views_[i], GetIndexOf(star_view_)); } @@ -1021,8 +1006,8 @@ void LocationBarView::ShowFirstRunBubbleInternal( if (base::i18n::IsRTL()) origin.set_x(width() - origin.x()); views::View::ConvertPointToScreen(this, &origin); - FirstRunBubble::Show(profile_, GetWidget(), gfx::Rect(origin, gfx::Size()), - BubbleBorder::TOP_LEFT, bubble_type); + FirstRunBubble::Show(browser_->profile(), GetWidget(), + gfx::Rect(origin, gfx::Size()), BubbleBorder::TOP_LEFT, bubble_type); #endif } @@ -1115,7 +1100,7 @@ bool LocationBarView::CanStartDragForView(View* sender, void LocationBarView::ShowFirstRunBubble(FirstRun::BubbleType bubble_type) { // Wait until search engines have loaded to show the first run bubble. TemplateURLService* url_service = - TemplateURLServiceFactory::GetForProfile(profile_); + TemplateURLServiceFactory::GetForProfile(browser_->profile()); if (!url_service->loaded()) { bubble_type_ = bubble_type; template_url_service_ = url_service; diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 6542df8..6104f2e 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h @@ -41,7 +41,6 @@ class InstantController; class KeywordHintView; class LocationIconView; class PageActionWithBadgeView; -class Profile; class SelectedKeywordView; class StarView; class TabContents; @@ -118,8 +117,7 @@ class LocationBarView : public LocationBar, APP_LAUNCHER }; - LocationBarView(Profile* profile, - Browser* browser, + LocationBarView(Browser* browser, ToolbarModel* model, Delegate* delegate, Mode mode); @@ -141,8 +139,6 @@ class LocationBarView : public LocationBar, // saved state that the tab holds. void Update(const TabContents* tab_for_state_restoring); - void SetProfile(Profile* profile); - Profile* profile() const { return profile_; } Browser* browser() const { return browser_; } // Sets |preview_enabled| for the PageAction View associated with this @@ -339,9 +335,6 @@ class LocationBarView : public LocationBar, // Helper to show the first run info bubble. void ShowFirstRunBubbleInternal(FirstRun::BubbleType bubble_type); - // Current profile. Not owned by us. - Profile* profile_; - // The Autocomplete Edit field. scoped_ptr<OmniboxView> location_entry_; diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view.cc b/chrome/browser/ui/views/location_bar/page_action_image_view.cc index f8168f4..36e1761 100644 --- a/chrome/browser/ui/views/location_bar/page_action_image_view.cc +++ b/chrome/browser/ui/views/location_bar/page_action_image_view.cc @@ -19,17 +19,16 @@ #include "views/controls/menu/menu_model_adapter.h" PageActionImageView::PageActionImageView(LocationBarView* owner, - Profile* profile, ExtensionAction* page_action) : owner_(owner), - profile_(profile), page_action_(page_action), ALLOW_THIS_IN_INITIALIZER_LIST(tracker_(this)), current_tab_id_(-1), preview_enabled_(false), popup_(NULL) { - const Extension* extension = profile->GetExtensionService()-> - GetExtensionById(page_action->extension_id(), false); + const Extension* extension = owner_->browser()->profile()-> + GetExtensionService()->GetExtensionById(page_action->extension_id(), + false); DCHECK(extension); // Load all the icons declared in the manifest. This is the contents of the @@ -62,15 +61,6 @@ void PageActionImageView::ExecuteAction(int button, } if (page_action_->HasPopup(current_tab_id_)) { - // In tests, GetLastActive could return NULL, so we need to have - // a fallback. - // TODO(erikkay): Find a better way to get the Browser that this - // button is in. - Browser* browser = BrowserList::GetLastActiveWithProfile(profile_); - if (!browser) - browser = BrowserList::FindBrowserWithProfile(profile_); - DCHECK(browser); - bool popup_showing = popup_ != NULL; // Always hide the current popup. Only one popup at a time. @@ -90,15 +80,16 @@ void PageActionImageView::ExecuteAction(int button, popup_ = ExtensionPopup::Show( page_action_->GetPopupUrl(current_tab_id_), - browser, + owner_->browser(), screen_bounds, arrow_location, inspect_with_devtools, this); // ExtensionPopup::Observer } else { - ExtensionService* service = profile_->GetExtensionService(); + Profile* profile = owner_->browser()->profile(); + ExtensionService* service = profile->GetExtensionService(); service->browser_event_router()->PageActionExecuted( - profile_, page_action_->extension_id(), page_action_->id(), + profile, page_action_->extension_id(), page_action_->id(), current_tab_id_, current_url_.spec(), button); } } @@ -143,23 +134,21 @@ bool PageActionImageView::OnKeyPressed(const views::KeyEvent& event) { void PageActionImageView::ShowContextMenu(const gfx::Point& p, bool is_mouse_gesture) { - const Extension* extension = profile_->GetExtensionService()-> - GetExtensionById(page_action()->extension_id(), false); + const Extension* extension = owner_->browser()->profile()-> + GetExtensionService()->GetExtensionById(page_action()->extension_id(), + false); if (!extension->ShowConfigureContextMenus()) return; - Browser* browser = BrowserView::GetBrowserViewForNativeWindow( - platform_util::GetTopLevel(GetWidget()->GetNativeView()))->browser(); - scoped_refptr<ExtensionContextMenuModel> context_menu_model( - new ExtensionContextMenuModel(extension, browser, this)); + new ExtensionContextMenuModel(extension, owner_->browser(), this)); views::MenuModelAdapter menu_model_adapter(context_menu_model.get()); views::MenuItemView menu(&menu_model_adapter); menu_model_adapter.BuildMenu(&menu); gfx::Point screen_loc; views::View::ConvertPointToScreen(this, &screen_loc); - menu.RunMenuAt(GetWidget(), NULL, gfx::Rect(screen_loc ,size()), + menu.RunMenuAt(GetWidget(), NULL, gfx::Rect(screen_loc, size()), views::MenuItemView::TOPLEFT, true); } diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view.h b/chrome/browser/ui/views/location_bar/page_action_image_view.h index a594f11..5b045b2 100644 --- a/chrome/browser/ui/views/location_bar/page_action_image_view.h +++ b/chrome/browser/ui/views/location_bar/page_action_image_view.h @@ -25,7 +25,6 @@ class PageActionImageView : public views::ImageView, public ExtensionPopup::Observer { public: PageActionImageView(LocationBarView* owner, - Profile* profile, ExtensionAction* page_action); virtual ~PageActionImageView(); @@ -71,9 +70,6 @@ class PageActionImageView : public views::ImageView, // The location bar view that owns us. LocationBarView* owner_; - // The current profile (not owned by us). - Profile* profile_; - // The PageAction that this view represents. The PageAction is not owned by // us, it resides in the extension of this particular profile. ExtensionAction* page_action_; diff --git a/chrome/browser/ui/views/location_bar/selected_keyword_view.h b/chrome/browser/ui/views/location_bar/selected_keyword_view.h index 2e0c530..d4b714a 100644 --- a/chrome/browser/ui/views/location_bar/selected_keyword_view.h +++ b/chrome/browser/ui/views/location_bar/selected_keyword_view.h @@ -36,8 +36,6 @@ class SelectedKeywordView : public IconLabelBubbleView { void SetKeyword(const string16& keyword); string16 keyword() const { return keyword_; } - void set_profile(Profile* profile) { profile_ = profile; } - private: // The keyword we're showing. If empty, no keyword is selected. // NOTE: we don't cache the TemplateURL as it is possible for it to get diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index 4477bb0..925ae2a 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc @@ -12,8 +12,6 @@ #include "chrome/browser/autocomplete/autocomplete_match.h" #include "chrome/browser/autocomplete/autocomplete_popup_model.h" #include "chrome/browser/command_updater.h" -#include "chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h" -#include "chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/common/chrome_notification_types.h" #include "content/browser/tab_contents/tab_contents.h" @@ -32,6 +30,12 @@ #include "views/controls/textfield/textfield.h" #include "views/layout/fill_layout.h" +#if defined(TOUCH_UI) +#include "chrome/browser/ui/views/autocomplete/touch_autocomplete_popup_contents_view.h" +#else +#include "chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h" +#endif + namespace { // Textfield for autocomplete that intercepts events that are necessary @@ -696,6 +700,6 @@ AutocompletePopupView* OmniboxViewViews::CreatePopupView( #else typedef AutocompletePopupContentsView AutocompleteContentsView; #endif - return new AutocompleteContentsView( - gfx::Font(), this, model_.get(), profile, location_bar); + return new AutocompleteContentsView(gfx::Font(), this, model_.get(), + location_bar); } diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc index 3d5f4ab..d2a97b8 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc @@ -28,6 +28,7 @@ #include "chrome/browser/command_updater.h" #include "chrome/browser/net/url_fixer_upper.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/common/chrome_notification_types.h" #include "content/browser/tab_contents/tab_contents.h" @@ -395,13 +396,13 @@ OmniboxViewWin::OmniboxViewWin(const gfx::Font& font, ToolbarModel* toolbar_model, LocationBarView* parent_view, HWND hwnd, - Profile* profile, CommandUpdater* command_updater, bool popup_window_mode, views::View* location_bar) - : model_(new AutocompleteEditModel(this, controller, profile)), + : model_(new AutocompleteEditModel(this, controller, + parent_view->browser()->profile())), popup_view_(new AutocompletePopupContentsView(font, this, model_.get(), - profile, location_bar)), + location_bar)), controller_(controller), parent_view_(parent_view), toolbar_model_(toolbar_model), diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_win.h b/chrome/browser/ui/views/omnibox/omnibox_view_win.h index dae9139..7542173 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_win.h +++ b/chrome/browser/ui/views/omnibox/omnibox_view_win.h @@ -29,7 +29,6 @@ class AutocompleteEditController; class AutocompleteEditModel; class AutocompletePopupView; class LocationBarView; -class Profile; class TabContents; namespace views { @@ -66,7 +65,6 @@ class OmniboxViewWin ToolbarModel* toolbar_model, LocationBarView* parent_view, HWND hwnd, - Profile* profile, CommandUpdater* command_updater, bool popup_window_mode, views::View* location_bar); diff --git a/chrome/browser/ui/views/toolbar_view.cc b/chrome/browser/ui/views/toolbar_view.cc index e9159b6..1452c96 100644 --- a/chrome/browser/ui/views/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar_view.cc @@ -87,7 +87,6 @@ ToolbarView::ToolbarView(Browser* browser) location_bar_(NULL), browser_actions_(NULL), app_menu_(NULL), - profile_(NULL), browser_(browser), profiles_menu_contents_(NULL) { set_id(VIEW_ID_TOOLBAR); @@ -117,7 +116,7 @@ ToolbarView::~ToolbarView() { // already gone. } -void ToolbarView::Init(Profile* profile) { +void ToolbarView::Init() { back_menu_model_.reset(new BackForwardMenuModel( browser_, BackForwardMenuModel::BACKWARD_MENU)); forward_menu_model_.reset(new BackForwardMenuModel( @@ -144,8 +143,8 @@ void ToolbarView::Init(Profile* profile) { forward_->set_id(VIEW_ID_FORWARD_BUTTON); // Have to create this before |reload_| as |reload_|'s constructor needs it. - location_bar_ = new LocationBarView(profile, browser_, - model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? + location_bar_ = new LocationBarView(browser_, model_, this, + (display_mode_ == DISPLAYMODE_LOCATION) ? LocationBarView::POPUP : LocationBarView::NORMAL); reload_ = new ReloadButton(location_bar_, browser_); @@ -197,11 +196,10 @@ void ToolbarView::Init(Profile* profile) { AddChildView(app_menu_); location_bar_->Init(); - show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); + show_home_button_.Init(prefs::kShowHomeButton, + browser_->profile()->GetPrefs(), this); browser_actions_->Init(); - SetProfile(profile); - // Accessibility specific tooltip text. if (BrowserAccessibilityState::GetInstance()->IsAccessibleBrowser()) { back_->SetTooltipText( @@ -211,13 +209,6 @@ void ToolbarView::Init(Profile* profile) { } } -void ToolbarView::SetProfile(Profile* profile) { - if (profile != profile_) { - profile_ = profile; - location_bar_->SetProfile(profile); - } -} - void ToolbarView::Update(TabContents* tab, bool should_restore_state) { if (location_bar_) location_bar_->Update(should_restore_state ? tab : NULL); diff --git a/chrome/browser/ui/views/toolbar_view.h b/chrome/browser/ui/views/toolbar_view.h index 4874dfb..fd0a83c 100644 --- a/chrome/browser/ui/views/toolbar_view.h +++ b/chrome/browser/ui/views/toolbar_view.h @@ -46,11 +46,7 @@ class ToolbarView : public AccessiblePaneView, virtual ~ToolbarView(); // Create the contents of the Browser Toolbar - void Init(Profile* profile); - - // Sets the profile which is active on the currently-active tab. - void SetProfile(Profile* profile); - Profile* profile() { return profile_; } + void Init(); // Updates the toolbar (and transitively the location bar) with the states of // the specified |tab|. If |should_restore_state| is true, we're switching @@ -191,7 +187,6 @@ class ToolbarView : public AccessiblePaneView, LocationBarView* location_bar_; BrowserActionsContainer* browser_actions_; views::MenuButton* app_menu_; - Profile* profile_; Browser* browser_; // Contents of the profiles menu to populate with profile names. |