Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2826)

Unified Diff: extensions/browser/extension_host.h

Issue 823703004: Tracking push events for lucid sleep (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Kill renderer if it sends a bad message id Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/extension_host.h
diff --git a/extensions/browser/extension_host.h b/extensions/browser/extension_host.h
index 4f815011c2b57a4471e177c292d250f6ca715eda..62925fc3c11b669a5dc8c129bd3a9483acec0be2 100644
--- a/extensions/browser/extension_host.h
+++ b/extensions/browser/extension_host.h
@@ -5,11 +5,13 @@
#ifndef EXTENSIONS_BROWSER_EXTENSION_HOST_H_
#define EXTENSIONS_BROWSER_EXTENSION_HOST_H_
+#include <set>
#include <string>
#include <vector>
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "base/observer_list.h"
#include "base/timer/elapsed_timer.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
@@ -31,6 +33,7 @@ class SiteInstance;
namespace extensions {
class Extension;
class ExtensionHostDelegate;
+class ExtensionHostObserver;
class WindowController;
// This class is the browser component of an extension component's RenderView.
@@ -75,6 +78,22 @@ class ExtensionHost : public content::WebContentsDelegate,
// (can be NULL). This happens delayed to avoid locking the UI.
void CreateRenderViewSoon();
+ // Typical observer interface.
+ void AddObserver(ExtensionHostObserver* observer);
+ void RemoveObserver(ExtensionHostObserver* observer);
+
+ // Called when an IPC message is dispatched to the RenderView associated with
+ // this ExtensionHost.
+ void OnMessageDispatched(const std::string& event_name, int message_id);
+
+ // Called by the ProcessManager when a network request is started by the
+ // extension corresponding to this ExtensionHost.
+ void OnNetworkRequestStarted(uint64 request_id);
+
+ // Called by the ProcessManager when a previously started network request is
+ // finished.
+ void OnNetworkRequestDone(uint64 request_id);
+
// content::WebContentsObserver
bool OnMessageReceived(const IPC::Message& message) override;
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
@@ -135,7 +154,7 @@ class ExtensionHost : public content::WebContentsDelegate,
// Message handlers.
void OnRequest(const ExtensionHostMsg_Request_Params& params);
- void OnEventAck();
+ void OnEventAck(int message_id);
void OnIncrementLazyKeepaliveCount();
void OnDecrementLazyKeepaliveCount();
@@ -168,6 +187,9 @@ class ExtensionHost : public content::WebContentsDelegate,
// The original URL of the page being hosted.
GURL initial_url_;
+ // Messages sent out to the renderer that have not been acknowledged yet.
+ std::set<int> unacked_messages_;
+
content::NotificationRegistrar registrar_;
ExtensionFunctionDispatcher extension_function_dispatcher_;
@@ -178,6 +200,8 @@ class ExtensionHost : public content::WebContentsDelegate,
// Used to measure how long it's been since the host was created.
base::ElapsedTimer since_created_;
+ ObserverList<ExtensionHostObserver> observer_list_;
+
DISALLOW_COPY_AND_ASSIGN(ExtensionHost);
};

Powered by Google App Engine
This is Rietveld 408576698