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 <[email protected]>
Reviewed-by: Devlin <[email protected]>
Cr-Commit-Position: refs/heads/master@{#507762}
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
index 6596fa85..b7d8134 100644
--- a/extensions/browser/event_router.h
+++ b/extensions/browser/event_router.h
@@ -301,17 +301,20 @@
   // Adds a filter to an event.
   void AddFilterToEvent(const std::string& event_name,
                         const std::string& extension_id,
+                        bool is_for_service_worker,
                         const base::DictionaryValue* filter);
 
   // Removes a filter from an event.
   void RemoveFilterFromEvent(const std::string& event_name,
                              const std::string& extension_id,
+                             bool is_for_service_worker,
                              const base::DictionaryValue* filter);
 
   // Returns the dictionary of event filters that the given extension has
   // registered.
   const base::DictionaryValue* GetFilteredEvents(
-      const std::string& extension_id);
+      const std::string& extension_id,
+      RegisteredEventType type);
 
   // Track the dispatched events that have not yet sent an ACK from the
   // renderer.