1// Copyright 2013 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// Multiply-included message file, no traditional include guard.
6#include "content/common/dom_storage/dom_storage_types.h"
7#include "content/public/common/common_param_traits.h"
8#include "ipc/ipc_message_macros.h"
9#include "ipc/ipc_param_traits.h"
10#include "third_party/WebKit/public/platform/WebStorageArea.h"
11#include "url/gurl.h"
12
13#define IPC_MESSAGE_START DOMStorageMsgStart
14
15IPC_ENUM_TRAITS_MAX_VALUE(blink::WebStorageArea::Result,
16                          blink::WebStorageArea::ResultLast)
17
18// Signals a local storage event.
19IPC_STRUCT_BEGIN(DOMStorageMsg_Event_Params)
20  // The key that generated the storage event.  Null if clear() was called.
21  IPC_STRUCT_MEMBER(base::NullableString16, key)
22
23  // The old value of this key.  Null on clear() or if it didn't have a value.
24  IPC_STRUCT_MEMBER(base::NullableString16, old_value)
25
26  // The new value of this key.  Null on removeItem() or clear().
27  IPC_STRUCT_MEMBER(base::NullableString16, new_value)
28
29  // The origin this is associated with.
30  IPC_STRUCT_MEMBER(GURL, origin)
31
32  // The URL of the page that caused the storage event.
33  IPC_STRUCT_MEMBER(GURL, page_url)
34
35  // The non-zero connection_id which caused the event or 0 if the event
36  // was not caused by the target renderer process.
37  IPC_STRUCT_MEMBER(int, connection_id)
38
39  // The non-zero session namespace_id associated with the event or 0 if
40  // this is a local storage event.
41  IPC_STRUCT_MEMBER(int64, namespace_id)
42IPC_STRUCT_END()
43
44// DOM Storage messages sent from the browser to the renderer.
45
46// Storage events are broadcast to all renderer processes.
47IPC_MESSAGE_CONTROL1(DOMStorageMsg_Event,
48                     DOMStorageMsg_Event_Params)
49
50// Completion notification sent in response to each async
51// load, set, remove, and clear operation.
52// Used to maintain the integrity  of the renderer-side cache.
53IPC_MESSAGE_CONTROL1(DOMStorageMsg_AsyncOperationComplete,
54                     bool /* success */)
55
56// Notification instructing the renderer to refresh all cached values for
57// the given namespace.
58IPC_MESSAGE_CONTROL1(DOMStorageMsg_ResetCachedValues,
59                     int64 /* namespace_id */)
60
61// DOM Storage messages sent from the renderer to the browser.
62// Note: The 'connection_id' must be the first parameter in these message.
63
64// Open the storage area for a particular origin within a namespace.
65IPC_MESSAGE_CONTROL3(DOMStorageHostMsg_OpenStorageArea,
66                     int /* connection_id */,
67                     int64 /* namespace_id */,
68                     GURL /* origin */)
69
70// Close a previously opened storage area.
71IPC_MESSAGE_CONTROL1(DOMStorageHostMsg_CloseStorageArea,
72                     int /* connection_id */)
73
74// Retrieves the set of key/value pairs for the area. Used to prime
75// the renderer-side cache. A completion notification is sent in response.
76// The response will also indicate whether the renderer should send
77// messagse to the browser for get operations for logging purposes.
78IPC_SYNC_MESSAGE_CONTROL1_2(DOMStorageHostMsg_LoadStorageArea,
79                            int /* connection_id */,
80                            content::DOMStorageValuesMap,
81                            bool /* send_log_get_messages */)
82
83// Set a value that's associated with a key in a storage area.
84// A completion notification is sent in response.
85IPC_MESSAGE_CONTROL4(DOMStorageHostMsg_SetItem,
86                     int /* connection_id */,
87                     base::string16 /* key */,
88                     base::string16 /* value */,
89                     GURL /* page_url */)
90
91// Logs that a get operation was performed on a key/value pair.
92IPC_MESSAGE_CONTROL3(DOMStorageHostMsg_LogGetItem,
93                     int /* connection_id */,
94                     base::string16 /* key */,
95                     base::NullableString16 /* value */)
96
97// Remove the value associated with a key in a storage area.
98// A completion notification is sent in response.
99IPC_MESSAGE_CONTROL3(DOMStorageHostMsg_RemoveItem,
100                     int /* connection_id */,
101                     base::string16 /* key */,
102                     GURL /* page_url */)
103
104// Clear the storage area. A completion notification is sent in response.
105IPC_MESSAGE_CONTROL2(DOMStorageHostMsg_Clear,
106                     int /* connection_id */,
107                     GURL /* page_url */)
108
109// Used to flush the ipc message queue.
110IPC_SYNC_MESSAGE_CONTROL0_0(DOMStorageHostMsg_FlushMessages)
111