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

Unified Diff: extensions/browser/extension_message_filter.h

Issue 901573003: Split ExtensionMessageFilter up into a UI thread part and an IO thread part. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: review Created 5 years, 10 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
« no previous file with comments | « extensions/browser/extension_function_dispatcher.cc ('k') | extensions/browser/extension_message_filter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/extension_message_filter.h
diff --git a/extensions/browser/extension_message_filter.h b/extensions/browser/extension_message_filter.h
index 5a5947c2c8058031c33af063d70a9290bb2cae87..609834f16961806e779494796b42933dbed4b75e 100644
--- a/extensions/browser/extension_message_filter.h
+++ b/extensions/browser/extension_message_filter.h
@@ -11,18 +11,13 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#include "components/keyed_service/core/keyed_service_shutdown_notifier.h"
#include "content/public/browser/browser_message_filter.h"
-#include "url/gurl.h"
-struct ExtensionHostMsg_Request_Params;
-
-namespace base {
-class DictionaryValue;
-}
+class GURL;
namespace content {
class BrowserContext;
-class WebContents;
}
namespace gfx {
@@ -31,11 +26,12 @@ class Size;
namespace extensions {
-class InfoMap;
+class ExtensionSystem;
+class ProcessManager;
// This class filters out incoming extension-specific IPC messages from the
-// renderer process. It is created on the UI thread. Messages may be handled on
-// the IO thread or the UI thread.
+// renderer process. It is created and destroyed on the UI thread and handles
+// messages there.
class ExtensionMessageFilter : public content::BrowserMessageFilter {
public:
ExtensionMessageFilter(int render_process_id,
@@ -43,12 +39,16 @@ class ExtensionMessageFilter : public content::BrowserMessageFilter {
int render_process_id() { return render_process_id_; }
+ static void EnsureShutdownNotifierFactoryBuilt();
+
private:
- friend class content::BrowserThread;
friend class base::DeleteHelper<ExtensionMessageFilter>;
+ friend class content::BrowserThread;
~ExtensionMessageFilter() override;
+ void ShutdownOnUIThread();
+
// content::BrowserMessageFilter implementation.
void OverrideThreadForMessage(const IPC::Message& message,
content::BrowserThread::ID* thread) override;
@@ -83,22 +83,13 @@ class ExtensionMessageFilter : public content::BrowserMessageFilter {
void OnExtensionSuspendAck(const std::string& extension_id);
void OnExtensionTransferBlobsAck(const std::vector<std::string>& blob_uuids);
- // Message handlers on the IO thread.
- void OnExtensionGenerateUniqueID(int* unique_id);
- void OnExtensionResumeRequests(int route_id);
- void OnExtensionRequestForIOThread(
- int routing_id,
- const ExtensionHostMsg_Request_Params& params);
-
const int render_process_id_;
- // Should only be accessed on the UI thread.
- content::BrowserContext* browser_context_;
-
- scoped_refptr<extensions::InfoMap> extension_info_map_;
+ scoped_ptr<KeyedServiceShutdownNotifier::Subscription> shutdown_notifier_;
- // Weak pointers produced by this factory are bound to the IO thread.
- base::WeakPtrFactory<ExtensionMessageFilter> weak_ptr_factory_;
+ // Owned by the browser context; should only be accessed on the UI thread.
+ ExtensionSystem* extension_system_;
+ ProcessManager* process_manager_;
DISALLOW_COPY_AND_ASSIGN(ExtensionMessageFilter);
};
« no previous file with comments | « extensions/browser/extension_function_dispatcher.cc ('k') | extensions/browser/extension_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698