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

Unified Diff: content/browser/dom_storage/dom_storage_message_filter_new.h

Issue 9667013: DOMStorageMessageFilter implementation that utilizes the new dom_storage classes. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 | « content/browser/dom_storage/OWNERS ('k') | content/browser/dom_storage/dom_storage_message_filter_new.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/dom_storage/dom_storage_message_filter_new.h
===================================================================
--- content/browser/dom_storage/dom_storage_message_filter_new.h (revision 0)
+++ content/browser/dom_storage/dom_storage_message_filter_new.h (working copy)
@@ -2,49 +2,51 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CONTENT_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_
-#define CONTENT_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_
+#ifndef CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_MESSAGE_FILTER_H_
+#define CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_MESSAGE_FILTER_H_
#pragma once
#include "base/memory/ref_counted.h"
-#include "base/message_loop_helpers.h"
-#include "base/process.h"
-#include "content/browser/in_process_webkit/dom_storage_area.h"
-#include "content/common/dom_storage_common.h"
+#include "base/memory/scoped_ptr.h"
#include "content/public/browser/browser_message_filter.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h"
+#include "webkit/dom_storage/dom_storage_context.h"
+#include "webkit/dom_storage/dom_storage_types.h"
+#ifdef ENABLE_NEW_DOM_STORAGE_BACKEND
+
class DOMStorageContextImpl;
class GURL;
-struct DOMStorageMsg_Event_Params;
+class NullableString16;
+namespace dom_storage {
+class DomStorageArea;
+class DomStorageContext;
+class DomStorageHost;
+}
+
// This class handles the logistics of DOM Storage within the browser process.
-// It mostly ferries information between IPCs and the WebKit implementations,
-// but it also handles some special cases like when renderer processes die.
-class DOMStorageMessageFilter : public content::BrowserMessageFilter {
+// It mostly ferries information between IPCs and the dom_storage classes.
+class DOMStorageMessageFilter
+ : public content::BrowserMessageFilter,
+ public dom_storage::DomStorageContext::EventObserver {
public:
- // Only call the constructor from the UI thread.
- DOMStorageMessageFilter(int process_id,
- DOMStorageContextImpl* dom_storage_context);
+ explicit DOMStorageMessageFilter(int unused, DOMStorageContextImpl* context);
+ private:
+ virtual ~DOMStorageMessageFilter();
+
+ void InitializeInSequence();
+ void UninitializeInSequence();
+
// content::BrowserMessageFilter implementation
- virtual void OnChannelConnected(int32 peer_pid) OVERRIDE;
- virtual void OverrideThreadForMessage(
- const IPC::Message& message,
- content::BrowserThread::ID* thread) OVERRIDE;
+ virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE;
+ virtual void OnFilterRemoved() OVERRIDE;
+ virtual base::TaskRunner* OverrideTaskRunnerForMessage(
+ const IPC::Message& message) OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message,
bool* message_was_ok) OVERRIDE;
- virtual void OnDestruct() const OVERRIDE;
- // Only call on the WebKit thread.
- static void DispatchStorageEvent(const NullableString16& key,
- const NullableString16& old_value, const NullableString16& new_value,
- const string16& origin, const GURL& url, bool is_local_storage);
-
- private:
- friend class content::BrowserThread;
- friend class base::DeleteHelper<DOMStorageMessageFilter>;
- virtual ~DOMStorageMessageFilter();
-
// Message Handlers.
void OnOpenStorageArea(int64 namespace_id, const string16& origin,
int64* storage_area_id);
@@ -61,31 +63,37 @@
const GURL& url, NullableString16* old_value);
void OnClear(int64 storage_area_id, const GURL& url, bool* something_cleared);
- // Only call on the IO thread.
- void OnStorageEvent(const DOMStorageMsg_Event_Params& params);
+ // DomStorageContext::EventObserver implementation which
+ // sends events back to our renderer process.
+ virtual void OnDomStorageItemSet(
+ const dom_storage::DomStorageArea* area,
+ const string16& key,
+ const string16& new_value,
+ const NullableString16& old_value,
+ const GURL& page_url) OVERRIDE;
+ virtual void OnDomStorageItemRemoved(
+ const dom_storage::DomStorageArea* area,
+ const string16& key,
+ const string16& old_value,
+ const GURL& page_url) OVERRIDE;
+ virtual void OnDomStorageAreaCleared(
+ const dom_storage::DomStorageArea* area,
+ const GURL& page_url) OVERRIDE;
- // A shortcut for accessing our context.
- DOMStorageContextImpl* Context() { return dom_storage_context_; }
+ void SendDomStorageEvent(
+ const dom_storage::DomStorageArea* area,
+ const GURL& page_url,
+ const NullableString16& key,
+ const NullableString16& new_value,
+ const NullableString16& old_value);
- // Use whenever there's a chance OnStorageEvent will be called.
- class ScopedStorageEventContext {
- public:
- ScopedStorageEventContext(
- DOMStorageMessageFilter* dispatcher_message_filter,
- const GURL* url);
- ~ScopedStorageEventContext();
- };
+ scoped_refptr<dom_storage::DomStorageContext> context_;
+ scoped_ptr<dom_storage::DomStorageHost> host_;
+ bool is_dispatching_message_;
- // Only access on the WebKit thread! Used for storage events.
- static DOMStorageMessageFilter* storage_event_message_filter;
- static const GURL* storage_event_url_;
-
- scoped_refptr<DOMStorageContextImpl> dom_storage_context_;
-
- // Used to dispatch messages to the correct view host.
- int process_id_;
-
DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageMessageFilter);
};
-#endif // CONTENT_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_
+#endif // ENABLE_NEW_DOM_STORAGE_BACKEND
+
+#endif // CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_MESSAGE_FILTER_H_
« no previous file with comments | « content/browser/dom_storage/OWNERS ('k') | content/browser/dom_storage/dom_storage_message_filter_new.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698