blob: 6cfd46ac930b70991bf6bb2fef63e99e49c7438d [file] [log] [blame]
// Copyright 2019 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/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/web_applications/web_app_launch_utils.h"
#include "chrome/common/chrome_features.h"
#include "chrome/test/base/chrome_test_suite.h"
#include "chrome/test/base/test_launcher_utils.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/test/browser_test_utils.h"
#include "url/gurl.h"
class ApplicationLaunchBrowserTest : public InProcessBrowserTest {
public:
ApplicationLaunchBrowserTest() {
feature_list_.InitAndEnableFeature(features::kFocusMode);
}
content::WebContents* GetWebContentsForTab(Browser* browser, int index) {
return browser->tab_strip_model()->GetWebContentsAt(index);
}
private:
base::test::ScopedFeatureList feature_list_;
};
IN_PROC_BROWSER_TEST_F(ApplicationLaunchBrowserTest,
ReparentWebContentsForFocusModeSingleTab) {
const GURL url("http://aaa.com/empty.html");
ui_test_utils::NavigateToURL(browser(), url);
Browser* app_browser = web_app::ReparentWebContentsForFocusMode(
GetWebContentsForTab(browser(), 0));
EXPECT_TRUE(app_browser->is_type_app());
EXPECT_NE(app_browser, browser());
content::WebContents* main_browser_web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(main_browser_web_contents);
EXPECT_NE(url, main_browser_web_contents->GetLastCommittedURL());
GURL app_browser_url = app_browser->tab_strip_model()
->GetActiveWebContents()
->GetLastCommittedURL();
EXPECT_EQ(url, app_browser_url);
EXPECT_TRUE(app_browser->is_focus_mode());
}
IN_PROC_BROWSER_TEST_F(ApplicationLaunchBrowserTest,
ReparentWebContentsForFocusModeMultipleTabs) {
const GURL url("http://aaa.com/empty.html");
chrome::AddTabAt(browser(), url, -1, true);
chrome::AddTabAt(browser(), GURL(), -1, true);
EXPECT_FALSE(browser()->is_focus_mode());
ASSERT_EQ(3, browser()->tab_strip_model()->count());
Browser* app_browser = web_app::ReparentWebContentsForFocusMode(
GetWebContentsForTab(browser(), 1));
EXPECT_TRUE(app_browser->is_type_app());
EXPECT_NE(app_browser, browser());
EXPECT_EQ(url, GetWebContentsForTab(app_browser, 0)->GetURL());
EXPECT_EQ(2, browser()->tab_strip_model()->count());
EXPECT_TRUE(app_browser->is_focus_mode());
}