Chromium Code Reviews| 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 |