| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All Rights Reserved. | 2 * Copyright (C) 2009 Google Inc. All Rights Reserved. |
| 3 * (C) 2008 Apple Inc. | 3 * (C) 2008 Apple Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 { | 57 { |
| 58 } | 58 } |
| 59 | 59 |
| 60 StorageAreaProxy::~StorageAreaProxy() | 60 StorageAreaProxy::~StorageAreaProxy() |
| 61 { | 61 { |
| 62 } | 62 } |
| 63 | 63 |
| 64 unsigned StorageAreaProxy::length(ExceptionCode& ec, Frame* frame) | 64 unsigned StorageAreaProxy::length(ExceptionCode& ec, Frame* frame) |
| 65 { | 65 { |
| 66 if (!canAccessStorage(frame)) { | 66 if (!canAccessStorage(frame)) { |
| 67 ec = SECURITY_ERR; | 67 ec = SecurityError; |
| 68 return 0; | 68 return 0; |
| 69 } | 69 } |
| 70 ec = 0; | 70 ec = 0; |
| 71 return m_storageArea->length(); | 71 return m_storageArea->length(); |
| 72 } | 72 } |
| 73 | 73 |
| 74 String StorageAreaProxy::key(unsigned index, ExceptionCode& ec, Frame* frame) | 74 String StorageAreaProxy::key(unsigned index, ExceptionCode& ec, Frame* frame) |
| 75 { | 75 { |
| 76 if (!canAccessStorage(frame)) { | 76 if (!canAccessStorage(frame)) { |
| 77 ec = SECURITY_ERR; | 77 ec = SecurityError; |
| 78 return String(); | 78 return String(); |
| 79 } | 79 } |
| 80 ec = 0; | 80 ec = 0; |
| 81 return m_storageArea->key(index); | 81 return m_storageArea->key(index); |
| 82 } | 82 } |
| 83 | 83 |
| 84 String StorageAreaProxy::getItem(const String& key, ExceptionCode& ec, Frame* fr
ame) | 84 String StorageAreaProxy::getItem(const String& key, ExceptionCode& ec, Frame* fr
ame) |
| 85 { | 85 { |
| 86 if (!canAccessStorage(frame)) { | 86 if (!canAccessStorage(frame)) { |
| 87 ec = SECURITY_ERR; | 87 ec = SecurityError; |
| 88 return String(); | 88 return String(); |
| 89 } | 89 } |
| 90 ec = 0; | 90 ec = 0; |
| 91 return m_storageArea->getItem(key); | 91 return m_storageArea->getItem(key); |
| 92 } | 92 } |
| 93 | 93 |
| 94 void StorageAreaProxy::setItem(const String& key, const String& value, Exception
Code& ec, Frame* frame) | 94 void StorageAreaProxy::setItem(const String& key, const String& value, Exception
Code& ec, Frame* frame) |
| 95 { | 95 { |
| 96 if (!canAccessStorage(frame)) { | 96 if (!canAccessStorage(frame)) { |
| 97 ec = SECURITY_ERR; | 97 ec = SecurityError; |
| 98 return; | 98 return; |
| 99 } | 99 } |
| 100 WebKit::WebStorageArea::Result result = WebKit::WebStorageArea::ResultOK; | 100 WebKit::WebStorageArea::Result result = WebKit::WebStorageArea::ResultOK; |
| 101 m_storageArea->setItem(key, value, frame->document()->url(), result); | 101 m_storageArea->setItem(key, value, frame->document()->url(), result); |
| 102 ec = (result == WebKit::WebStorageArea::ResultOK) ? 0 : QUOTA_EXCEEDED_ERR; | 102 ec = (result == WebKit::WebStorageArea::ResultOK) ? 0 : QUOTA_EXCEEDED_ERR; |
| 103 } | 103 } |
| 104 | 104 |
| 105 void StorageAreaProxy::removeItem(const String& key, ExceptionCode& ec, Frame* f
rame) | 105 void StorageAreaProxy::removeItem(const String& key, ExceptionCode& ec, Frame* f
rame) |
| 106 { | 106 { |
| 107 if (!canAccessStorage(frame)) { | 107 if (!canAccessStorage(frame)) { |
| 108 ec = SECURITY_ERR; | 108 ec = SecurityError; |
| 109 return; | 109 return; |
| 110 } | 110 } |
| 111 ec = 0; | 111 ec = 0; |
| 112 m_storageArea->removeItem(key, frame->document()->url()); | 112 m_storageArea->removeItem(key, frame->document()->url()); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void StorageAreaProxy::clear(ExceptionCode& ec, Frame* frame) | 115 void StorageAreaProxy::clear(ExceptionCode& ec, Frame* frame) |
| 116 { | 116 { |
| 117 if (!canAccessStorage(frame)) { | 117 if (!canAccessStorage(frame)) { |
| 118 ec = SECURITY_ERR; | 118 ec = SecurityError; |
| 119 return; | 119 return; |
| 120 } | 120 } |
| 121 ec = 0; | 121 ec = 0; |
| 122 m_storageArea->clear(frame->document()->url()); | 122 m_storageArea->clear(frame->document()->url()); |
| 123 } | 123 } |
| 124 | 124 |
| 125 bool StorageAreaProxy::contains(const String& key, ExceptionCode& ec, Frame* fra
me) | 125 bool StorageAreaProxy::contains(const String& key, ExceptionCode& ec, Frame* fra
me) |
| 126 { | 126 { |
| 127 if (!canAccessStorage(frame)) { | 127 if (!canAccessStorage(frame)) { |
| 128 ec = SECURITY_ERR; | 128 ec = SecurityError; |
| 129 return false; | 129 return false; |
| 130 } | 130 } |
| 131 return !getItem(key, ec, frame).isNull(); | 131 return !getItem(key, ec, frame).isNull(); |
| 132 } | 132 } |
| 133 | 133 |
| 134 bool StorageAreaProxy::canAccessStorage(Frame* frame) | 134 bool StorageAreaProxy::canAccessStorage(Frame* frame) |
| 135 { | 135 { |
| 136 if (!frame || !frame->page()) | 136 if (!frame || !frame->page()) |
| 137 return false; | 137 return false; |
| 138 if (m_canAccessStorageCachedFrame == frame) | 138 if (m_canAccessStorageCachedFrame == frame) |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 } | 195 } |
| 196 | 196 |
| 197 bool StorageAreaProxy::isEventSource(Storage* storage, WebKit::WebStorageArea* s
ourceAreaInstance) | 197 bool StorageAreaProxy::isEventSource(Storage* storage, WebKit::WebStorageArea* s
ourceAreaInstance) |
| 198 { | 198 { |
| 199 ASSERT(storage); | 199 ASSERT(storage); |
| 200 StorageAreaProxy* areaProxy = static_cast<StorageAreaProxy*>(storage->area()
); | 200 StorageAreaProxy* areaProxy = static_cast<StorageAreaProxy*>(storage->area()
); |
| 201 return areaProxy->m_storageArea == sourceAreaInstance; | 201 return areaProxy->m_storageArea == sourceAreaInstance; |
| 202 } | 202 } |
| 203 | 203 |
| 204 } // namespace WebCore | 204 } // namespace WebCore |
| OLD | NEW |