Commit 935ab909 authored by Yuheng Huang's avatar Yuheng Huang Committed by Chromium LUCI CQ

Tab Search: Only normal browser window is searchable

This CL fixes tabs inside a webapp is searchable from the
browser in Chrome OS.

Bug: 1099917, 1154393
Change-Id: I93b59f2ffe97487e0becb3eee6e1a8b77bea217b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2568531
Commit-Queue: Yuheng Huang <yuhengh@chromium.org>
Reviewed-by: default avatarThomas Lukaszewicz <tluk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#833162}
parent f201f6fb
...@@ -85,9 +85,8 @@ void TabSearchPageHandler::CloseTab(int32_t tab_id) { ...@@ -85,9 +85,8 @@ void TabSearchPageHandler::CloseTab(int32_t tab_id) {
void TabSearchPageHandler::GetProfileTabs(GetProfileTabsCallback callback) { void TabSearchPageHandler::GetProfileTabs(GetProfileTabsCallback callback) {
TRACE_EVENT0("browser", "TabSearchPageHandler::GetProfileTabs"); TRACE_EVENT0("browser", "TabSearchPageHandler::GetProfileTabs");
auto profile_tabs = tab_search::mojom::ProfileTabs::New(); auto profile_tabs = tab_search::mojom::ProfileTabs::New();
Profile* profile = browser_->profile();
for (auto* browser : *BrowserList::GetInstance()) { for (auto* browser : *BrowserList::GetInstance()) {
if (browser->profile() != profile) if (!ShouldTrackBrowser(browser))
continue; continue;
TabStripModel* tab_strip_model = browser->tab_strip_model(); TabStripModel* tab_strip_model = browser->tab_strip_model();
auto window_tabs = tab_search::mojom::WindowTabs::New(); auto window_tabs = tab_search::mojom::WindowTabs::New();
...@@ -116,9 +115,8 @@ void TabSearchPageHandler::GetProfileTabs(GetProfileTabsCallback callback) { ...@@ -116,9 +115,8 @@ void TabSearchPageHandler::GetProfileTabs(GetProfileTabsCallback callback) {
base::Optional<TabSearchPageHandler::TabDetails> base::Optional<TabSearchPageHandler::TabDetails>
TabSearchPageHandler::GetTabDetails(int32_t tab_id) { TabSearchPageHandler::GetTabDetails(int32_t tab_id) {
Profile* profile = browser_->profile();
for (auto* browser : *BrowserList::GetInstance()) { for (auto* browser : *BrowserList::GetInstance()) {
if (browser->profile() != profile) { if (!ShouldTrackBrowser(browser)) {
continue; continue;
} }
...@@ -248,7 +246,8 @@ void TabSearchPageHandler::NotifyTabsChanged() { ...@@ -248,7 +246,8 @@ void TabSearchPageHandler::NotifyTabsChanged() {
} }
bool TabSearchPageHandler::ShouldTrackBrowser(Browser* browser) { bool TabSearchPageHandler::ShouldTrackBrowser(Browser* browser) {
return browser->profile() == browser_->profile(); return browser->profile() == browser_->profile() &&
browser->type() == Browser::Type::TYPE_NORMAL;
} }
void TabSearchPageHandler::SetTimerForTesting( void TabSearchPageHandler::SetTimerForTesting(
......
...@@ -30,12 +30,14 @@ constexpr char kTabUrl2[] = "http://foo/2"; ...@@ -30,12 +30,14 @@ constexpr char kTabUrl2[] = "http://foo/2";
constexpr char kTabUrl3[] = "http://foo/3"; constexpr char kTabUrl3[] = "http://foo/3";
constexpr char kTabUrl4[] = "http://foo/4"; constexpr char kTabUrl4[] = "http://foo/4";
constexpr char kTabUrl5[] = "http://foo/5"; constexpr char kTabUrl5[] = "http://foo/5";
constexpr char kTabUrl6[] = "http://foo/6";
constexpr char kTabName1[] = "Tab 1"; constexpr char kTabName1[] = "Tab 1";
constexpr char kTabName2[] = "Tab 2"; constexpr char kTabName2[] = "Tab 2";
constexpr char kTabName3[] = "Tab 3"; constexpr char kTabName3[] = "Tab 3";
constexpr char kTabName4[] = "Tab 4"; constexpr char kTabName4[] = "Tab 4";
constexpr char kTabName5[] = "Tab 5"; constexpr char kTabName5[] = "Tab 5";
constexpr char kTabName6[] = "Tab 6";
class MockPage : public tab_search::mojom::Page { class MockPage : public tab_search::mojom::Page {
public: public:
...@@ -112,6 +114,7 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest { ...@@ -112,6 +114,7 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest {
browser3_ = browser3_ =
CreateTestBrowser(browser()->profile()->GetPrimaryOTRProfile(), false); CreateTestBrowser(browser()->profile()->GetPrimaryOTRProfile(), false);
browser4_ = CreateTestBrowser(profile2(), false); browser4_ = CreateTestBrowser(profile2(), false);
browser5_ = CreateTestBrowser(profile1(), true);
BrowserList::SetLastActive(browser1()); BrowserList::SetLastActive(browser1());
webui_controller_ = webui_controller_ =
std::make_unique<ui::MojoBubbleWebUIController>(web_ui()); std::make_unique<ui::MojoBubbleWebUIController>(web_ui());
...@@ -124,9 +127,11 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest { ...@@ -124,9 +127,11 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest {
browser2()->tab_strip_model()->CloseAllTabs(); browser2()->tab_strip_model()->CloseAllTabs();
browser3()->tab_strip_model()->CloseAllTabs(); browser3()->tab_strip_model()->CloseAllTabs();
browser4()->tab_strip_model()->CloseAllTabs(); browser4()->tab_strip_model()->CloseAllTabs();
browser5()->tab_strip_model()->CloseAllTabs();
browser2_.reset(); browser2_.reset();
browser3_.reset(); browser3_.reset();
browser4_.reset(); browser4_.reset();
browser5_.reset();
BrowserWithTestWindowTest::TearDown(); BrowserWithTestWindowTest::TearDown();
} }
...@@ -146,6 +151,9 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest { ...@@ -146,6 +151,9 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest {
// Browser with a different profile of the default browser. // Browser with a different profile of the default browser.
Browser* browser4() { return browser4_.get(); } Browser* browser4() { return browser4_.get(); }
// Browser with the same profile but not normal type.
Browser* browser5() { return browser5_.get(); }
TestTabSearchPageHandler* handler() { return handler_.get(); } TestTabSearchPageHandler* handler() { return handler_.get(); }
void FireTimer() { handler_->mock_debounce_timer()->Fire(); } void FireTimer() { handler_->mock_debounce_timer()->Fire(); }
bool IsTimerRunning() { return handler_->mock_debounce_timer()->IsRunning(); } bool IsTimerRunning() { return handler_->mock_debounce_timer()->IsRunning(); }
...@@ -178,13 +186,15 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest { ...@@ -178,13 +186,15 @@ class TabSearchPageHandlerTest : public BrowserWithTestWindowTest {
std::unique_ptr<Browser> browser2_; std::unique_ptr<Browser> browser2_;
std::unique_ptr<Browser> browser3_; std::unique_ptr<Browser> browser3_;
std::unique_ptr<Browser> browser4_; std::unique_ptr<Browser> browser4_;
std::unique_ptr<Browser> browser5_;
std::unique_ptr<TestTabSearchPageHandler> handler_; std::unique_ptr<TestTabSearchPageHandler> handler_;
std::unique_ptr<ui::MojoBubbleWebUIController> webui_controller_; std::unique_ptr<ui::MojoBubbleWebUIController> webui_controller_;
}; };
TEST_F(TabSearchPageHandlerTest, GetTabs) { TEST_F(TabSearchPageHandlerTest, GetTabs) {
// Browser3 and browser4 are using different profiles, thus their tabs should // Browser3 and browser4 are using different profiles, browser5 is not a
// not be accessible. // normal type browser, thus their tabs should not be accessible.
AddTabWithTitle(browser5(), GURL(kTabUrl6), kTabName6);
AddTabWithTitle(browser4(), GURL(kTabUrl5), kTabName5); AddTabWithTitle(browser4(), GURL(kTabUrl5), kTabName5);
AddTabWithTitle(browser3(), GURL(kTabUrl4), kTabName4); AddTabWithTitle(browser3(), GURL(kTabUrl4), kTabName4);
AddTabWithTitle(browser2(), GURL(kTabUrl3), kTabName3); AddTabWithTitle(browser2(), GURL(kTabUrl3), kTabName3);
......
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