diff options
Diffstat (limited to 'chromium/chrome/browser/extensions/api/alarms')
-rw-r--r-- | chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc b/chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc index eacee156995..1de49aa22be 100644 --- a/chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc +++ b/chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc @@ -6,6 +6,7 @@ #include "content/public/test/browser_test.h" #include "extensions/browser/event_router.h" #include "extensions/common/api/test.h" +#include "extensions/common/scoped_worker_based_extensions_channel.h" #include "extensions/test/extension_test_message_listener.h" #include "extensions/test/result_catcher.h" #include "net/dns/mock_host_resolver.h" @@ -15,12 +16,20 @@ using extensions::ResultCatcher; namespace extensions { -class AlarmsApiTest : public ExtensionApiTest { +using ContextType = ExtensionApiTest::ContextType; + +class AlarmsApiTest : public ExtensionApiTest, + public testing::WithParamInterface<ContextType> { public: void SetUpOnMainThread() override { ExtensionApiTest::SetUpOnMainThread(); host_resolver()->AddRule("*", "127.0.0.1"); ASSERT_TRUE(StartEmbeddedTestServer()); + + // Service Workers are currently only available on certain channels, so set + // the channel for those tests. + if (GetParam() == ContextType::kServiceWorker) + current_channel_ = std::make_unique<ScopedWorkerBasedExtensionsChannel>(); } static std::unique_ptr<base::ListValue> BuildEventArguments( @@ -30,11 +39,30 @@ class AlarmsApiTest : public ExtensionApiTest { info.last_message = last_message; return api::test::OnMessage::Create(info); } + + const Extension* LoadAlarmsExtensionIncognito(const char* path) { + int flags = kFlagEnableFileAccess | kFlagEnableIncognito; + if (GetParam() == ContextType::kServiceWorker) + flags |= kFlagRunAsServiceWorkerBasedExtension; + + return LoadExtensionWithFlags( + test_data_dir_.AppendASCII("alarms").AppendASCII(path), flags); + } + + private: + std::unique_ptr<ScopedWorkerBasedExtensionsChannel> current_channel_; }; +INSTANTIATE_TEST_SUITE_P(EventPage, + AlarmsApiTest, + ::testing::Values(ContextType::kEventPage)); +INSTANTIATE_TEST_SUITE_P(ServiceWorker, + AlarmsApiTest, + ::testing::Values(ContextType::kServiceWorker)); + // Tests that an alarm created by an extension with incognito split mode is // only triggered in the browser context it was created in. -IN_PROC_BROWSER_TEST_F(AlarmsApiTest, IncognitoSplit) { +IN_PROC_BROWSER_TEST_P(AlarmsApiTest, IncognitoSplit) { // We need 2 ResultCatchers because we'll be running the same test in both // regular and incognito mode. Profile* incognito_profile = browser()->profile()->GetOffTheRecordProfile(); @@ -48,8 +76,7 @@ IN_PROC_BROWSER_TEST_F(AlarmsApiTest, IncognitoSplit) { ExtensionTestMessageListener listener_incognito("ready: true", false); - ASSERT_TRUE(LoadExtensionIncognito( - test_data_dir_.AppendASCII("alarms").AppendASCII("split"))); + ASSERT_TRUE(LoadAlarmsExtensionIncognito("split")); EXPECT_TRUE(listener.WaitUntilSatisfied()); EXPECT_TRUE(listener_incognito.WaitUntilSatisfied()); @@ -67,12 +94,11 @@ IN_PROC_BROWSER_TEST_F(AlarmsApiTest, IncognitoSplit) { // Tests that the behavior for an alarm created in incognito context should be // the same if incognito is in spanning mode. -IN_PROC_BROWSER_TEST_F(AlarmsApiTest, IncognitoSpanning) { +IN_PROC_BROWSER_TEST_P(AlarmsApiTest, IncognitoSpanning) { ResultCatcher catcher; catcher.RestrictToBrowserContext(browser()->profile()); - ASSERT_TRUE(LoadExtensionIncognito( - test_data_dir_.AppendASCII("alarms").AppendASCII("spanning"))); + ASSERT_TRUE(LoadAlarmsExtensionIncognito("spanning")); // Open incognito window. OpenURLOffTheRecord(browser()->profile(), GURL("about:blank")); |