Index: Source/modules/quota/StorageManager.cpp |
diff --git a/Source/modules/quota/StorageManager.cpp b/Source/modules/quota/StorageManager.cpp |
index 18e0d261e02207c1318059c63717edbf5a5ecf89..acfac05c47ffca0fc9b78493d760830087db08fe 100644 |
--- a/Source/modules/quota/StorageManager.cpp |
+++ b/Source/modules/quota/StorageManager.cpp |
@@ -18,9 +18,9 @@ namespace blink { |
namespace { |
-class DurableStoragePermissionCallbacks final : public WebCallbacks<WebPermissionStatus*, void> { |
+class DurableStorageQueryCallbacks final : public WebCallbacks<WebPermissionStatus*, void> { |
public: |
- DurableStoragePermissionCallbacks(ScriptPromiseResolver* resolver) |
+ DurableStorageQueryCallbacks(ScriptPromiseResolver* resolver) |
: m_resolver(resolver) |
{ |
} |
@@ -51,6 +51,27 @@ private: |
Persistent<ScriptPromiseResolver> m_resolver; |
}; |
+class DurableStorageRequestCallbacks final : public WebCallbacks<WebPermissionStatus*, void> { |
+public: |
+ DurableStorageRequestCallbacks(ScriptPromiseResolver* resolver) |
+ : m_resolver(resolver) |
+ { |
+ } |
+ |
+ void onSuccess(WebPermissionStatus* rawStatus) override |
+ { |
+ OwnPtr<WebPermissionStatus> status = adoptPtr(rawStatus); |
+ m_resolver->resolve(*status == WebPermissionStatusGranted); |
+ } |
+ void onError() override |
+ { |
+ ASSERT_NOT_REACHED(); |
+ } |
+ |
+private: |
+ Persistent<ScriptPromiseResolver> m_resolver; |
+}; |
+ |
} // namespace |
ScriptPromise StorageManager::requestPersistent(ScriptState* scriptState) |
@@ -77,7 +98,7 @@ ScriptPromise StorageManager::requestPersistent(ScriptState* scriptState) |
resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't request permissions.")); |
return promise; |
} |
- permissionClient->requestPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->executionContext()->securityOrigin()->toString()), new DurableStoragePermissionCallbacks(resolver)); |
+ permissionClient->requestPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->executionContext()->securityOrigin()->toString()), new DurableStorageRequestCallbacks(resolver)); |
return promise; |
} |
@@ -91,7 +112,7 @@ ScriptPromise StorageManager::persistentPermission(ScriptState* scriptState) |
resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't query permissions.")); |
return promise; |
} |
- permissionClient->queryPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->executionContext()->securityOrigin()->toString()), new DurableStoragePermissionCallbacks(resolver)); |
+ permissionClient->queryPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->executionContext()->securityOrigin()->toString()), new DurableStorageQueryCallbacks(resolver)); |
return promise; |
} |