OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/renderer_webstoragearea_impl.h" | 5 #include "content/renderer/renderer_webstoragearea_impl.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | |
8 #include "base/time.h" | |
7 #include "content/common/dom_storage_messages.h" | 9 #include "content/common/dom_storage_messages.h" |
8 #include "content/renderer/render_thread_impl.h" | 10 #include "content/renderer/render_thread_impl.h" |
9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h " | 11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h " |
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" | 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" |
11 | 13 |
12 using WebKit::WebStorageNamespace; | 14 using WebKit::WebStorageNamespace; |
13 using WebKit::WebString; | 15 using WebKit::WebString; |
14 using WebKit::WebURL; | 16 using WebKit::WebURL; |
15 | 17 |
16 RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( | 18 RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( |
17 int64 namespace_id, const WebString& origin) { | 19 int64 namespace_id, const WebString& origin) { |
18 RenderThreadImpl::current()->Send( | 20 RenderThreadImpl::current()->Send( |
19 new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, | 21 new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, |
20 &storage_area_id_)); | 22 &storage_area_id_)); |
21 } | 23 } |
22 | 24 |
23 RendererWebStorageAreaImpl::~RendererWebStorageAreaImpl() { | 25 RendererWebStorageAreaImpl::~RendererWebStorageAreaImpl() { |
24 } | 26 } |
25 | 27 |
26 unsigned RendererWebStorageAreaImpl::length() { | 28 unsigned RendererWebStorageAreaImpl::length() { |
27 unsigned length; | 29 unsigned length; |
30 base::Time start = base::Time::Now(); | |
28 RenderThreadImpl::current()->Send( | 31 RenderThreadImpl::current()->Send( |
29 new DOMStorageHostMsg_Length(storage_area_id_, &length)); | 32 new DOMStorageHostMsg_Length(storage_area_id_, &length)); |
33 UMA_HISTOGRAM_TIMES("DOMStorage.length", base::Time::Now() - start); | |
darin (slow to review)
2011/11/01 05:31:49
it seems like we should have a convenience macro f
cbentzel
2011/11/01 11:37:52
Yes. I'll see how common this is. Most of the timi
| |
30 return length; | 34 return length; |
31 } | 35 } |
32 | 36 |
33 WebString RendererWebStorageAreaImpl::key(unsigned index) { | 37 WebString RendererWebStorageAreaImpl::key(unsigned index) { |
34 NullableString16 key; | 38 NullableString16 key; |
39 base::Time start = base::Time::Now(); | |
35 RenderThreadImpl::current()->Send( | 40 RenderThreadImpl::current()->Send( |
36 new DOMStorageHostMsg_Key(storage_area_id_, index, &key)); | 41 new DOMStorageHostMsg_Key(storage_area_id_, index, &key)); |
42 UMA_HISTOGRAM_TIMES("DOMStorage.key", base::Time::Now() - start); | |
37 return key; | 43 return key; |
38 } | 44 } |
39 | 45 |
40 WebString RendererWebStorageAreaImpl::getItem(const WebString& key) { | 46 WebString RendererWebStorageAreaImpl::getItem(const WebString& key) { |
41 NullableString16 value; | 47 NullableString16 value; |
48 base::Time start = base::Time::Now(); | |
42 RenderThreadImpl::current()->Send( | 49 RenderThreadImpl::current()->Send( |
43 new DOMStorageHostMsg_GetItem(storage_area_id_, key, &value)); | 50 new DOMStorageHostMsg_GetItem(storage_area_id_, key, &value)); |
51 UMA_HISTOGRAM_TIMES("DOMStorage.getItem", base::Time::Now() - start); | |
44 return value; | 52 return value; |
45 } | 53 } |
46 | 54 |
47 void RendererWebStorageAreaImpl::setItem( | 55 void RendererWebStorageAreaImpl::setItem( |
48 const WebString& key, const WebString& value, const WebURL& url, | 56 const WebString& key, const WebString& value, const WebURL& url, |
49 WebStorageArea::Result& result, WebString& old_value_webkit) { | 57 WebStorageArea::Result& result, WebString& old_value_webkit) { |
50 const size_t kMaxKeyValueLength = WebStorageNamespace::m_localStorageQuota; | 58 const size_t kMaxKeyValueLength = WebStorageNamespace::m_localStorageQuota; |
51 if (key.length() + value.length() > kMaxKeyValueLength) { | 59 if (key.length() + value.length() > kMaxKeyValueLength) { |
52 result = ResultBlockedByQuota; | 60 result = ResultBlockedByQuota; |
53 return; | 61 return; |
54 } | 62 } |
55 NullableString16 old_value; | 63 NullableString16 old_value; |
64 base::Time start = base::Time::Now(); | |
56 RenderThreadImpl::current()->Send(new DOMStorageHostMsg_SetItem( | 65 RenderThreadImpl::current()->Send(new DOMStorageHostMsg_SetItem( |
57 storage_area_id_, key, value, url, &result, &old_value)); | 66 storage_area_id_, key, value, url, &result, &old_value)); |
67 UMA_HISTOGRAM_TIMES("DOMStorage.setItem", base::Time::Now() - start); | |
58 old_value_webkit = old_value; | 68 old_value_webkit = old_value; |
59 } | 69 } |
60 | 70 |
61 void RendererWebStorageAreaImpl::removeItem( | 71 void RendererWebStorageAreaImpl::removeItem( |
62 const WebString& key, const WebURL& url, WebString& old_value_webkit) { | 72 const WebString& key, const WebURL& url, WebString& old_value_webkit) { |
63 NullableString16 old_value; | 73 NullableString16 old_value; |
74 base::Time start = base::Time::Now(); | |
64 RenderThreadImpl::current()->Send( | 75 RenderThreadImpl::current()->Send( |
65 new DOMStorageHostMsg_RemoveItem(storage_area_id_, key, url, &old_value)); | 76 new DOMStorageHostMsg_RemoveItem(storage_area_id_, key, url, &old_value)); |
77 UMA_HISTOGRAM_TIMES("DOMStorage.removeItem", base::Time::Now() - start); | |
66 old_value_webkit = old_value; | 78 old_value_webkit = old_value; |
67 } | 79 } |
68 | 80 |
69 void RendererWebStorageAreaImpl::clear( | 81 void RendererWebStorageAreaImpl::clear( |
70 const WebURL& url, bool& cleared_something) { | 82 const WebURL& url, bool& cleared_something) { |
83 base::Time start = base::Time::Now(); | |
71 RenderThreadImpl::current()->Send( | 84 RenderThreadImpl::current()->Send( |
72 new DOMStorageHostMsg_Clear(storage_area_id_, url, &cleared_something)); | 85 new DOMStorageHostMsg_Clear(storage_area_id_, url, &cleared_something)); |
86 UMA_HISTOGRAM_TIMES("DOMStorage.clear", base::Time::Now() - start); | |
73 } | 87 } |
OLD | NEW |