Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(916)

Unified Diff: third_party/WebKit/Source/modules/quota/StorageManager.cpp

Issue 2108003002: Merge //content/child/permissions into Blink's permissions module. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing presubmits. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/quota/StorageManager.cpp
diff --git a/third_party/WebKit/Source/modules/quota/StorageManager.cpp b/third_party/WebKit/Source/modules/quota/StorageManager.cpp
index 06bdb6b4abab10bb23d250e16ab592d0eba26067..828a4d09f797afb8ebde87834210fb563d76cd62 100644
--- a/third_party/WebKit/Source/modules/quota/StorageManager.cpp
+++ b/third_party/WebKit/Source/modules/quota/StorageManager.cpp
@@ -12,34 +12,17 @@
#include "modules/permissions/Permissions.h"
#include "modules/quota/StorageEstimate.h"
#include "platform/StorageQuotaCallbacks.h"
+#include "platform/UserGestureIndicator.h"
+#include "platform/mojo/MojoHelper.h"
#include "public/platform/Platform.h"
-#include "public/platform/WebCallbacks.h"
-#include "public/platform/modules/permissions/WebPermissionClient.h"
-#include "public/platform/modules/permissions/WebPermissionStatus.h"
namespace blink {
-namespace {
-
-class DurableStorageCallbacks final : public WebPermissionCallback {
-public:
- DurableStorageCallbacks(ScriptPromiseResolver* resolver)
- : m_resolver(resolver)
- {
- }
-
- void onSuccess(WebPermissionStatus status) override
- {
- m_resolver->resolve(status == WebPermissionStatusGranted);
- }
- void onError() override
- {
- ASSERT_NOT_REACHED();
- }
+using mojom::blink::PermissionName;
+using mojom::blink::PermissionService;
+using mojom::blink::PermissionStatus;
-private:
- Persistent<ScriptPromiseResolver> m_resolver;
-};
+namespace {
class EstimateCallbacks final : public StorageQuotaCallbacks {
WTF_MAKE_NONCOPYABLE(EstimateCallbacks);
@@ -93,12 +76,12 @@ ScriptPromise StorageManager::persist(ScriptState* scriptState)
return promise;
}
ASSERT(executionContext->isDocument());
- WebPermissionClient* permissionClient = Permissions::getClient(executionContext);
- if (!permissionClient) {
+ PermissionService* permissionService = getPermissionService(scriptState->getExecutionContext());
+ if (!permissionService) {
resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't request permissions."));
return promise;
}
- permissionClient->requestPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->getExecutionContext()->getSecurityOrigin()->toString()), new DurableStorageCallbacks(resolver));
+ permissionService->RequestPermission(PermissionName::DURABLE_STORAGE, scriptState->getExecutionContext()->getSecurityOrigin()->toString(), UserGestureIndicator::processingUserGesture(), createBaseCallback(bind(&StorageManager::permissionRequestComplete, wrapPersistent(this), wrapPersistent(resolver))));
return promise;
}
@@ -107,12 +90,12 @@ ScriptPromise StorageManager::persisted(ScriptState* scriptState)
{
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
- WebPermissionClient* permissionClient = Permissions::getClient(scriptState->getExecutionContext());
- if (!permissionClient) {
+ PermissionService* permissionService = getPermissionService(scriptState->getExecutionContext());
+ if (!permissionService) {
resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't query permissions."));
return promise;
}
- permissionClient->queryPermission(WebPermissionTypeDurableStorage, KURL(KURL(), scriptState->getExecutionContext()->getSecurityOrigin()->toString()), new DurableStorageCallbacks(resolver));
+ permissionService->HasPermission(PermissionName::DURABLE_STORAGE, scriptState->getExecutionContext()->getSecurityOrigin()->toString(), createBaseCallback(bind(&StorageManager::permissionRequestComplete, wrapPersistent(this), wrapPersistent(resolver))));
return promise;
}
@@ -142,4 +125,25 @@ DEFINE_TRACE(StorageManager)
{
}
+mojom::blink::PermissionService* StorageManager::getPermissionService(ExecutionContext* executionContext)
+{
+ if (!m_permissionService) {
+ if (Permissions::connectToService(executionContext, mojo::GetProxy(&m_permissionService)))
+ m_permissionService.set_connection_error_handler(createBaseCallback(bind(&StorageManager::permissionServiceConnectionError, wrapWeakPersistent(this))));
mlamouri (slow - plz ping) 2016/07/18 10:25:57 It's a bit odd because you don't handle a branch.
Reilly Grant (use Gerrit) 2016/07/19 20:10:28 I took the second option.
+ }
+ return m_permissionService.get();
+}
+
+void StorageManager::permissionServiceConnectionError()
+{
+ m_permissionService.reset();
+}
+
+void StorageManager::permissionRequestComplete(ScriptPromiseResolver* resolver, PermissionStatus status)
+{
+ if (!resolver->getExecutionContext() || resolver->getExecutionContext()->activeDOMObjectsAreStopped())
+ return;
+ resolver->resolve(status == PermissionStatus::GRANTED);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698