[Extensions] Display runtime errors in chrome://extensions.
This CL makes code changes to display runtime errors on
chrome://extensions for service worker based extensions.
Bug: 1152202
Change-Id: I4e8979ddd35c0d17e14fefba3557e8740bdac5b9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2567672
Reviewed-by: Arthur Sonzogni <[email protected]>
Reviewed-by: Istiaque Ahmed <[email protected]>
Reviewed-by: Hiroki Nakagawa <[email protected]>
Commit-Queue: Ghazale Hosseinabadi <[email protected]>
Cr-Commit-Position: refs/heads/master@{#892025}
diff --git a/extensions/browser/service_worker_task_queue.h b/extensions/browser/service_worker_task_queue.h
index ebe605656..0f2dd33a 100644
--- a/extensions/browser/service_worker_task_queue.h
+++ b/extensions/browser/service_worker_task_queue.h
@@ -14,6 +14,7 @@
#include "base/strings/string_util.h"
#include "base/version.h"
#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/service_worker_context_observer.h"
#include "extensions/browser/lazy_context_id.h"
#include "extensions/browser/lazy_context_task_queue.h"
#include "extensions/browser/service_worker/worker_id.h"
@@ -25,6 +26,7 @@
namespace content {
class BrowserContext;
+class ServiceWorkerContext;
}
namespace extensions {
@@ -73,7 +75,8 @@
//
// TODO(lazyboy): Clean up queue when extension is unloaded/uninstalled.
class ServiceWorkerTaskQueue : public KeyedService,
- public LazyContextTaskQueue {
+ public LazyContextTaskQueue,
+ public content::ServiceWorkerContextObserver {
public:
explicit ServiceWorkerTaskQueue(content::BrowserContext* browser_context);
~ServiceWorkerTaskQueue() override;
@@ -123,6 +126,12 @@
absl::optional<ActivationSequence> GetCurrentSequence(
const ExtensionId& extension_id) const;
+ // content::ServiceWorkerContextObserver:
+ void OnReportConsoleMessage(int64_t version_id,
+ const GURL& scope,
+ const content::ConsoleMessage& message) override;
+ void OnDestruct(content::ServiceWorkerContext* context) override;
+
class TestObserver {
public:
TestObserver();
@@ -197,6 +206,8 @@
int next_activation_sequence_ = 0;
+ std::multiset<content::ServiceWorkerContext*> observing_worker_contexts_;
+
// The state of worker of each activated extension.
std::map<SequencedContextId, WorkerState> worker_state_map_;