Commit f70ab222 authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

Extensions: Add a test for SW runtime.onStartup

Add a test that verifies that runtime.onStartup fires on Service
Worker based extension upon chrome start.

This CL also expands "runtime" feature to "extension_service_worker"
context type.

Bug: 891016
Change-Id: I4a11f6da2f5311d7901ad8bb05c348b9343fe701
Reviewed-on: https://chromium-review.googlesource.com/1255588
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595708}
parent ec0c24cb
...@@ -304,6 +304,40 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerBasedBackgroundTest, OnInstalledEvent) { ...@@ -304,6 +304,40 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerBasedBackgroundTest, OnInstalledEvent) {
<< message_; << message_;
} }
// Listens for "runtime.onStartup" event early so that tests can wait for the
// event on startup (and not miss it).
class ServiceWorkerOnStartupTest : public ServiceWorkerBasedBackgroundTest {
public:
ServiceWorkerOnStartupTest() = default;
~ServiceWorkerOnStartupTest() override = default;
bool WaitForOnStartupEvent() { return listener_->WaitUntilSatisfied(); }
void CreatedBrowserMainParts(content::BrowserMainParts* main_parts) override {
// At this point, the notification service is initialized but the profile
// and extensions have not.
listener_ = std::make_unique<ExtensionTestMessageListener>(
"onStartup event", false);
ServiceWorkerBasedBackgroundTest::CreatedBrowserMainParts(main_parts);
}
private:
std::unique_ptr<ExtensionTestMessageListener> listener_;
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerOnStartupTest);
};
// Tests "runtime.onStartup" for extension SW.
IN_PROC_BROWSER_TEST_P(ServiceWorkerOnStartupTest, PRE_Event) {
ASSERT_TRUE(RunExtensionTest(
"service_worker/worker_based_background/on_startup_event"))
<< message_;
}
IN_PROC_BROWSER_TEST_P(ServiceWorkerOnStartupTest, Event) {
EXPECT_TRUE(WaitForOnStartupEvent());
}
// Class that dispatches an event to |extension_id| right after a // Class that dispatches an event to |extension_id| right after a
// non-lazy listener to the event is added from the extension's Service Worker. // non-lazy listener to the event is added from the extension's Service Worker.
class EarlyWorkerMessageSender : public EventRouter::Observer { class EarlyWorkerMessageSender : public EventRouter::Observer {
...@@ -1418,5 +1452,11 @@ INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings, ...@@ -1418,5 +1452,11 @@ INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings,
INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings, INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings,
ServiceWorkerBasedBackgroundTest, ServiceWorkerBasedBackgroundTest,
::testing::Values(JAVASCRIPT_BINDINGS)); ::testing::Values(JAVASCRIPT_BINDINGS));
INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithNativeBindings,
ServiceWorkerOnStartupTest,
::testing::Values(NATIVE_BINDINGS));
INSTANTIATE_TEST_CASE_P(ServiceWorkerTestWithJSBindings,
ServiceWorkerOnStartupTest,
::testing::Values(JAVASCRIPT_BINDINGS));
} // namespace extensions } // namespace extensions
{
"name": "Service Worker based background script",
"version": "0.1",
"manifest_version": 2,
"description": "Tests onStartup event from SW based extension",
"background": {"service_worker_script": "service_worker_background.js"}
}
// Copyright 2018 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.
chrome.runtime.onStartup.addListener(() => {
chrome.test.sendMessage('onStartup event');
});
chrome.test.succeed();
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