summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/extensions/api/alarms
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/extensions/api/alarms')
-rw-r--r--chromium/chrome/browser/extensions/api/alarms/alarms_apitest.cc40
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"));