Changeset 163212 in webkit
- Timestamp:
- Jan 31, 2014 3:28:44 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 12 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r163208 r163212 1 2014-01-31 Alexey Proskuryakov <ap@apple.com> 2 3 Expose creation and modification times for LocalStorage 4 https://bugs.webkit.org/show_bug.cgi?id=128018 5 6 Reviewed by Anders Carlsson. 7 8 * WebCore.exp.in: Export FileSystem functions to get file times. 9 1 10 2014-01-30 Maciej Stachowiak <mjs@apple.com> 2 11 -
trunk/Source/WebCore/WebCore.exp.in
r163180 r163212 777 777 __ZN7WebCore19TextResourceDecoderC1ERKN3WTF6StringERKNS_12TextEncodingEb 778 778 __ZN7WebCore19TextResourceDecoderD1Ev 779 __ZN7WebCore19getFileCreationTimeERKN3WTF6StringERl 779 780 __ZN7WebCore19toInt32EnforceRangeEPN3JSC9ExecStateENS0_7JSValueE 780 781 __ZN7WebCore20CachedResourceLoader31garbageCollectDocumentResourcesEv … … 892 893 __ZN7WebCore23eventTimeStampSince1970EP7NSEvent 893 894 #endif 895 __ZN7WebCore23getFileModificationTimeERKN3WTF6StringERl 894 896 __ZN7WebCore23getHostnamesWithCookiesERKNS_21NetworkStorageSessionERN3WTF7HashSetINS3_6StringENS3_10StringHashENS3_10HashTraitsIS5_EEEE 895 897 __ZN7WebCore24CachedResourceHandleBase11setResourceEPNS_14CachedResourceE -
trunk/Source/WebKit2/ChangeLog
r163201 r163212 1 2014-01-31 Alexey Proskuryakov <ap@apple.com> 2 3 Expose creation and modification times for LocalStorage 4 https://bugs.webkit.org/show_bug.cgi?id=128018 5 6 Reviewed by Anders Carlsson. 7 8 * UIProcess/API/C/WKKeyValueStorageManager.cpp: 9 (WKKeyValueStorageManagerGetOriginKey): 10 (WKKeyValueStorageManagerGetCreationTimeKey): 11 (WKKeyValueStorageManagerGetModificationTimeKey): 12 (WKKeyValueStorageManagerGetStorageDetailsByOrigin): 13 * UIProcess/API/C/WKKeyValueStorageManager.h: 14 * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: 15 (WebKit::LocalStorageDatabaseTracker::origins): 16 (WebKit::LocalStorageDatabaseTracker::details): 17 * UIProcess/Storage/LocalStorageDatabaseTracker.h: 18 * UIProcess/Storage/StorageManager.cpp: 19 (WebKit::StorageManager::getStorageDetailsByOrigin): 20 (WebKit::StorageManager::getStorageDetailsByOriginInternal): 21 * UIProcess/Storage/StorageManager.h: 22 * UIProcess/WebKeyValueStorageManager.cpp: 23 (WebKit::WebKeyValueStorageManager::originKey): 24 (WebKit::WebKeyValueStorageManager::creationTimeKey): 25 (WebKit::WebKeyValueStorageManager::modificationTimeKey): 26 (WebKit::didGetKeyValueStorageOrigins): 27 (WebKit::didGetStorageDetailsByOrigin): 28 (WebKit::WebKeyValueStorageManager::getStorageDetailsByOrigin): 29 * UIProcess/WebKeyValueStorageManager.h: 30 * WebKit2.xcodeproj/project.pbxproj: 31 1 32 2014-01-31 Anders Carlsson <andersca@apple.com> 2 33 -
trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.cpp
r150306 r163212 37 37 } 38 38 39 WKStringRef WKKeyValueStorageManagerGetOriginKey() 40 { 41 static API::String* key = API::String::create(WebKeyValueStorageManager::originKey()).leakRef(); 42 return toAPI(key); 43 } 44 45 WKStringRef WKKeyValueStorageManagerGetCreationTimeKey() 46 { 47 static API::String* key = API::String::create(WebKeyValueStorageManager::creationTimeKey()).leakRef(); 48 return toAPI(key); 49 } 50 51 WKStringRef WKKeyValueStorageManagerGetModificationTimeKey() 52 { 53 static API::String* key = API::String::create(WebKeyValueStorageManager::modificationTimeKey()).leakRef(); 54 return toAPI(key); 55 } 56 39 57 void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManagerRef, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction callback) 40 58 { 41 59 toImpl(keyValueStorageManagerRef)->getKeyValueStorageOrigins(ArrayCallback::create(context, callback)); 60 } 61 62 void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef keyValueStorageManagerRef, void* context, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction callback) 63 { 64 toImpl(keyValueStorageManagerRef)->getStorageDetailsByOrigin(ArrayCallback::create(context, callback)); 42 65 } 43 66 -
trunk/Source/WebKit2/UIProcess/API/C/WKKeyValueStorageManager.h
r95901 r163212 35 35 WK_EXPORT WKTypeID WKKeyValueStorageManagerGetTypeID(); 36 36 37 /* Value type: WKSecurityOriginRef */ 38 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetOriginKey(); 39 40 /* Value type: WKDoubleRef, seconds since January 1st, 1970 UTC */ 41 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetCreationTimeKey(); 42 43 /* Value type: WKDoubleRef, seconds since January 1st, 1970 UTC */ 44 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetModificationTimeKey(); 45 37 46 typedef void (*WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction)(WKArrayRef, WKErrorRef, void*); 38 47 WK_EXPORT void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction function); 48 49 typedef void (*WKKeyValueStorageManagerGetStorageDetailsByOriginFunction)(WKArrayRef, WKErrorRef, void*); 50 WK_EXPORT void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction function); 39 51 40 52 WK_EXPORT void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, WKSecurityOriginRef origin); -
trunk/Source/WebKit2/UIProcess/LocalStorageDetails.h
r163210 r163212 1 1 /* 2 * Copyright (C) 201 1Apple Inc. All rights reserved.2 * Copyright (C) 2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #ifndef WKKeyValueStorageManager_h27 #define WKKeyValueStorageManager_h26 #ifndef LocalStorageDetails_h 27 #define LocalStorageDetails_h 28 28 29 #include < WebKit2/WKBase.h>29 #include <wtf/text/WTFString.h> 30 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 31 namespace WebKit { 34 32 35 WK_EXPORT WKTypeID WKKeyValueStorageManagerGetTypeID(); 33 struct LocalStorageDetails { 34 String originIdentifier; 35 double creationTime; 36 double modificationTime; 37 }; 36 38 37 typedef void (*WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction)(WKArrayRef, WKErrorRef, void*); 38 WK_EXPORT void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction function); 39 } // namespace WebKit 39 40 40 WK_EXPORT void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, WKSecurityOriginRef origin); 41 WK_EXPORT void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager); 42 43 #ifdef __cplusplus 44 } 45 #endif 46 47 #endif // WKKeyValueStorageManager_h 41 #endif // LocalStorageDetails_h -
trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp
r158245 r163212 27 27 #include "LocalStorageDatabaseTracker.h" 28 28 29 #include "LocalStorageDetails.h" 29 30 #include "WorkQueue.h" 30 31 #include <WebCore/FileSystem.h> … … 129 130 origins.reserveInitialCapacity(m_origins.size()); 130 131 131 for ( HashSet<String>::const_iterator it = m_origins.begin(), end = m_origins.end(); it != end; ++it)132 origins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier( *it));132 for (const String& origin : m_origins) 133 origins.uncheckedAppend(SecurityOrigin::createFromDatabaseIdentifier(origin)); 133 134 134 135 return origins; 136 } 137 138 Vector<LocalStorageDetails> LocalStorageDatabaseTracker::details() 139 { 140 Vector<LocalStorageDetails> result; 141 result.reserveInitialCapacity(m_origins.size()); 142 143 for (const String& origin : m_origins) { 144 String filePath = pathForDatabaseWithOriginIdentifier(origin); 145 time_t time; 146 147 LocalStorageDetails details; 148 details.originIdentifier = origin.isolatedCopy(); 149 details.creationTime = getFileCreationTime(filePath, time) ? time : 0; 150 details.modificationTime = getFileModificationTime(filePath, time) ? time : 0; 151 result.uncheckedAppend(details); 152 } 153 154 return result; 135 155 } 136 156 -
trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h
r153499 r163212 43 43 namespace WebKit { 44 44 45 struct LocalStorageDetails; 46 45 47 class LocalStorageDatabaseTracker : public ThreadSafeRefCounted<LocalStorageDatabaseTracker> { 46 48 public: … … 56 58 57 59 Vector<RefPtr<WebCore::SecurityOrigin>> origins() const; 60 Vector<LocalStorageDetails> details(); 58 61 59 62 private: -
trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp
r161148 r163212 29 29 #include "LocalStorageDatabase.h" 30 30 #include "LocalStorageDatabaseTracker.h" 31 #include "LocalStorageDetails.h" 31 32 #include "SecurityOriginData.h" 32 33 #include "StorageAreaMapMessages.h" … … 426 427 } 427 428 429 void StorageManager::getStorageDetailsByOrigin(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<LocalStorageDetails>& storageDetails, void* context)) 430 { 431 m_queue->dispatch(bind(&StorageManager::getStorageDetailsByOriginInternal, this, RefPtr<FunctionDispatcher>(callbackDispatcher), context, callback)); 432 } 433 428 434 void StorageManager::deleteEntriesForOrigin(SecurityOrigin* securityOrigin) 429 435 { … … 636 642 } 637 643 644 void StorageManager::getStorageDetailsByOriginInternal(FunctionDispatcher* dispatcher, void* context, void (*callbackFunction)(const Vector<LocalStorageDetails>& storageDetails, void* context)) 645 { 646 Vector<LocalStorageDetails> storageDetails = m_localStorageDatabaseTracker->details(); 647 dispatcher->dispatch(bind(callbackFunction, std::move(storageDetails), context)); 648 } 649 638 650 void StorageManager::deleteEntriesForOriginInternal(SecurityOrigin* securityOrigin) 639 651 { -
trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h
r162139 r163212 41 41 namespace WebKit { 42 42 43 struct LocalStorageDetails; 43 44 struct SecurityOriginData; 44 45 class LocalStorageDatabaseTracker; … … 62 63 // FIXME: Instead of a context + C function, this should take a WTF::Function, but we currently don't 63 64 // support arguments in functions. 64 void getOrigins(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>& securityOrigins, void* context)); 65 void getOrigins(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>&, void* context)); 66 void getStorageDetailsByOrigin(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<LocalStorageDetails>&, void* context)); 65 67 void deleteEntriesForOrigin(WebCore::SecurityOrigin*); 66 68 void deleteAllEntries(); … … 96 98 LocalStorageNamespace* getOrCreateLocalStorageNamespace(uint64_t storageNamespaceID); 97 99 98 void getOriginsInternal(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>& securityOrigins, void* context)); 100 void getOriginsInternal(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<RefPtr<WebCore::SecurityOrigin>>&, void* context)); 101 void getStorageDetailsByOriginInternal(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector<LocalStorageDetails>&, void* context)); 99 102 void deleteEntriesForOriginInternal(WebCore::SecurityOrigin*); 100 103 void deleteAllEntriesInternal(); -
trunk/Source/WebKit2/UIProcess/WebKeyValueStorageManager.cpp
r159234 r163212 28 28 29 29 #include "APIArray.h" 30 #include "LocalStorageDetails.h" 30 31 #include "SecurityOriginData.h" 31 32 #include "WebContext.h" 32 33 #include "WebSecurityOrigin.h" 34 #include <wtf/NeverDestroyed.h> 33 35 34 36 using namespace WebCore; … … 39 41 { 40 42 return "WebKeyValueStorageManager"; 43 } 44 45 String WebKeyValueStorageManager::originKey() 46 { 47 static NeverDestroyed<String> key(ASCIILiteral("WebKeyValueStorageManagerStorageDetailsOriginKey")); 48 return key; 49 } 50 51 String WebKeyValueStorageManager::creationTimeKey() 52 { 53 static NeverDestroyed<String> key(ASCIILiteral("WebKeyValueStorageManagerStorageDetailsCreationTimeKey")); 54 return key; 55 } 56 57 String WebKeyValueStorageManager::modificationTimeKey() 58 { 59 static NeverDestroyed<String> key(ASCIILiteral("WebKeyValueStorageManagerStorageDetailsModificationTimeKey")); 60 return key; 41 61 } 42 62 … … 67 87 } 68 88 69 static void didGetKeyValueStorageOrigins(const Vector<RefPtr< WebCore::SecurityOrigin>>& securityOrigins, void* context)89 static void didGetKeyValueStorageOrigins(const Vector<RefPtr<SecurityOrigin>>& securityOrigins, void* context) 70 90 { 71 91 RefPtr<ArrayCallback> callback = adoptRef(static_cast<ArrayCallback*>(context)); … … 84 104 context()->storageManager().getOrigins(RunLoop::main(), prpCallback.leakRef(), didGetKeyValueStorageOrigins); 85 105 } 86 106 107 static void didGetStorageDetailsByOrigin(const Vector<LocalStorageDetails>& storageDetails, void* context) 108 { 109 RefPtr<ArrayCallback> callback = adoptRef(static_cast<ArrayCallback*>(context)); 110 111 Vector<RefPtr<API::Object>> result; 112 result.reserveInitialCapacity(storageDetails.size()); 113 114 for (const LocalStorageDetails& originDetails : storageDetails) { 115 HashMap<String, RefPtr<API::Object>> detailsMap; 116 117 RefPtr<API::Object> origin = WebSecurityOrigin::createFromDatabaseIdentifier(originDetails.originIdentifier); 118 119 detailsMap.set(WebKeyValueStorageManager::originKey(), origin); 120 if (originDetails.creationTime) 121 detailsMap.set(WebKeyValueStorageManager::creationTimeKey(), API::Double::create(originDetails.creationTime)); 122 if (originDetails.modificationTime) 123 detailsMap.set(WebKeyValueStorageManager::modificationTimeKey(), API::Double::create(originDetails.modificationTime)); 124 125 result.uncheckedAppend(ImmutableDictionary::create(std::move(detailsMap))); 126 } 127 128 callback->performCallbackWithReturnValue(API::Array::create(std::move(result)).get()); 129 } 130 131 void WebKeyValueStorageManager::getStorageDetailsByOrigin(PassRefPtr<ArrayCallback> prpCallback) 132 { 133 context()->storageManager().getStorageDetailsByOrigin(RunLoop::main(), prpCallback.leakRef(), didGetStorageDetailsByOrigin); 134 } 135 87 136 void WebKeyValueStorageManager::deleteEntriesForOrigin(WebSecurityOrigin* origin) 88 137 { -
trunk/Source/WebKit2/UIProcess/WebKeyValueStorageManager.h
r162139 r163212 47 47 48 48 void getKeyValueStorageOrigins(PassRefPtr<ArrayCallback>); 49 void getStorageDetailsByOrigin(PassRefPtr<ArrayCallback>); 49 50 void deleteEntriesForOrigin(WebSecurityOrigin*); 50 51 void deleteAllEntries(); … … 52 53 using API::Object::ref; 53 54 using API::Object::deref; 55 56 static String originKey(); 57 static String creationTimeKey(); 58 static String modificationTimeKey(); 54 59 55 60 private: -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r163113 r163212 1367 1367 E134F01712EA5D33004EC58D /* WKPrintingView.h in Headers */ = {isa = PBXBuildFile; fileRef = E134F01512EA5D11004EC58D /* WKPrintingView.h */; }; 1368 1368 E134F01A12EA5D99004EC58D /* WKPrintingView.mm in Sources */ = {isa = PBXBuildFile; fileRef = E134F01912EA5D99004EC58D /* WKPrintingView.mm */; }; 1369 E13833EC189C33C8001E2350 /* LocalStorageDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = E13833EB189C33C8001E2350 /* LocalStorageDetails.h */; }; 1369 1370 E14A954916E016A40068DE82 /* NetworkProcessPlatformStrategies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E14A954716E016A40068DE82 /* NetworkProcessPlatformStrategies.cpp */; }; 1370 1371 E14A954A16E016A40068DE82 /* NetworkProcessPlatformStrategies.h in Headers */ = {isa = PBXBuildFile; fileRef = E14A954816E016A40068DE82 /* NetworkProcessPlatformStrategies.h */; }; … … 3122 3123 E134F01512EA5D11004EC58D /* WKPrintingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPrintingView.h; sourceTree = "<group>"; }; 3123 3124 E134F01912EA5D99004EC58D /* WKPrintingView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKPrintingView.mm; sourceTree = "<group>"; }; 3125 E13833EB189C33C8001E2350 /* LocalStorageDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalStorageDetails.h; sourceTree = "<group>"; }; 3124 3126 E14A954716E016A40068DE82 /* NetworkProcessPlatformStrategies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessPlatformStrategies.cpp; path = NetworkProcess/NetworkProcessPlatformStrategies.cpp; sourceTree = "<group>"; }; 3125 3127 E14A954816E016A40068DE82 /* NetworkProcessPlatformStrategies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessPlatformStrategies.h; path = NetworkProcess/NetworkProcessPlatformStrategies.h; sourceTree = "<group>"; }; … … 4936 4938 BC06F43812DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h */, 4937 4939 BC6EDAA5111271C600E7678B /* PageClient.h */, 4940 E13833EB189C33C8001E2350 /* LocalStorageDetails.h */, 4938 4941 1AC75379183A9FDA0072CB15 /* PageLoadState.cpp */, 4939 4942 1AC7537A183A9FDB0072CB15 /* PageLoadState.h */, … … 6746 6749 37948409150C4B9700E52CE9 /* WKRenderLayer.h in Headers */, 6747 6750 37608823150414F700FC82C7 /* WKRenderObject.h in Headers */, 6751 E13833EC189C33C8001E2350 /* LocalStorageDetails.h in Headers */, 6748 6752 3336763B130C99DC006C9DE2 /* WKResourceCacheManager.h in Headers */, 6749 6753 BC8A501511765F5600757573 /* WKRetainPtr.h in Headers */,
Note: See TracChangeset
for help on using the changeset viewer.