diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-30 19:02:16 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-30 19:02:16 +0000 |
commit | 075b204c64210aa019365ed65f3437e2b86fbc74 (patch) | |
tree | b524a3faa92e6703b8f517b5ac4eccee874bfd4e /chrome | |
parent | 928ca1d2c1f13f57b02b62576b0814b3337bedbd (diff) | |
download | chromium_src-075b204c64210aa019365ed65f3437e2b86fbc74.zip chromium_src-075b204c64210aa019365ed65f3437e2b86fbc74.tar.gz chromium_src-075b204c64210aa019365ed65f3437e2b86fbc74.tar.bz2 |
Converts usage of GetBrowserViewForNativeWindow to
GetBrowserViewForBrowser. There is one place still using
GetBrowserViewForNativeWindow and that's the tab dragging code which
needs to use it.
BUG=none
TEST=none
R=asargent, pinkerton, erg, pkasting, ben
Review URL: http://codereview.chromium.org/8068020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103514 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
29 files changed, 132 insertions, 110 deletions
diff --git a/chrome/browser/accessibility/browser_views_accessibility_browsertest.cc b/chrome/browser/accessibility/browser_views_accessibility_browsertest.cc index 496b2fc..db4d6fc 100644 --- a/chrome/browser/accessibility/browser_views_accessibility_browsertest.cc +++ b/chrome/browser/accessibility/browser_views_accessibility_browsertest.cc @@ -55,8 +55,7 @@ class BrowserViewsAccessibilityTest : public InProcessBrowserTest { // Retrieve an instance of BrowserView BrowserView* GetBrowserView() { - return BrowserView::GetBrowserViewForNativeWindow( - browser()->window()->GetNativeHandle()); + return BrowserView::GetBrowserViewForBrowser(browser()); } // Retrieves and initializes an instance of ToolbarView. diff --git a/chrome/browser/browser_focus_uitest.cc b/chrome/browser/browser_focus_uitest.cc index 8482822..91682ac 100644 --- a/chrome/browser/browser_focus_uitest.cc +++ b/chrome/browser/browser_focus_uitest.cc @@ -249,7 +249,7 @@ IN_PROC_BROWSER_TEST_F(BrowserFocusTest, FLAKY_BrowsersRememberFocus) { gfx::NativeWindow window2 = browser2->window()->GetNativeHandle(); BrowserView* browser_view2 = - BrowserView::GetBrowserViewForNativeWindow(window2); + BrowserView::GetBrowserViewForBrowser(browser2); ASSERT_TRUE(browser_view2); views::Widget* widget2 = views::Widget::GetWidgetForNativeWindow(window2); ASSERT_TRUE(widget2); diff --git a/chrome/browser/extensions/extension_infobar_delegate.cc b/chrome/browser/extensions/extension_infobar_delegate.cc index fbbf053..273589c 100644 --- a/chrome/browser/extensions/extension_infobar_delegate.cc +++ b/chrome/browser/extensions/extension_infobar_delegate.cc @@ -22,6 +22,7 @@ ExtensionInfoBarDelegate::ExtensionInfoBarDelegate( const GURL& url, int height) : InfoBarDelegate(infobar_helper), + browser_(browser), observer_(NULL), extension_(extension), closing_(false) { diff --git a/chrome/browser/extensions/extension_infobar_delegate.h b/chrome/browser/extensions/extension_infobar_delegate.h index 2af5881..225e92d 100644 --- a/chrome/browser/extensions/extension_infobar_delegate.h +++ b/chrome/browser/extensions/extension_infobar_delegate.h @@ -60,6 +60,8 @@ class ExtensionInfoBarDelegate : public InfoBarDelegate, const NotificationSource& source, const NotificationDetails& details) OVERRIDE; + Browser* browser_; + // The extension host we are showing the InfoBar for. The delegate needs to // own this since the InfoBar gets deleted and recreated when you switch tabs // and come back (and we don't want the user's interaction with the InfoBar to diff --git a/chrome/browser/extensions/extension_input_api.cc b/chrome/browser/extensions/extension_input_api.cc index 0f9b78b..2ad764a 100644 --- a/chrome/browser/extensions/extension_input_api.cc +++ b/chrome/browser/extensions/extension_input_api.cc @@ -94,8 +94,7 @@ views::Widget* GetTopLevelWidget(Browser* browser) { if (!window) return NULL; - BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( - window->GetNativeHandle()); + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); return browser_view ? browser_view->GetWidget() : NULL; } diff --git a/chrome/browser/external_tab_container_win.cc b/chrome/browser/external_tab_container_win.cc index 93cb2b7..7b8d825 100644 --- a/chrome/browser/external_tab_container_win.cc +++ b/chrome/browser/external_tab_container_win.cc @@ -20,7 +20,6 @@ #include "chrome/browser/history/history_types.h" #include "chrome/browser/history/history_tab_helper.h" #include "chrome/browser/infobars/infobar_tab_helper.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/app_modal_dialogs/message_box_handler.h" #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h" diff --git a/chrome/browser/speech/speech_input_bubble_views.cc b/chrome/browser/speech/speech_input_bubble_views.cc index 1032803..293d850 100644 --- a/chrome/browser/speech/speech_input_bubble_views.cc +++ b/chrome/browser/speech/speech_input_bubble_views.cc @@ -351,8 +351,7 @@ void SpeechInputBubbleImpl::Show() { Profile::FromBrowserContext(tab_contents()->browser_context()); Browser* browser = Browser::GetOrCreateTabbedBrowser(profile); BrowserView* browser_view = - BrowserView::GetBrowserViewForNativeWindow( - browser->window()->GetNativeHandle()); + BrowserView::GetBrowserViewForBrowser(browser); gfx::Point point; if (base::i18n::IsRTL()) { int width = browser_view->toolbar()->location_bar()->width(); diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc index 299c660..60b2554 100644 --- a/chrome/browser/tab_contents/render_view_context_menu.cc +++ b/chrome/browser/tab_contents/render_view_context_menu.cc @@ -24,7 +24,6 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/google/google_util.h" #include "chrome/browser/net/browser_url_util.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prefs/pref_service.h" diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index 39d914a..af78b51 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm @@ -12,7 +12,6 @@ #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/download/download_shelf.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sidebar/sidebar_container.h" @@ -29,6 +28,7 @@ #import "chrome/browser/ui/cocoa/html_dialog_window_controller.h" #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" #import "chrome/browser/ui/cocoa/nsmenuitem_additions.h" +#include "chrome/browser/ui/cocoa/page_info_window.h" #include "chrome/browser/ui/cocoa/repost_form_warning_mac.h" #include "chrome/browser/ui/cocoa/restart_browser.h" #include "chrome/browser/ui/cocoa/status_bubble_mac.h" diff --git a/chrome/browser/ui/cocoa/page_info_window.h b/chrome/browser/ui/cocoa/page_info_window.h new file mode 100644 index 0000000..ab75196 --- /dev/null +++ b/chrome/browser/ui/cocoa/page_info_window.h @@ -0,0 +1,25 @@ +// 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. + +#ifndef CHROME_BROWSER_UI_COCOA_PAGE_INFO_WINDOW_H_ +#define CHROME_BROWSER_UI_COCOA_PAGE_INFO_WINDOW_H_ +#pragma once + +#include "content/browser/tab_contents/navigation_entry.h" +#include "ui/gfx/native_widget_types.h" + +class Profile; +class GURL; + +namespace browser { + +void ShowPageInfoBubble(gfx::NativeWindow parent, + Profile* profile, + const GURL& url, + const NavigationEntry::SSLStatus& ssl, + bool show_history); + +} // namespace browser + +#endif // CHROME_BROWSER_UI_COCOA_PAGE_INFO_WINDOW_H_ diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 3ff9296..21970a9 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -27,7 +27,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/debugger/devtools_window.h" #include "chrome/browser/download/download_item_model.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/browser/profiles/profile.h" @@ -60,6 +59,7 @@ #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h" #include "chrome/browser/ui/gtk/location_bar_view_gtk.h" #include "chrome/browser/ui/gtk/nine_box.h" +#include "chrome/browser/ui/gtk/page_info_window.h" #include "chrome/browser/ui/gtk/reload_button_gtk.h" #include "chrome/browser/ui/gtk/repost_form_warning_gtk.h" #include "chrome/browser/ui/gtk/status_bubble_gtk.h" diff --git a/chrome/browser/ui/gtk/page_info_bubble_gtk.cc b/chrome/browser/ui/gtk/page_info_bubble_gtk.cc index bc4cda7..1b16880 100644 --- a/chrome/browser/ui/gtk/page_info_bubble_gtk.cc +++ b/chrome/browser/ui/gtk/page_info_bubble_gtk.cc @@ -12,7 +12,6 @@ #include "chrome/browser/google/google_util.h" #include "chrome/browser/page_info_model.h" #include "chrome/browser/page_info_model_observer.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/gtk/browser_toolbar_gtk.h" #include "chrome/browser/ui/gtk/browser_window_gtk.h" diff --git a/chrome/browser/page_info_window.h b/chrome/browser/ui/gtk/page_info_window.h index 5aaceb3..50317ef 100644 --- a/chrome/browser/page_info_window.h +++ b/chrome/browser/ui/gtk/page_info_window.h @@ -1,9 +1,9 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// 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. -#ifndef CHROME_BROWSER_PAGE_INFO_WINDOW_H_ -#define CHROME_BROWSER_PAGE_INFO_WINDOW_H_ +#ifndef CHROME_BROWSER_UI_GTK_PAGE_INFO_WINDOW_H_ +#define CHROME_BROWSER_UI_GTK_PAGE_INFO_WINDOW_H_ #pragma once #include "content/browser/tab_contents/navigation_entry.h" @@ -22,4 +22,4 @@ void ShowPageInfoBubble(gfx::NativeWindow parent, } // namespace browser -#endif // CHROME_BROWSER_PAGE_INFO_WINDOW_H_ +#endif // CHROME_BROWSER_UI_GTK_PAGE_INFO_WINDOW_H_ diff --git a/chrome/browser/ui/views/avatar_menu_button.cc b/chrome/browser/ui/views/avatar_menu_button.cc index 7afeebc..d92db11 100644 --- a/chrome/browser/ui/views/avatar_menu_button.cc +++ b/chrome/browser/ui/views/avatar_menu_button.cc @@ -131,9 +131,7 @@ void AvatarMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { if (!has_menu_) return; - BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( - browser_->window()->GetNativeHandle()); - + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); gfx::Point origin; views::View::ConvertPointToScreen(this, &origin); gfx::Rect bounds(0, 0, width(), height()); diff --git a/chrome/browser/ui/views/browser_bubble.cc b/chrome/browser/ui/views/browser_bubble.cc index 95075a09..5cafa9a 100644 --- a/chrome/browser/ui/views/browser_bubble.cc +++ b/chrome/browser/ui/views/browser_bubble.cc @@ -4,39 +4,24 @@ #include "chrome/browser/ui/views/browser_bubble.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "views/widget/widget.h" -namespace { - -BrowserBubbleHost* GetBubbleHostFromFrame(views::Widget* frame) { - if (!frame) - return NULL; - - BrowserBubbleHost* bubble_host = NULL; - views::Widget* window = frame->GetTopLevelWidget(); - if (window) { - bubble_host = BrowserView::GetBrowserViewForNativeWindow( - window->GetNativeWindow()); - DCHECK(bubble_host); - } - - return bubble_host; -} - -} // namespace - -BrowserBubble::BrowserBubble(views::View* view, - views::Widget* frame, +BrowserBubble::BrowserBubble(Browser* browser, + views::View* view, const gfx::Rect& relative_to, views::BubbleBorder::ArrowLocation arrow_location) - : frame_(frame), + : frame_(NULL), view_(view), relative_to_(relative_to), arrow_location_(arrow_location), delegate_(NULL), attached_(false), - bubble_host_(GetBubbleHostFromFrame(frame)) { + bubble_host_(NULL) { + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); + frame_ = browser_view->GetWidget(); + bubble_host_ = browser_view; // Keep relative_to_ in frame-relative coordinates to aid in drag // positioning. gfx::Point origin = relative_to_.origin(); diff --git a/chrome/browser/ui/views/browser_bubble.h b/chrome/browser/ui/views/browser_bubble.h index 58bbc54..a28f221 100644 --- a/chrome/browser/ui/views/browser_bubble.h +++ b/chrome/browser/ui/views/browser_bubble.h @@ -10,6 +10,7 @@ #include "views/view.h" #include "views/widget/widget.h" +class Browser; class BrowserBubbleHost; // A class for creating a floating window that is "attached" to a particular @@ -39,14 +40,14 @@ class BrowserBubble { }; // Note that the bubble will size itself to the preferred size of |view| plus - // insets of bubble border. |view| is the embedded view, |frame| is widget - // that the bubble is being positioned relative to, |relative_to| is the - // location that the bubble is showing relative to in screen coordinates, + // insets of bubble border. |view| is the embedded view, |browser| is the + // browser that the bubble is being positioned relative to, |relative_to| is + // the location that the bubble is showing relative to in screen coordinates, // e.g. if the buuble is showing for a toolbar button, |relative_to| usually // would be the bounds of the toolbar button in screen coordiates, // |arrow_location| is the location where the arrow should on the bubble. - BrowserBubble(views::View* view, - views::Widget* frame, + BrowserBubble(Browser* browser, + views::View* view, const gfx::Rect& relative_to, views::BubbleBorder::ArrowLocation arrow_location); virtual ~BrowserBubble(); diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble.cc index 11258bc..31d4cc4 100644 --- a/chrome/browser/ui/views/extensions/extension_installed_bubble.cc +++ b/chrome/browser/ui/views/extensions/extension_installed_bubble.cc @@ -332,8 +332,7 @@ void ExtensionInstalledBubble::Observe(int type, } void ExtensionInstalledBubble::ShowInternal() { - BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( - browser_->window()->GetNativeHandle()); + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); const views::View* reference_view = NULL; if (type_ == APP) { @@ -413,8 +412,7 @@ void ExtensionInstalledBubble::ShowInternal() { void ExtensionInstalledBubble::BubbleClosing(Bubble* bubble, bool closed_by_escape) { if (extension_ && type_ == PAGE_ACTION) { - BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( - browser_->window()->GetNativeHandle()); + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_); browser_view->GetLocationBarView()->SetPreviewEnabledPageAction( extension_->page_action(), false); // preview_enabled diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc index 28ceec6..123345a 100644 --- a/chrome/browser/ui/views/extensions/extension_popup.cc +++ b/chrome/browser/ui/views/extensions/extension_popup.cc @@ -12,7 +12,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" -#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension.h" #include "content/browser/renderer_host/render_view_host.h" @@ -39,14 +38,14 @@ const int ExtensionPopup::kMaxWidth = 800; const int ExtensionPopup::kMaxHeight = 600; ExtensionPopup::ExtensionPopup( + Browser* browser, ExtensionHost* host, - views::Widget* frame, const gfx::Rect& relative_to, views::BubbleBorder::ArrowLocation arrow_location, bool inspect_with_devtools, Observer* observer) - : BrowserBubble(host->view(), - frame, + : BrowserBubble(browser, + host->view(), relative_to, arrow_location), relative_to_(relative_to), @@ -187,9 +186,7 @@ ExtensionPopup* ExtensionPopup::Show( return NULL; ExtensionHost* host = manager->CreatePopupHost(url, browser); - views::Widget* frame = BrowserView::GetBrowserViewForNativeWindow( - browser->window()->GetNativeHandle())->GetWidget(); - ExtensionPopup* popup = new ExtensionPopup(host, frame, relative_to, + ExtensionPopup* popup = new ExtensionPopup(browser, host, relative_to, arrow_location, inspect_with_devtools, observer); diff --git a/chrome/browser/ui/views/extensions/extension_popup.h b/chrome/browser/ui/views/extensions/extension_popup.h index c374d7f..c1a9412 100644 --- a/chrome/browser/ui/views/extensions/extension_popup.h +++ b/chrome/browser/ui/views/extensions/extension_popup.h @@ -53,7 +53,8 @@ class ExtensionPopup : public BrowserBubble, // devtools window for it. // The actual display of the popup is delayed until the page contents // finish loading in order to minimize UI flashing and resizing. - static ExtensionPopup* Show(const GURL& url, Browser* browser, + static ExtensionPopup* Show(const GURL& url, + Browser* browser, const gfx::Rect& relative_to, views::BubbleBorder::ArrowLocation arrow_location, bool inspect_with_devtools, @@ -98,8 +99,8 @@ class ExtensionPopup : public BrowserBubble, static const int kMaxHeight; private: - ExtensionPopup(ExtensionHost* host, - views::Widget* frame, + ExtensionPopup(Browser* browser, + ExtensionHost* host, const gfx::Rect& relative_to, views::BubbleBorder::ArrowLocation arrow_location, bool inspect_with_devtools, diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index b49c1dc..c578ed2 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -28,7 +28,6 @@ #include "chrome/browser/extensions/extension_tts_api.h" #include "chrome/browser/instant/instant_controller.h" #include "chrome/browser/ntp_background_util.h" -#include "chrome/browser/page_info_window.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_info_cache.h" @@ -56,6 +55,7 @@ #include "chrome/browser/ui/views/fullscreen_exit_bubble_views.h" #include "chrome/browser/ui/views/infobars/infobar_container_view.h" #include "chrome/browser/ui/views/location_bar/location_icon_view.h" +#include "chrome/browser/ui/views/page_info_window.h" #include "chrome/browser/ui/views/status_bubble_views.h" #include "chrome/browser/ui/views/tab_contents/tab_contents_container.h" #include "chrome/browser/ui/views/tabs/browser_tab_strip_controller.h" @@ -383,37 +383,19 @@ BrowserView::~BrowserView() { browser_.reset(); } +// Tab dragging code on windows needs this. +#if defined(OS_WIN) && !defined(USE_AURA) // static BrowserView* BrowserView::GetBrowserViewForNativeWindow( gfx::NativeWindow window) { -#if defined(USE_AURA) - // TODO(beng): - NOTIMPLEMENTED(); -#elif defined(OS_WIN) - if (IsWindow(window)) { - return reinterpret_cast<BrowserView*>( - ui::ViewProp::GetValue(window, kBrowserViewKey)); - } -#else - BrowserView* browser_view = NULL; - if (window) { - browser_view = static_cast<BrowserView*>( - g_object_get_data(G_OBJECT(window), kBrowserViewKey)); - -#if defined(TOUCH_UI) - if (!browser_view) { - // With views-desktop, we cannot determine the BrowserView from the - // NativeWindow. So do the next best thing, and assume the last active - // BrowserView is what we want. - Browser* browser = BrowserList::GetLastActive(); - if (browser && !browser->is_type_popup() && !browser->is_type_panel()) - browser_view = reinterpret_cast<BrowserView*>(browser->window()); - } -#endif - } - return browser_view; + return IsWindow(window) ? reinterpret_cast<BrowserView*>( + ui::ViewProp::GetValue(window, kBrowserViewKey)) : NULL; +} #endif - return NULL; + +// static +BrowserView* BrowserView::GetBrowserViewForBrowser(Browser* browser) { + return static_cast<BrowserView*>(browser->window()); } gfx::Rect BrowserView::GetToolbarBounds() const { @@ -1172,9 +1154,7 @@ void BrowserView::ShowPageInfo(Profile* profile, const GURL& url, const NavigationEntry::SSLStatus& ssl, bool show_history) { - gfx::NativeWindow parent = GetWidget()->GetNativeWindow(); - - browser::ShowPageInfoBubble(parent, profile, url, ssl, show_history); + browser::ShowPageInfoBubble(this, profile, url, ssl, show_history); } void BrowserView::ShowAppMenu() { diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index 4d75f07..26891a0 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h @@ -95,10 +95,18 @@ class BrowserView : public BrowserBubbleHost, void set_frame(BrowserFrame* frame) { frame_ = frame; } BrowserFrame* frame() const { return frame_; } +#if defined(OS_WIN) && !defined(USE_AURA) // Returns a pointer to the BrowserView* interface implementation (an // instance of this object, typically) for a given native window, or NULL if // there is no such association. + // + // Don't use this unless you only have a NativeWindow. In nearly all + // situations plumb through browser and use it. static BrowserView* GetBrowserViewForNativeWindow(gfx::NativeWindow window); +#endif + + // Returns the BrowserView used for the specified Browser. + static BrowserView* GetBrowserViewForBrowser(Browser* browser); // Returns a Browser instance of this view. Browser* browser() const { return browser_.get(); } diff --git a/chrome/browser/ui/views/global_error_bubble_view.cc b/chrome/browser/ui/views/global_error_bubble_view.cc index 2b51886..ff9be84 100644 --- a/chrome/browser/ui/views/global_error_bubble_view.cc +++ b/chrome/browser/ui/views/global_error_bubble_view.cc @@ -145,8 +145,7 @@ bool GlobalErrorBubbleView::FadeInOnShow() { } void GlobalError::ShowBubbleView(Browser* browser, GlobalError* error) { - BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( - browser->window()->GetNativeHandle()); + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); views::View* wrench_button = browser_view->toolbar()->app_menu(); gfx::Point origin; diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc index 22b3342..16fcf9c 100644 --- a/chrome/browser/ui/views/infobars/extension_infobar.cc +++ b/chrome/browser/ui/views/infobars/extension_infobar.cc @@ -23,7 +23,7 @@ // ExtensionInfoBarDelegate ---------------------------------------------------- InfoBar* ExtensionInfoBarDelegate::CreateInfoBar(InfoBarTabHelper* owner) { - return new ExtensionInfoBar(owner, this); + return new ExtensionInfoBar(browser_, owner, this); } // ExtensionInfoBar ------------------------------------------------------------ @@ -33,10 +33,12 @@ namespace { const int kMenuHorizontalMargin = 1; } // namespace -ExtensionInfoBar::ExtensionInfoBar(InfoBarTabHelper* owner, +ExtensionInfoBar::ExtensionInfoBar(Browser* browser, + InfoBarTabHelper* owner, ExtensionInfoBarDelegate* delegate) : InfoBarView(owner, delegate), delegate_(delegate), + browser_(browser), menu_(NULL), ALLOW_THIS_IN_INITIALIZER_LIST(tracker_(this)) { delegate->set_observer(this); @@ -143,11 +145,8 @@ void ExtensionInfoBar::RunMenu(View* source, const gfx::Point& pt) { if (!extension->ShowConfigureContextMenus()) return; - Browser* browser = BrowserView::GetBrowserViewForNativeWindow( - platform_util::GetTopLevel(source->GetWidget()->GetNativeView()))-> - browser(); scoped_refptr<ExtensionContextMenuModel> options_menu_contents = - new ExtensionContextMenuModel(extension, browser, NULL); + new ExtensionContextMenuModel(extension, browser_, NULL); DCHECK_EQ(source, menu_); RunMenuAt(options_menu_contents.get(), menu_, views::MenuItemView::TOPLEFT); } diff --git a/chrome/browser/ui/views/infobars/extension_infobar.h b/chrome/browser/ui/views/infobars/extension_infobar.h index 13abb4b..f0052d2 100644 --- a/chrome/browser/ui/views/infobars/extension_infobar.h +++ b/chrome/browser/ui/views/infobars/extension_infobar.h @@ -11,6 +11,7 @@ #include "chrome/browser/ui/views/infobars/infobar_view.h" #include "views/controls/menu/view_menu_delegate.h" +class Browser; class TabContentsWrapper; namespace views { class MenuButton; @@ -21,7 +22,8 @@ class ExtensionInfoBar : public InfoBarView, public ExtensionInfoBarDelegate::DelegateObserver, public views::ViewMenuDelegate { public: - ExtensionInfoBar(InfoBarTabHelper* owner, + ExtensionInfoBar(Browser* browser, + InfoBarTabHelper* owner, ExtensionInfoBarDelegate* delegate); private: @@ -52,6 +54,8 @@ class ExtensionInfoBar : public InfoBarView, // functionality). For now, almost everyone should use GetDelegate() instead. InfoBarDelegate* delegate_; + Browser* browser_; + // The dropdown menu for accessing the contextual extension actions. views::MenuButton* menu_; diff --git a/chrome/browser/ui/views/page_info_bubble_view.cc b/chrome/browser/ui/views/page_info_bubble_view.cc index d8fbad7..14124c1 100644 --- a/chrome/browser/ui/views/page_info_bubble_view.cc +++ b/chrome/browser/ui/views/page_info_bubble_view.cc @@ -474,14 +474,12 @@ gfx::Size Section::LayoutItems(bool compute_bounds_only, int width) { namespace browser { -void ShowPageInfoBubble(gfx::NativeWindow parent, +void ShowPageInfoBubble(BrowserView* browser_view, Profile* profile, const GURL& url, const NavigationEntry::SSLStatus& ssl, bool show_history) { // Find where to point the bubble at. - BrowserView* browser_view = - BrowserView::GetBrowserViewForNativeWindow(parent); gfx::Point point; if (base::i18n::IsRTL()) { int width = browser_view->toolbar()->location_bar()->width(); @@ -496,7 +494,8 @@ void ShowPageInfoBubble(gfx::NativeWindow parent, // Show the bubble. If the bubble already exist - it will be closed first. PageInfoBubbleView* page_info_bubble = - new PageInfoBubbleView(parent, profile, url, ssl, show_history); + new PageInfoBubbleView(browser_view->GetNativeHandle(), + profile, url, ssl, show_history); Bubble* bubble = Bubble::Show(browser_view->GetWidget(), bounds, views::BubbleBorder::TOP_LEFT, diff --git a/chrome/browser/ui/views/page_info_window.h b/chrome/browser/ui/views/page_info_window.h new file mode 100644 index 0000000..15881d7 --- /dev/null +++ b/chrome/browser/ui/views/page_info_window.h @@ -0,0 +1,25 @@ +// 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. + +#ifndef CHROME_BROWSER_UI_VIEWS_PAGE_INFO_WINDOW_H_ +#define CHROME_BROWSER_UI_VIEWS_PAGE_INFO_WINDOW_H_ +#pragma once + +#include "content/browser/tab_contents/navigation_entry.h" + +class BrowserView; +class Profile; +class GURL; + +namespace browser { + +void ShowPageInfoBubble(BrowserView* browser_view, + Profile* profile, + const GURL& url, + const NavigationEntry::SSLStatus& ssl, + bool show_history); + +} // namespace browser + +#endif // CHROME_BROWSER_UI_VIEWS_PAGE_INFO_WINDOW_H_ diff --git a/chrome/browser/ui/views/tabs/dragged_tab_controller.cc b/chrome/browser/ui/views/tabs/dragged_tab_controller.cc index ab7e994..ab44dd5 100644 --- a/chrome/browser/ui/views/tabs/dragged_tab_controller.cc +++ b/chrome/browser/ui/views/tabs/dragged_tab_controller.cc @@ -649,14 +649,14 @@ void DraggedTabController::ContinueDragging() { // guaranteed to be correct regardless of monitor config. gfx::Point screen_point = GetCursorScreenPoint(); -#if defined(OS_LINUX) - // We don't allow detaching in chrome os. - BaseTabStrip* target_tabstrip = source_tabstrip_; -#else +#if defined(OS_WIN) && !defined(USE_AURA) + // Currently only allowed on windows (and not aura). // Determine whether or not we have dragged over a compatible TabStrip in // another browser window. If we have, we should attach to it and start // dragging within it. BaseTabStrip* target_tabstrip = GetTabStripForPoint(screen_point); +#else + BaseTabStrip* target_tabstrip = source_tabstrip_; #endif if (target_tabstrip != attached_tabstrip_) { // Make sure we're fully detached from whatever TabStrip we're attached to @@ -774,6 +774,7 @@ DockInfo DraggedTabController::GetDockInfoAtPoint( return info; } +#if defined(OS_WIN) && !defined(USE_AURA) BaseTabStrip* DraggedTabController::GetTabStripForPoint( const gfx::Point& screen_point) { gfx::NativeView dragged_view = NULL; @@ -803,6 +804,7 @@ BaseTabStrip* DraggedTabController::GetTabStripForPoint( return NULL; return GetTabStripIfItContains(other_tabstrip, screen_point); } +#endif BaseTabStrip* DraggedTabController::GetTabStripIfItContains( BaseTabStrip* tabstrip, diff --git a/chrome/browser/ui/views/tabs/dragged_tab_controller.h b/chrome/browser/ui/views/tabs/dragged_tab_controller.h index 10ed0d0..1e30728 100644 --- a/chrome/browser/ui/views/tabs/dragged_tab_controller.h +++ b/chrome/browser/ui/views/tabs/dragged_tab_controller.h @@ -195,9 +195,11 @@ class DraggedTabController : public TabContentsDelegate, // Handles dragging while the tabs are detached. void MoveDetached(const gfx::Point& screen_point); +#if defined(OS_WIN) && !defined(USE_AURA) // Returns the compatible TabStrip that is under the specified point (screen // coordinates), or NULL if there is none. BaseTabStrip* GetTabStripForPoint(const gfx::Point& screen_point); +#endif DockInfo GetDockInfoAtPoint(const gfx::Point& screen_point); diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 3756663..57d79bd 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1628,7 +1628,6 @@ 'browser/page_info_model.cc', 'browser/page_info_model.h', 'browser/page_info_model_observer.h', - 'browser/page_info_window.h', 'browser/parsers/metadata_parser.cc', 'browser/parsers/metadata_parser.h', 'browser/parsers/metadata_parser_factory.h', @@ -2670,6 +2669,7 @@ 'browser/ui/cocoa/omnibox/omnibox_view_mac.mm', 'browser/ui/cocoa/page_info_bubble_controller.h', 'browser/ui/cocoa/page_info_bubble_controller.mm', + 'browser/ui/cocoa/page_info_window.h', 'browser/ui/cocoa/presentation_mode_controller.h', 'browser/ui/cocoa/presentation_mode_controller.mm', 'browser/ui/cocoa/presentation_mode_prefs.h', @@ -2981,6 +2981,7 @@ 'browser/ui/gtk/overflow_button.cc', 'browser/ui/gtk/overflow_button.h', 'browser/ui/gtk/page_info_bubble_gtk.cc', + 'browser/ui/gtk/page_info_window.h', 'browser/ui/gtk/process_singleton_dialog.cc', 'browser/ui/gtk/process_singleton_dialog.h', 'browser/ui/gtk/profile_menu_button.cc', @@ -3409,6 +3410,7 @@ 'browser/ui/views/omnibox/omnibox_view_win.h', 'browser/ui/views/page_info_bubble_view.cc', 'browser/ui/views/page_info_bubble_view.h', + 'browser/ui/views/page_info_window.h', 'browser/ui/views/pinned_contents_info_bubble.cc', 'browser/ui/views/pinned_contents_info_bubble.h', 'browser/ui/views/reload_button.cc', |