Changeset 220071 in webkit
- Timestamp:
- Jul 31, 2017, 11:05:09 AM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 deleted
- 17 edited
-
WebCore/CMakeLists.txt (modified) (1 diff)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/WebCore.xcodeproj/project.pbxproj (modified) (4 diffs)
-
WebCore/bindings/js/JSBindingsAllInOne.cpp (modified) (1 diff)
-
WebCore/bindings/js/JSStorageCustom.cpp (deleted)
-
WebCore/loader/EmptyClients.cpp (modified) (1 diff)
-
WebCore/page/DOMWindow.cpp (modified) (4 diffs)
-
WebCore/storage/Storage.cpp (modified) (6 diffs)
-
WebCore/storage/Storage.h (modified) (1 diff)
-
WebCore/storage/Storage.idl (modified) (1 diff)
-
WebCore/storage/StorageArea.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp (modified) (1 diff)
-
WebKit/WebProcess/WebStorage/StorageAreaImpl.h (modified) (1 diff)
-
WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp (modified) (1 diff)
-
WebKitLegacy/ChangeLog (modified) (1 diff)
-
WebKitLegacy/Storage/StorageAreaImpl.cpp (modified) (1 diff)
-
WebKitLegacy/Storage/StorageAreaImpl.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r220050 r220071 1223 1223 bindings/js/JSReadableStreamSourceCustom.cpp 1224 1224 bindings/js/JSSVGPathSegCustom.cpp 1225 bindings/js/JSStorageCustom.cpp1226 1225 bindings/js/JSStyleSheetCustom.cpp 1227 1226 bindings/js/JSSubtleCryptoCustom.cpp -
trunk/Source/WebCore/ChangeLog
r220069 r220071 1 2017-07-31 Sam Weinig <sam@webkit.org> 2 3 Remove unnecessary exceptions from storage code 4 https://bugs.webkit.org/show_bug.cgi?id=174572 5 6 Reviewed by Chris Dumez. 7 8 Remove checks for canAccessStorage() and the exceptions they would cause. 9 These were used for Storage in ephemeral sessions, but they are now supported. 10 Add checks for a null frame to functions that can mutate the storage, as the 11 frame is needed for that, and it retains our existing behavior for disconnected 12 frames. By removing these checks / exceptions, we can fully generate Storage.idl. 13 14 * CMakeLists.txt: 15 * WebCore.xcodeproj/project.pbxproj: 16 * bindings/js/JSBindingsAllInOne.cpp: 17 * bindings/js/JSStorageCustom.cpp: Removed. 18 Remove JSStorageCustom.cpp 19 20 * loader/EmptyClients.cpp: 21 * page/DOMWindow.cpp: 22 (WebCore::DOMWindow::sessionStorage): 23 (WebCore::DOMWindow::localStorage): 24 * storage/StorageArea.h: 25 Remove canAccessStorage. 26 27 * storage/Storage.cpp: 28 (WebCore::Storage::length): 29 (WebCore::Storage::key): 30 (WebCore::Storage::getItem): 31 (WebCore::Storage::setItem): 32 (WebCore::Storage::removeItem): 33 (WebCore::Storage::clear): 34 (WebCore::Storage::contains): 35 (WebCore::Storage::isSupportedPropertyName): 36 (WebCore::Storage::supportedPropertyNames): 37 * storage/Storage.h: 38 * storage/Storage.idl: 39 Remove canAccessStorage checks and corresponding exceptions. Add supportedPropertyNames 40 to allow the removal of the [CustomGetOwnPropertyNames]. 41 1 42 2017-07-31 Matt Lewis <jlewis3@apple.com> 2 43 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r220050 r220071 2420 2420 51C81B8A0C4422F70019ECE3 /* FTPDirectoryParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */; }; 2421 2421 51CBFC990D10E483002DBF51 /* CachedFramePlatformData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2422 51D0C5160DAA90B7003B3831 /* JSStorageCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */; };2423 2422 51D1248B1E73627F002B2820 /* NetworkStorageSessionCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51D1248A1E73625C002B2820 /* NetworkStorageSessionCocoa.mm */; }; 2424 2423 51D1248D1E7364AA002B2820 /* CookieCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51D1248C1E736456002B2820 /* CookieCocoa.mm */; }; … … 10126 10125 51C81B880C4422F70019ECE3 /* FTPDirectoryParser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FTPDirectoryParser.h; sourceTree = "<group>"; }; 10127 10126 51CBFC980D10E483002DBF51 /* CachedFramePlatformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFramePlatformData.h; sourceTree = "<group>"; }; 10128 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStorageCustom.cpp; sourceTree = "<group>"; };10129 10127 51D1248A1E73625C002B2820 /* NetworkStorageSessionCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkStorageSessionCocoa.mm; sourceTree = "<group>"; }; 10130 10128 51D1248C1E736456002B2820 /* CookieCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CookieCocoa.mm; sourceTree = "<group>"; }; … … 23580 23578 A85F22081430377D007CC884 /* JSPopStateEventCustom.cpp */, 23581 23579 418C395D1C8F0AAB0051C8A3 /* JSReadableStreamSourceCustom.cpp */, 23582 51D0C5150DAA90B7003B3831 /* JSStorageCustom.cpp */,23583 23580 57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */, 23584 23581 E1FF8F661807460800132674 /* JSWebKitSubtleCryptoCustom.cpp */, … … 32183 32180 A86629D409DA2B48009633A7 /* JSStaticRange.cpp in Sources */, 32184 32181 51E3F9D60DA05E1D00250911 /* JSStorage.cpp in Sources */, 32185 51D0C5160DAA90B7003B3831 /* JSStorageCustom.cpp in Sources */,32186 32182 51E0BAEA0DA55D4A00A9E417 /* JSStorageEvent.cpp in Sources */, 32187 32183 0FF50269102BA9430066F39A /* JSStyleMedia.cpp in Sources */, -
trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
r220008 r220071 86 86 #include "JSReadableStreamPrivateConstructors.cpp" 87 87 #include "JSSVGPathSegCustom.cpp" 88 #include "JSStorageCustom.cpp"89 88 #include "JSStyleSheetCustom.cpp" 90 89 #include "JSTextCustom.cpp" -
trunk/Source/WebCore/loader/EmptyClients.cpp
r219595 r220071 550 550 void clear(Frame*) final { } 551 551 bool contains(const String&) final { return false; } 552 bool canAccessStorage(Frame*) final { return false; }553 552 StorageType storageType() const final { return StorageType::Local; } 554 553 size_t memoryBytesUsedByCache() final { return 0; } -
trunk/Source/WebCore/page/DOMWindow.cpp
r219954 r220071 865 865 return Exception { SecurityError }; 866 866 867 if (m_sessionStorage) { 868 if (!m_sessionStorage->area().canAccessStorage(m_frame)) 869 return Exception { SecurityError }; 867 if (m_sessionStorage) 870 868 return m_sessionStorage.get(); 871 }872 869 873 870 auto* page = document->page(); … … 876 873 877 874 auto storageArea = page->sessionStorage()->storageArea(SecurityOriginData::fromSecurityOrigin(document->securityOrigin())); 878 if (!storageArea->canAccessStorage(m_frame))879 return Exception { SecurityError };880 881 875 m_sessionStorage = Storage::create(m_frame, WTFMove(storageArea)); 882 876 return m_sessionStorage.get(); … … 899 893 // after calling window.close(). See <https://bugs.webkit.org/show_bug.cgi?id=135330>. 900 894 if (!page || !page->isClosing()) { 901 if (m_localStorage) { 902 if (!m_localStorage->area().canAccessStorage(m_frame)) 903 return Exception { SecurityError }; 895 if (m_localStorage) 904 896 return m_localStorage.get(); 905 }906 897 } 907 898 … … 916 907 917 908 auto storageArea = page->storageNamespaceProvider().localStorageArea(*document); 918 919 if (!storageArea->canAccessStorage(m_frame))920 return Exception { SecurityError };921 922 909 m_localStorage = Storage::create(m_frame, WTFMove(storageArea)); 923 910 return m_localStorage.get(); -
trunk/Source/WebCore/storage/Storage.cpp
r219856 r220071 58 58 } 59 59 60 ExceptionOr<unsigned>Storage::length() const60 unsigned Storage::length() const 61 61 { 62 if (!m_storageArea->canAccessStorage(m_frame))63 return Exception { SecurityError };64 65 62 return m_storageArea->length(); 66 63 } 67 64 68 ExceptionOr<String>Storage::key(unsigned index) const65 String Storage::key(unsigned index) const 69 66 { 70 if (!m_storageArea->canAccessStorage(m_frame))71 return Exception { SecurityError };72 73 67 return m_storageArea->key(index); 74 68 } 75 69 76 ExceptionOr<String>Storage::getItem(const String& key) const70 String Storage::getItem(const String& key) const 77 71 { 78 if (!m_storageArea->canAccessStorage(m_frame))79 return Exception { SecurityError };80 81 72 return m_storageArea->item(key); 82 73 } … … 84 75 ExceptionOr<void> Storage::setItem(const String& key, const String& value) 85 76 { 86 if (!m_ storageArea->canAccessStorage(m_frame))87 return Exception { SecurityError };77 if (!m_frame) 78 return Exception { InvalidAccessError }; 88 79 89 80 bool quotaException = false; … … 96 87 ExceptionOr<void> Storage::removeItem(const String& key) 97 88 { 98 if (!m_ storageArea->canAccessStorage(m_frame))99 return Exception { SecurityError };89 if (!m_frame) 90 return Exception { InvalidAccessError }; 100 91 101 92 m_storageArea->removeItem(m_frame, key); … … 105 96 ExceptionOr<void> Storage::clear() 106 97 { 107 if (!m_ storageArea->canAccessStorage(m_frame))108 return Exception { SecurityError };98 if (!m_frame) 99 return Exception { InvalidAccessError }; 109 100 110 101 m_storageArea->clear(m_frame); … … 112 103 } 113 104 114 ExceptionOr<bool>Storage::contains(const String& key) const105 bool Storage::contains(const String& key) const 115 106 { 116 if (!m_storageArea->canAccessStorage(m_frame))117 return Exception { SecurityError };118 119 107 return m_storageArea->contains(key); 120 108 } … … 122 110 bool Storage::isSupportedPropertyName(const String& propertyName) const 123 111 { 124 if (!m_storageArea->canAccessStorage(m_frame))125 return false;126 127 112 return m_storageArea->contains(propertyName); 128 113 } 129 114 115 Vector<AtomicString> Storage::supportedPropertyNames() const 116 { 117 unsigned length = m_storageArea->length(); 118 119 Vector<AtomicString> result; 120 result.reserveInitialCapacity(length); 121 122 for (unsigned i = 0; i < length; ++i) 123 result.uncheckedAppend(m_storageArea->key(i)); 124 125 return result; 126 } 127 130 128 } // namespace WebCore -
trunk/Source/WebCore/storage/Storage.h
r217585 r220071 40 40 ~Storage(); 41 41 42 ExceptionOr<unsigned>length() const;43 ExceptionOr<String>key(unsigned index) const;44 ExceptionOr<String>getItem(const String& key) const;42 unsigned length() const; 43 String key(unsigned index) const; 44 String getItem(const String& key) const; 45 45 ExceptionOr<void> setItem(const String& key, const String& value); 46 46 ExceptionOr<void> removeItem(const String& key); 47 47 ExceptionOr<void> clear(); 48 ExceptionOr<bool>contains(const String& key) const;48 bool contains(const String& key) const; 49 49 50 50 // Bindings support functions. 51 51 bool isSupportedPropertyName(const String&) const; 52 Vector<AtomicString> supportedPropertyNames() const; 52 53 53 54 StorageArea& area() const { return *m_storageArea; } -
trunk/Source/WebCore/storage/Storage.idl
r219302 r220071 25 25 26 26 [ 27 CustomGetOwnPropertyNames,28 27 GenerateIsReachable=ImplFrame, 29 28 SkipVTableValidation, 30 29 ] interface Storage { 31 [GetterMayThrowException]readonly attribute unsigned long length;32 [MayThrowException]DOMString? key(unsigned long index);33 [MayThrowException]getter DOMString? getItem(DOMString key);30 readonly attribute unsigned long length; 31 DOMString? key(unsigned long index); 32 getter DOMString? getItem(DOMString key); 34 33 [MayThrowException] setter void setItem(DOMString key, DOMString data); 35 34 [MayThrowException] deleter void removeItem(DOMString key); 36 35 [MayThrowException] void clear(); 37 36 }; 38 -
trunk/Source/WebCore/storage/StorageArea.h
r214680 r220071 52 52 virtual bool contains(const String& key) = 0; 53 53 54 virtual bool canAccessStorage(Frame*) = 0;55 54 virtual StorageType storageType() const = 0; 56 55 -
trunk/Source/WebKit/ChangeLog
r220049 r220071 1 2017-07-31 Sam Weinig <sam@webkit.org> 2 3 Remove unnecessary exceptions from storage code 4 https://bugs.webkit.org/show_bug.cgi?id=174572 5 6 Reviewed by Chris Dumez. 7 8 * WebProcess/Storage/StorageAreaImpl.cpp: 9 (WebKit::StorageAreaImpl::canAccessStorage): Deleted. 10 * WebProcess/Storage/StorageAreaImpl.h: 11 * WebProcess/Storage/StorageNamespaceImpl.cpp: 12 Remove canAccessStorage. It is no longer called. 13 1 14 2017-07-30 Brady Eidson <beidson@apple.com> 2 15 -
trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.cpp
r219966 r220071 97 97 } 98 98 99 bool StorageAreaImpl::canAccessStorage(Frame* frame)100 {101 return frame && frame->page();102 }103 104 99 StorageType StorageAreaImpl::storageType() const 105 100 { -
trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h
r219966 r220071 57 57 void clear(WebCore::Frame* sourceFrame) override; 58 58 bool contains(const String& key) override; 59 bool canAccessStorage(WebCore::Frame*) override;60 59 WebCore::StorageType storageType() const override; 61 60 size_t memoryBytesUsedByCache() override; -
trunk/Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp
r219966 r220071 164 164 } 165 165 166 bool canAccessStorage(Frame* frame)167 {168 return frame && frame->page();169 }170 171 166 StorageType storageType() const 172 167 { -
trunk/Source/WebKitLegacy/ChangeLog
r219763 r220071 1 2017-07-31 Sam Weinig <sam@webkit.org> 2 3 Remove unnecessary exceptions from storage code 4 https://bugs.webkit.org/show_bug.cgi?id=174572 5 6 Reviewed by Chris Dumez. 7 8 * Storage/StorageAreaImpl.cpp: 9 (WebKit::StorageAreaImpl::canAccessStorage): Deleted. 10 * Storage/StorageAreaImpl.h: 11 Remove canAccessStorage. It is no longer called. 12 1 13 2017-07-14 Filip Pizlo <fpizlo@apple.com> 2 14 -
trunk/Source/WebKitLegacy/Storage/StorageAreaImpl.cpp
r214680 r220071 99 99 } 100 100 101 bool StorageAreaImpl::canAccessStorage(Frame* frame)102 {103 return frame && frame->page();104 }105 106 101 StorageType StorageAreaImpl::storageType() const 107 102 { -
trunk/Source/WebKitLegacy/Storage/StorageAreaImpl.h
r208727 r220071 54 54 bool contains(const String& key) override; 55 55 56 bool canAccessStorage(WebCore::Frame* sourceFrame) override;57 56 WebCore::StorageType storageType() const override; 58 57
Note:
See TracChangeset
for help on using the changeset viewer.