New issue
Advanced search Search tips

Issue 721147 link

Starred by 3 users

Issue metadata

Status: Started
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 876207



Sign in to add a comment

Extension events in Extension Service Workers

Project Member Reported by lazyboy@chromium.org, May 11 2017

Issue description

Tracking bug for dispatching events to extension service workers.

Similar to lazy background events.
We need to be able to send events to a stopped worker after starting it.
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ac968918d5b2b6baf9fe987cb0094aa9a73177c0

commit ac968918d5b2b6baf9fe987cb0094aa9a73177c0
Author: lazyboy <lazyboy@chromium.org>
Date: Tue May 16 17:50:09 2017

Restrict EventRouter::Get/Set-RegisteredEvents.

The code is going to be changed in a subsequent CL to allow extension
service worker events, it's better if we restrict GetRegisteredEvents and
SetRegisteredEvents as we don't really need them outside of EventRouter.
Expose simpler HasRegisteredEvents and test specific
ClearRegisteredEventsForTest instead.

BUG=721147
Test=No visible change expected.

Review-Url: https://codereview.chromium.org/2879673002
Cr-Commit-Position: refs/heads/master@{#472151}

[modify] https://crrev.com/ac968918d5b2b6baf9fe987cb0094aa9a73177c0/chrome/browser/apps/app_browsertest.cc
[modify] https://crrev.com/ac968918d5b2b6baf9fe987cb0094aa9a73177c0/chrome/browser/extensions/installed_loader.cc
[modify] https://crrev.com/ac968918d5b2b6baf9fe987cb0094aa9a73177c0/extensions/browser/event_router.cc
[modify] https://crrev.com/ac968918d5b2b6baf9fe987cb0094aa9a73177c0/extensions/browser/event_router.h

Project Member

Comment 2 by bugdroid1@chromium.org, Jun 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e784724ab7bdebd696a585003d28c835352ddc75

commit e784724ab7bdebd696a585003d28c835352ddc75
Author: lazyboy <lazyboy@chromium.org>
Date: Wed Jun 07 23:29:18 2017

[extension SW]: Support event listener registration and event dispatching.

Initial implementation, will only send events to an already running
  extension Service Worker. Subsequent CLs will add dispatching
  events to potentially stopped workers.
Ref count while dispatching an event is missing in the CL, so is
  ExtensionHostMsg_EventAck IPC.
Event filters are completely left out in this CL.
Currently EventListeners have an added field called "worker_thread_id", its
  value being 0 (kNonWorkerThreadId) means these are not SW event
  listeners. Otherwise similar to lazy and non-lazy events, we will have
  SW events with worker_thread_id filled in.
EventRouter's event registration methods are a bit verbose, e.g. existing
  methods:
    Add/RemoveListener
    Add/RemoveLazyListener [1]
  have their service worker counterpart versions:
    Add/RemoveServiceWorkerListener
    Add/RemoveServiceWorkerLazyListener [2]
  The difference of these [2] with the previous ones [1] are just an added
  |worker_thread_id| param. Exposing only these and removing the previous
  ones would also work, but that would require non service worker
  events/listeners to explicitly specify kNonWorkerThreadId as the
  value of |worker_thread_id| param. Since the consumers are not just
  within extensions core code, it's better to leave the change out in this
  CL.

Test fixture:
1. Open an extension SW that registers tabs.onUpdated listener.
2. Do something (page.js) to dispatch tabs.onUpdated event(s).
3. Expect extension SW to receive the event(s).

Note that there's no guarantee that the service worker is running during
step 2 and onwards. In worst case, the might become flaky, but it should
be highly unlikely.

BUG=721147

Review-Url: https://codereview.chromium.org/2886923002
Cr-Commit-Position: refs/heads/master@{#477787}

[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/common/extensions/api/_api_features.json
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/manifest.json
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/on_updated.html
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/on_updated.js
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/page.html
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/page.js
[add] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/chrome/test/data/extensions/api_test/service_worker/events/sw.js
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/event_listener_map.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/event_router.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/event_router.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/extension_message_filter.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/browser/extension_prefs.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/common/constants.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/common/constants.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/common/extension_messages.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/dispatcher.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/event_bindings.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/service_worker_data.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/service_worker_data.h
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/worker_thread_dispatcher.cc
[modify] https://crrev.com/e784724ab7bdebd696a585003d28c835352ddc75/extensions/renderer/worker_thread_dispatcher.h

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e464732fb0179fa3514239419c804547a0f56b8d

commit e464732fb0179fa3514239419c804547a0f56b8d
Author: lazyboy <lazyboy@chromium.org>
Date: Thu Jun 15 21:17:27 2017

Move lazy event dispatching code out of EventRouter.

Separate out lazy background page logic from EventRouter to
LazyEventDispatcher. This will facilitate introducing service worker
(another "lazy context") lazy events to extensions.

Also introduce LazyContextId to identify a lazy context. This is
currently used only for identifying event page context, but in future
will also identify extension service worker context.

BUG=721147, 723754

Review-Url: https://codereview.chromium.org/2940883007
Cr-Commit-Position: refs/heads/master@{#479833}

[modify] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/BUILD.gn
[modify] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/event_router.cc
[modify] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/event_router.h
[add] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/events/lazy_event_dispatcher.cc
[add] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/events/lazy_event_dispatcher.h
[add] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/lazy_context_id.cc
[add] https://crrev.com/e464732fb0179fa3514239419c804547a0f56b8d/extensions/browser/lazy_context_id.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae

commit 63b994a1d1026a4b992c74e10e1e7c826bb5f9ae
Author: lazyboy <lazyboy@chromium.org>
Date: Fri Jun 30 21:20:39 2017

[extension SW] Support lazy events from extension service workers.

This CL adds support to register and dispatch lazy events from/to
extension SW
(a) To register, we use SW's (unique) scope url to identify a SW
within an extension. Pass the information about scope url through
ServiceWorkerContextClient. Initially EventListener::worker_thread_id_
was used to identify whether an event is for SW context or not.
However, that is not enough for lazy service worker events, because
we need to persist lazy events in the browser process and
worker_thread_id_ is temporary for a running SW.
Change SW EventListener by adding EventListener::is_for_service_worker()
to support this.
(b) To dispatch, we need to start a worker before dispatching the
event. The content/ API:
ServiceWorkerContext::GetWorkerInfoAfterStartWorker()
was added to do that. Add ServiceWorkerTaskQueue (similar to
LazyBackgroundTaskQueue for lazy background pages) to dispatch
the event (a task) in extensions/ layer.

IPC changes:
In order to identify a (possibly stopped) SW, IPCs for lazy
service worker events were changed to accept service worker scope
urls. In order to not convolute existing lazy background page IPCs
(ExtensionHostMsg_Add/RemoveLazyListener), new ones have been
introduced: ExtensionHostMsg_Add/RemoveLazyServiceWorkerListener.

Other notable changes:
- LazyContextTaskQueue is introduced to express a lazy runnable
  context. Make the new ServiceWorkerTaskQueue and existing
  LazyBackgroundTaskQueue derived from that. One can post [1]
  PendingTasks to these contexts. Unfortunately becuase of many
  existing usages of LazyBackgroundTaskQueue::AddPendingTask,
  [1] was named AddPendingTaskToDispatchEvent to avoid collision.
- LazyContextTaskQueue provides a contexual information expressed
  as LazyContextTaskQueue::ContextInfo. This was introduced to
  avoid ExtensionHost from LazyContextTaskQueue (See
  LazyBackgroundTaskQueue::AddPendingTask)

BUG=721147
Test=After an extension service worker stops, it should still be
possible to dispatch extension events to it. That will wake up
the service worker.

Review-Url: https://codereview.chromium.org/2943583002
Cr-Commit-Position: refs/heads/master@{#483820}

[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/renderer/chrome_content_renderer_client.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/renderer/chrome_content_renderer_client.h
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/manifest.json
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/on_updated.html
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/on_updated.js
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/page.html
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/page.js
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_worker/sw.js
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/browser/service_worker/service_worker_context_wrapper.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/browser/service_worker/service_worker_context_wrapper.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/public/browser/service_worker_context.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/public/renderer/content_renderer_client.h
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/public/test/service_worker_test_helpers.cc
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/public/test/service_worker_test_helpers.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/renderer/service_worker/service_worker_context_client.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/content/test/BUILD.gn
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/BUILD.gn
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/event_listener_map.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/event_router.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/event_router.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/events/lazy_event_dispatcher.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/events/lazy_event_dispatcher.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/extension_message_filter.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/lazy_background_task_queue.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/lazy_background_task_queue.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/lazy_context_id.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/lazy_context_id.h
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/lazy_context_task_queue.h
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/service_worker_task_queue.cc
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/service_worker_task_queue.h
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/service_worker_task_queue_factory.cc
[add] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/browser/service_worker_task_queue_factory.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/common/extension_messages.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/renderer/dispatcher.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/renderer/dispatcher.h
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/renderer/script_context.cc
[modify] https://crrev.com/63b994a1d1026a4b992c74e10e1e7c826bb5f9ae/extensions/renderer/script_context.h

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd

commit 461c4edd7bf5061ac254a1ccf781f7dcfbd222cd
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Thu Sep 14 17:23:45 2017

Extensions: Consolidate two ids representing main thread id.

Consolidate e/c/contants.h:kNonWorkerThreadId and kMainThreadId in
e/r/ipc_message_sender.cc:kMainThreadId to kMainThreadId. Update codes
in necessary files.

Bug: 721147
Change-Id: I120ba59652d9e6ec7530f0217dcb9041bda89c4c
Reviewed-on: https://chromium-review.googlesource.com/666065
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501979}
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/browser/event_listener_map.h
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/browser/event_router.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/browser/lazy_background_task_queue.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/common/constants.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/common/constants.h
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/renderer/ipc_message_sender.cc
[modify] https://crrev.com/461c4edd7bf5061ac254a1ccf781f7dcfbd222cd/extensions/renderer/worker_thread_dispatcher.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad

commit b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Wed Sep 20 18:19:45 2017

Extensions: Separate main/worker thread's event management containers in renderer/.

Renderers have 4 containers containing the knowledge of its event listeners.
These contain: managed and unmanaged event listeners and event filtering info.
Currently worker threads incorrectly use the same globals that is used
in main thread.
This CL extracts these containers into its own class: EventBookkeeper, and
creates instances of those class correctly for main thread and worker threads:
  - The main thread instance is kept in a lazy global instance.
  - The worker thread instances are kept in per worker data inside
    WorkerThreadDispatcher.

The lazy construction nature of these containers are not preserved and
they are always stack allocated.
Unmanaged event listeners map is also no longer leaky.

Bug: 721147
Change-Id: I457cba814e8e89dadbdc03b1e48c763c623e3165
Reviewed-on: https://chromium-review.googlesource.com/665597
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503201}
[modify] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/BUILD.gn
[modify] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/event_bindings.h
[add] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/event_bookkeeper.cc
[add] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/event_bookkeeper.h
[modify] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/js_extension_bindings_system.cc
[modify] https://crrev.com/b9af5f804cf5ddcd8bf0ab16241884e95fa1cfad/extensions/renderer/worker_thread_dispatcher.h

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/350845d8066a1db78ba9f0c22b804f4360eb5e9a

commit 350845d8066a1db78ba9f0c22b804f4360eb5e9a
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Thu Sep 21 00:41:55 2017

Extension SW: Add filtered event listener support.

The primary change is to send worker information to
EventRouter::Add/RemoveFilteredEventListener. EventRouter creates
worker specific event listeners when worker information is present
(identified by a base::Optional param).

The other changes are:
 - Added the ability to call MakeLazy() on service worker specific
event listeners.
 - Since routing id matching is not done deliberately on service
worker filtered events, added routing id retrieving function
GetRoutingIDForFilteredEvents() to ScriptContext.

An end-to-end browsertest with webNavigation API to exercise event
filters was also added.

IPC changes:
This CL adds an optional param to Add/RemoveFilteredListener. The
presence of this param denotes that the listener being added/removed
belongs to an extension service worker. And the value of the param
(ExtensionHostMsg_ServiceWorkerIdentifier) contains the identifying
bits of a service worker. The absence of this param indicates that
the message is for vanilla (non service worker) extension event
listeners.

Bug: 721147
Change-Id: I2ff3c26db54ae1e1fd7d10b8afcb277d382e83c2
Reviewed-on: https://chromium-review.googlesource.com/666222
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503298}
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/common/extensions/api/_api_features.json
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.html
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.js
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/b.html
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/manifest.json
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/sw.js
[add] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/chrome/test/data/extensions/api_test/service_worker/filtered_events/test_filtered.js
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/event_listener_map.h
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/event_router.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/event_router.h
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/event_router_unittest.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/browser/extension_message_filter.h
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/common/constants.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/common/constants.h
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/common/extension_messages.h
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/350845d8066a1db78ba9f0c22b804f4360eb5e9a/extensions/renderer/ipc_message_sender.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb

commit e34bc3ba4a14b65c94f4b0ae103473934e32cfdb
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Thu Sep 21 01:29:16 2017

Revert "Extension SW: Add filtered event listener support."

This reverts commit 350845d8066a1db78ba9f0c22b804f4360eb5e9a.

Reason for revert: Breaks win x64 compile
https://build.chromium.org/p/chromium/builders/Win%20x64/builds/14951

Original change's description:
> Extension SW: Add filtered event listener support.
> 
> The primary change is to send worker information to
> EventRouter::Add/RemoveFilteredEventListener. EventRouter creates
> worker specific event listeners when worker information is present
> (identified by a base::Optional param).
> 
> The other changes are:
>  - Added the ability to call MakeLazy() on service worker specific
> event listeners.
>  - Since routing id matching is not done deliberately on service
> worker filtered events, added routing id retrieving function
> GetRoutingIDForFilteredEvents() to ScriptContext.
> 
> An end-to-end browsertest with webNavigation API to exercise event
> filters was also added.
> 
> IPC changes:
> This CL adds an optional param to Add/RemoveFilteredListener. The
> presence of this param denotes that the listener being added/removed
> belongs to an extension service worker. And the value of the param
> (ExtensionHostMsg_ServiceWorkerIdentifier) contains the identifying
> bits of a service worker. The absence of this param indicates that
> the message is for vanilla (non service worker) extension event
> listeners.
> 
> Bug: 721147
> Change-Id: I2ff3c26db54ae1e1fd7d10b8afcb277d382e83c2
> Reviewed-on: https://chromium-review.googlesource.com/666222
> Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
> Reviewed-by: Tom Sepez <tsepez@chromium.org>
> Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#503298}

TBR=lazyboy@chromium.org,rdevlin.cronin@chromium.org,tsepez@chromium.org

Change-Id: I28722b2e1529c0d45fd0a24fce43c161eb8ccafd
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 721147
Reviewed-on: https://chromium-review.googlesource.com/675775
Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503308}
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/chrome/common/extensions/api/_api_features.json
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.html
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.js
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/b.html
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/manifest.json
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/sw.js
[delete] https://crrev.com/24e50c3f818e0cb1a05877e88a78a8cccd85763a/chrome/test/data/extensions/api_test/service_worker/filtered_events/test_filtered.js
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/event_listener_map.h
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/event_router.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/event_router.h
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/event_router_unittest.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/browser/extension_message_filter.h
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/common/constants.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/common/constants.h
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/common/extension_messages.h
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/e34bc3ba4a14b65c94f4b0ae103473934e32cfdb/extensions/renderer/ipc_message_sender.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9d1666182cc27a6a3899f62621951c331645d692

commit 9d1666182cc27a6a3899f62621951c331645d692
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Thu Sep 21 23:58:18 2017

Reland "Extension SW: Add filtered event listener support."

This is a reland of 350845d8066a1db78ba9f0c22b804f4360eb5e9a

The fix is in Patch set #1 -> #2, by removing dependency on
ipc/ipc_message.h from e/c/constants.cc. The include fails on
"win_x64_archive" bot but doesn't reproduce on local win 64
build. Since we're using MSG_ROUTING_NONE from ipc_messages.h
in event_bindings.cc anyway, move the usage there.

Original change's description:
> Extension SW: Add filtered event listener support.
> 
> The primary change is to send worker information to
> EventRouter::Add/RemoveFilteredEventListener. EventRouter creates
> worker specific event listeners when worker information is present
> (identified by a base::Optional param).
> 
> The other changes are:
>  - Added the ability to call MakeLazy() on service worker specific
> event listeners.
>  - Since routing id matching is not done deliberately on service
> worker filtered events, added routing id retrieving function
> GetRoutingIDForFilteredEvents() to ScriptContext.
> 
> An end-to-end browsertest with webNavigation API to exercise event
> filters was also added.
> 
> IPC changes:
> This CL adds an optional param to Add/RemoveFilteredListener. The
> presence of this param denotes that the listener being added/removed
> belongs to an extension service worker. And the value of the param
> (ExtensionHostMsg_ServiceWorkerIdentifier) contains the identifying
> bits of a service worker. The absence of this param indicates that
> the message is for vanilla (non service worker) extension event
> listeners.
> 
> Bug: 721147
> Change-Id: I2ff3c26db54ae1e1fd7d10b8afcb277d382e83c2
> Reviewed-on: https://chromium-review.googlesource.com/666222
> Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
> Reviewed-by: Tom Sepez <tsepez@chromium.org>
> Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#503298}

TBR=tsepez@chromium.org

Bug: 721147
Change-Id: I53e0ef921eaf3fe318fa3f01c2bdf5dfe2d32994
Reviewed-on: https://chromium-review.googlesource.com/677587
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503616}
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/browser/extensions/api/mdns/mdns_api_unittest.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/common/extensions/api/_api_features.json
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.html
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/a.js
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/b.html
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/manifest.json
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/sw.js
[add] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/chrome/test/data/extensions/api_test/service_worker/filtered_events/test_filtered.js
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/event_listener_map.h
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/event_router.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/event_router.h
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/event_router_unittest.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/extension_message_filter.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/browser/extension_message_filter.h
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/common/extension_messages.h
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/renderer/event_bindings.cc
[modify] https://crrev.com/9d1666182cc27a6a3899f62621951c331645d692/extensions/renderer/ipc_message_sender.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Oct 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/805f6a83b40e1c2956859d7dc1c0668d26e90a24

commit 805f6a83b40e1c2956859d7dc1c0668d26e90a24
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Thu Oct 05 01:23:26 2017

Extension SW events: correctly load unfiltered worker listeners.

EventRouter didn't used to load pref-saved listeners for Service
Workers. Load them. This CL is a precursor to dispatching a SW event
after a browser restart.

One caveat (TODO) in this CL is that it is currently assumed that
SW events are only registered from '/' scope. That support will be
incrementally added.

Also, add a test to demonstrate that an event can be dispatched after
a worker is shut down along with its extension (event page). This test
can easily be expanded in future to test the aforementioned browser
restart scenario.

Bug: 721147
Change-Id: I80f0ae097772500f41c7509435b878762d55ff98
Reviewed-on: https://chromium-review.googlesource.com/696720
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506607}
[modify] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/browser/extensions/service_worker_apitest.cc
[add] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_extension/background.js
[add] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_extension/manifest.json
[add] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_extension/page.html
[add] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_extension/page.js
[add] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/chrome/test/data/extensions/api_test/service_worker/events_to_stopped_extension/sw.js
[modify] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/extensions/browser/event_listener_map.h
[modify] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/extensions/browser/event_router.cc
[modify] https://crrev.com/805f6a83b40e1c2956859d7dc1c0668d26e90a24/extensions/browser/event_router.h

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7105f2aaac871fcace5096d67d95e17c587a1e83

commit 7105f2aaac871fcace5096d67d95e17c587a1e83
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Sat Oct 07 01:11:59 2017

Extension SW events: Fix bug in loading (unfiltered) listeners.

Changed I80f0ae097772500f41c7509435b878762d55ff98 added support for
saving SW events to prefs, but the loading code was still
incorrect (the added LoadUnfilteredWorkerListeners wasn't used).
Fix the error. This accomplishes two things:

1. A renderer process started only for an extension SW should be
   capable of performing extension API calls and receiving
   extension events.
2. Events registered from an extension SW would survive browser
   restart, similar to how event page events work.

Move channel overriding in ServiceWorkerLazyBackgroundTest to its
constructor, it seems necessary for the override to work after
a browser restart.

Bug: 721147
Change-Id: I6a7c4e765b194752e7b9e976a97178aaed8633e0
Reviewed-on: https://chromium-review.googlesource.com/703399
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#507252}
[modify] https://crrev.com/7105f2aaac871fcace5096d67d95e17c587a1e83/chrome/browser/extensions/service_worker_apitest.cc
[modify] https://crrev.com/7105f2aaac871fcace5096d67d95e17c587a1e83/extensions/browser/event_router.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9ce21b3b881a1245e9c50ed95d0ade0ef9525651

commit 9ce21b3b881a1245e9c50ed95d0ade0ef9525651
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Tue Oct 10 20:43:18 2017

Extension SW: Add persist and load support for filtered (lazy) events.

Implement a) persisting, b) retrieving and c) loading filtered events
from extension service workers.

a) Filtered SW events are stored under a new ExtensionPrefs key
  "filtered_service_worker_events", similar to the non worker
  counterpart ("filtered_events" key).

b) EventRouter::GetRegisteredEvents() can now retrieve service
  worker specific events.

c) EventListenerMap::LoadFilteredLazyListener() can now load
  service worker lazy events.

Add an end to end test for lazy event with filters, that survives
across browser restart.


Bug: 721147
Change-Id: Ida47cd02d515e7fe08def8da4662fc992c78e00d
Reviewed-on: https://chromium-review.googlesource.com/707954
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#507762}
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/browser/extensions/service_worker_apitest.cc
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/a.html
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/a.js
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/b.html
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/background.js
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/manifest.json
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/page.html
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/page.js
[add] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/chrome/test/data/extensions/api_test/service_worker/filtered_events_after_restart/sw.js
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_listener_map.cc
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_listener_map.h
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_listener_map_unittest.cc
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_router.cc
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_router.h
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/browser/event_router_unittest.cc
[modify] https://crrev.com/9ce21b3b881a1245e9c50ed95d0ade0ef9525651/extensions/renderer/event_bindings.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e

commit b7f0e2fd97ba30d1ded25bf35348dbcccd89159e
Author: Istiaque Ahmed <lazyboy@chromium.org>
Date: Wed Oct 11 17:37:42 2017

LazyBackgroundTaskQueue: Use OnceCallback for pending tasks.

LazyBackgroundTaskQueue::PendingTask is a closure that is meant to
be invoked at most once, so turn it into base::OnceCallback from
base::Callback to enforce reality.

TBR=fukino@chromium.org for file_manager/

Bug: 721147
Change-Id: Ib26577dbbe6702093c36a09c640296e8ed81f0d2
Reviewed-on: https://chromium-review.googlesource.com/711154
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508020}
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/chrome/browser/chromeos/file_manager/file_browser_handlers.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/chrome/browser/extensions/devtools_util.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/chrome/browser/extensions/extension_service.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/api/messaging/message_service.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/api/runtime/runtime_api.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/events/lazy_event_dispatcher.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/guest_view/app_view/app_view_guest.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/lazy_background_task_queue.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/lazy_background_task_queue.h
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/lazy_context_task_queue.h
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/process_manager.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/service_worker_task_queue.cc
[modify] https://crrev.com/b7f0e2fd97ba30d1ded25bf35348dbcccd89159e/extensions/browser/service_worker_task_queue.h

Blockedon: 876207

Sign in to add a comment