1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_RENDERER_DOM_STORAGE_DOM_STORAGE_DISPATCHER_H_ 6#define CONTENT_RENDERER_DOM_STORAGE_DOM_STORAGE_DISPATCHER_H_ 7 8#include "base/memory/ref_counted.h" 9 10class GURL; 11struct DOMStorageMsg_Event_Params; 12 13namespace IPC { 14class Message; 15} 16 17namespace content { 18 19class DOMStorageCachedArea; 20 21// Dispatches DomStorage related messages sent to a renderer process from the 22// main browser process. There is one instance per child process. Messages 23// are dispatched on the main renderer thread. The RenderThreadImpl 24// creates an instance and delegates calls to it. This classes also manages 25// the collection of DOMStorageCachedAreas that are active in the process. 26class DomStorageDispatcher { 27 public: 28 DomStorageDispatcher(); 29 ~DomStorageDispatcher(); 30 31 // Each call to open should be balanced with a call to close. 32 scoped_refptr<DOMStorageCachedArea> OpenCachedArea(int connection_id, 33 int64 namespace_id, 34 const GURL& origin); 35 void CloseCachedArea(int connection_id, DOMStorageCachedArea* area); 36 37 bool OnMessageReceived(const IPC::Message& msg); 38 39 private: 40 class ProxyImpl; 41 42 // IPC message handlers 43 void OnStorageEvent(const DOMStorageMsg_Event_Params& params); 44 void OnAsyncOperationComplete(bool success); 45 46 scoped_refptr<ProxyImpl> proxy_; 47}; 48 49} // namespace content 50 51#endif // CONTENT_RENDERER_DOM_STORAGE_DOM_STORAGE_DISPATCHER_H_ 52