Commit 40f6046d authored by Yuheng Huang's avatar Yuheng Huang Committed by Commit Bot

Tab Search: Implement TabSearchButton button entry point

Bug: 1099917
Change-Id: I5dbc5ed6af51ce56dd24bb4427bb8f93db154dd6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2303772
Commit-Queue: Yuheng Huang <yuhengh@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarThomas Lukaszewicz <tluk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790519}
parent bd4024da
...@@ -3805,6 +3805,8 @@ static_library("ui") { ...@@ -3805,6 +3805,8 @@ static_library("ui") {
"views/toolbar/reload_button.h", "views/toolbar/reload_button.h",
"views/toolbar/sharesheet_button.cc", "views/toolbar/sharesheet_button.cc",
"views/toolbar/sharesheet_button.h", "views/toolbar/sharesheet_button.h",
"views/toolbar/tab_search_button.cc",
"views/toolbar/tab_search_button.h",
"views/toolbar/toolbar_account_icon_container_view.cc", "views/toolbar/toolbar_account_icon_container_view.cc",
"views/toolbar/toolbar_account_icon_container_view.h", "views/toolbar/toolbar_account_icon_container_view.h",
"views/toolbar/toolbar_action_view.cc", "views/toolbar/toolbar_action_view.cc",
......
...@@ -4,10 +4,6 @@ ...@@ -4,10 +4,6 @@
#include "chrome/browser/ui/views/tab_search/tab_search_bubble_view.h" #include "chrome/browser/ui/views/tab_search/tab_search_bubble_view.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/browser/ui/webui/tab_search/tab_search_ui.h" #include "chrome/browser/ui/webui/tab_search/tab_search_ui.h"
#include "chrome/common/webui_url_constants.h" #include "chrome/common/webui_url_constants.h"
#include "ui/views/controls/webview/webview.h" #include "ui/views/controls/webview/webview.h"
...@@ -16,6 +12,7 @@ ...@@ -16,6 +12,7 @@
#if defined(USE_AURA) #if defined(USE_AURA)
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/wm/public/activation_change_observer.h"
#include "ui/wm/public/activation_client.h" #include "ui/wm/public/activation_client.h"
#endif #endif
...@@ -30,8 +27,9 @@ constexpr gfx::Size kMaxSize(800, 600); ...@@ -30,8 +27,9 @@ constexpr gfx::Size kMaxSize(800, 600);
class TabSearchWebView : public views::WebView { class TabSearchWebView : public views::WebView {
public: public:
TabSearchWebView(Profile* profile, TabSearchBubbleView* parent) TabSearchWebView(content::BrowserContext* browser_context,
: WebView(profile), parent_(parent) {} TabSearchBubbleView* parent)
: WebView(browser_context), parent_(parent) {}
~TabSearchWebView() override = default; ~TabSearchWebView() override = default;
...@@ -119,19 +117,21 @@ class TabSearchBubbleView::TabSearchWindowObserverAura ...@@ -119,19 +117,21 @@ class TabSearchBubbleView::TabSearchWindowObserverAura
}; };
#endif #endif
void TabSearchBubbleView::CreateTabSearchBubble(Browser* browser) { void TabSearchBubbleView::CreateTabSearchBubble(
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); content::BrowserContext* browser_context,
DCHECK(browser_view); views::View* anchor_view) {
auto delegate = auto delegate =
std::make_unique<TabSearchBubbleView>(browser, browser_view->toolbar()); std::make_unique<TabSearchBubbleView>(browser_context, anchor_view);
BubbleDialogDelegateView::CreateBubble(delegate.release()); BubbleDialogDelegateView::CreateBubble(delegate.release());
} }
TabSearchBubbleView::TabSearchBubbleView(Browser* browser, TabSearchBubbleView::TabSearchBubbleView(
views::View* anchor_view) content::BrowserContext* browser_context,
views::View* anchor_view)
: BubbleDialogDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), : BubbleDialogDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
web_view_(AddChildView( web_view_(AddChildView(
std::make_unique<TabSearchWebView>(browser->profile(), this))) { std::make_unique<TabSearchWebView>(browser_context, this))) {
DCHECK(anchor_view);
observed_anchor_widget_.Add(anchor_view->GetWidget()); observed_anchor_widget_.Add(anchor_view->GetWidget());
set_close_on_deactivate(false); set_close_on_deactivate(false);
......
...@@ -15,16 +15,20 @@ class Widget; ...@@ -15,16 +15,20 @@ class Widget;
class WidgetObserver; class WidgetObserver;
} // namespace views } // namespace views
class Browser; namespace content {
class BrowserContext;
} // namespace content
class TabSearchBubbleView : public views::BubbleDialogDelegateView, class TabSearchBubbleView : public views::BubbleDialogDelegateView,
public views::WidgetObserver { public views::WidgetObserver {
public: public:
// TODO(tluk): Since the Bubble is shown asynchronously, we shouldn't call // TODO(tluk): Since the Bubble is shown asynchronously, we shouldn't call
// this if the Widget is hidden and yet to be revealed. // this if the Widget is hidden and yet to be revealed.
static void CreateTabSearchBubble(Browser* browser); static void CreateTabSearchBubble(content::BrowserContext* browser_context,
views::View* anchor_view);
TabSearchBubbleView(Browser* browser, views::View* anchor_view); TabSearchBubbleView(content::BrowserContext* browser_context,
views::View* anchor_view);
~TabSearchBubbleView() override; ~TabSearchBubbleView() override;
// views::BubbleDialogDelegateView: // views::BubbleDialogDelegateView:
......
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
#include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/test/test_browser_dialog.h" #include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/tab_search_button.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/browser/ui/webui/tab_search/tab_search_ui.h"
#include "chrome/common/webui_url_constants.h" #include "chrome/common/webui_url_constants.h"
#include "content/public/test/browser_test.h" #include "content/public/test/browser_test.h"
...@@ -25,7 +29,12 @@ class TabSearchBubbleBrowserTest : public DialogBrowserTest { ...@@ -25,7 +29,12 @@ class TabSearchBubbleBrowserTest : public DialogBrowserTest {
AppendTab(chrome::kChromeUISettingsURL); AppendTab(chrome::kChromeUISettingsURL);
AppendTab(chrome::kChromeUIHistoryURL); AppendTab(chrome::kChromeUIHistoryURL);
AppendTab(chrome::kChromeUIBookmarksURL); AppendTab(chrome::kChromeUIBookmarksURL);
TabSearchBubbleView::CreateTabSearchBubble(browser()); BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(browser());
DCHECK(browser_view);
views::View* anchor_view = browser_view->toolbar()->tab_search_button();
TabSearchBubbleView::CreateTabSearchBubble(browser()->profile(),
anchor_view);
} }
void AppendTab(std::string url) { void AppendTab(std::string url) {
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/toolbar/tab_search_button.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/tab_search/tab_search_bubble_view.h"
#include "chrome/grit/generated_resources.h"
#include "components/vector_icons/vector_icons.h"
#include "ui/base/l10n/l10n_util.h"
// TODO(crbug.com/1099917): This is a WIP. Implement more detail when design is
// final
TabSearchButton::TabSearchButton(Browser* browser)
: ToolbarButton(this), browser_(browser) {
SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FIND));
}
void TabSearchButton::UpdateIcon() {
UpdateIconsWithStandardColors(vector_icons::kFolderIcon);
}
void TabSearchButton::ButtonPressed(views::Button* sender,
const ui::Event& event) {
TabSearchBubbleView::CreateTabSearchBubble(browser_->profile(), this);
}
// Copyright 2020 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_TOOLBAR_TAB_SEARCH_BUTTON_H_
#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_TAB_SEARCH_BUTTON_H_
#include "chrome/browser/ui/views/toolbar/toolbar_button.h"
#include "ui/views/controls/button/button.h"
class Browser;
class TabSearchButton : public ToolbarButton, public views::ButtonListener {
public:
explicit TabSearchButton(Browser* browser);
TabSearchButton(const TabSearchButton&) = delete;
TabSearchButton& operator=(const TabSearchButton&) = delete;
~TabSearchButton() override = default;
// ToolbarButton:
void UpdateIcon() override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
private:
Browser* const browser_;
};
#endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_TAB_SEARCH_BUTTON_H_
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include "chrome/browser/ui/views/toolbar/home_button.h" #include "chrome/browser/ui/views/toolbar/home_button.h"
#include "chrome/browser/ui/views/toolbar/reload_button.h" #include "chrome/browser/ui/views/toolbar/reload_button.h"
#include "chrome/browser/ui/views/toolbar/sharesheet_button.h" #include "chrome/browser/ui/views/toolbar/sharesheet_button.h"
#include "chrome/browser/ui/views/toolbar/tab_search_button.h"
#include "chrome/browser/ui/views/toolbar/toolbar_account_icon_container_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_account_icon_container_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_button.h"
#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/ui/web_applications/app_browser_controller.h"
...@@ -267,6 +268,11 @@ void ToolbarView::Init() { ...@@ -267,6 +268,11 @@ void ToolbarView::Init() {
if (browser_actions) if (browser_actions)
browser_actions_ = AddChildView(std::move(browser_actions)); browser_actions_ = AddChildView(std::move(browser_actions));
if (base::FeatureList::IsEnabled(features::kTabSearch)) {
tab_search_button_ =
AddChildView(std::make_unique<TabSearchButton>(browser_));
}
if (extensions_container) if (extensions_container)
extensions_container_ = AddChildView(std::move(extensions_container)); extensions_container_ = AddChildView(std::move(extensions_container));
......
...@@ -50,6 +50,7 @@ class HomeButton; ...@@ -50,6 +50,7 @@ class HomeButton;
class MediaToolbarButtonView; class MediaToolbarButtonView;
class ReloadButton; class ReloadButton;
class SharesheetButton; class SharesheetButton;
class TabSearchButton;
class ToolbarButton; class ToolbarButton;
class ToolbarAccountIconContainerView; class ToolbarAccountIconContainerView;
...@@ -152,6 +153,7 @@ class ToolbarView : public views::AccessiblePaneView, ...@@ -152,6 +153,7 @@ class ToolbarView : public views::AccessiblePaneView,
} }
BrowserAppMenuButton* app_menu_button() const { return app_menu_button_; } BrowserAppMenuButton* app_menu_button() const { return app_menu_button_; }
HomeButton* home_button() const { return home_; } HomeButton* home_button() const { return home_; }
TabSearchButton* tab_search_button() const { return tab_search_button_; }
AppMenuIconController* app_menu_icon_controller() { AppMenuIconController* app_menu_icon_controller() {
return &app_menu_icon_controller_; return &app_menu_icon_controller_;
} }
...@@ -276,6 +278,7 @@ class ToolbarView : public views::AccessiblePaneView, ...@@ -276,6 +278,7 @@ class ToolbarView : public views::AccessiblePaneView,
SharesheetButton* sharesheet_button_ = nullptr; SharesheetButton* sharesheet_button_ = nullptr;
MediaToolbarButtonView* media_button_ = nullptr; MediaToolbarButtonView* media_button_ = nullptr;
BrowserAppMenuButton* app_menu_button_ = nullptr; BrowserAppMenuButton* app_menu_button_ = nullptr;
TabSearchButton* tab_search_button_ = nullptr;
Browser* const browser_; Browser* const browser_;
BrowserView* const browser_view_; BrowserView* const browser_view_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment