1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_navigator_params.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/web_applications/app_browser_controller.h"
#include "chrome/browser/ui/web_applications/web_app_browsertest_base.h"
#include "chrome/browser/web_applications/web_app_helpers.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/webapps/common/web_app_id.h"
#include "content/public/common/content_features.h"
#include "content/public/test/browser_test.h"
#include "ui/base/page_transition_types.h"
#include "ui/base/window_open_disposition.h"
#include "url/gurl.h"
namespace web_app {
class WebAppServiceWorkerOpenWindowBrowserTest : public WebAppBrowserTestBase {
public:
WebAppServiceWorkerOpenWindowBrowserTest()
: WebAppBrowserTestBase({}, {features::kPwaNavigationCapturing}) {}
static GURL GetGoogleURL() { return GURL("http://www.google.com/"); }
NavigateParams MakeNavigateParamsForServiceWorker() const {
NavigateParams params(browser()->profile(), GetGoogleURL(),
ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
params.is_renderer_initiated = true;
params.user_gesture = false;
params.initiator_origin = url::Origin::Create(GetGoogleURL());
params.is_service_worker_open_window = true;
return params;
}
};
// This test verifies that navigating with "is_service_worker_open_window =
// true" opens a new app window if there is an installed Web App for the URL.
IN_PROC_BROWSER_TEST_F(WebAppServiceWorkerOpenWindowBrowserTest,
AppInstalled_ServiceWorkerOpenWindow) {
InstallPWA(GetGoogleURL());
NavigateParams params(MakeNavigateParamsForServiceWorker());
Navigate(¶ms);
EXPECT_NE(browser(), params.browser);
EXPECT_FALSE(params.browser->is_type_normal());
EXPECT_TRUE(params.browser->is_type_app());
EXPECT_TRUE(params.browser->is_trusted_source());
}
IN_PROC_BROWSER_TEST_F(WebAppServiceWorkerOpenWindowBrowserTest,
AppNotInstalled_ServiceWorkerOpenWindow) {
int num_tabs = browser()->tab_strip_model()->count();
NavigateParams params(MakeNavigateParamsForServiceWorker());
Navigate(¶ms);
EXPECT_EQ(browser(), params.browser);
EXPECT_EQ(++num_tabs, browser()->tab_strip_model()->count());
}
} // namespace web_app
|