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

Side by Side Diff: Source/modules/quota/StorageManager.cpp

Issue 1302643002: Update Durable Storage API method signature (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix assert string Created 5 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/modules/quota/OWNERS ('k') | Source/modules/quota/StorageManager.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "modules/quota/StorageManager.h" 6 #include "modules/quota/StorageManager.h"
7 7
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "core/dom/Document.h" 9 #include "core/dom/Document.h"
10 #include "core/dom/ExceptionCode.h" 10 #include "core/dom/ExceptionCode.h"
11 #include "modules/permissions/Permissions.h" 11 #include "modules/permissions/Permissions.h"
12 #include "public/platform/Platform.h" 12 #include "public/platform/Platform.h"
13 #include "public/platform/WebCallbacks.h" 13 #include "public/platform/WebCallbacks.h"
14 #include "public/platform/modules/permissions/WebPermissionClient.h" 14 #include "public/platform/modules/permissions/WebPermissionClient.h"
15 #include "public/platform/modules/permissions/WebPermissionStatus.h" 15 #include "public/platform/modules/permissions/WebPermissionStatus.h"
16 16
17 namespace blink { 17 namespace blink {
18 18
19 namespace { 19 namespace {
20 20
21 class DurableStoragePermissionCallbacks final : public WebCallbacks<WebPermissio nStatus*, void> { 21 class DurableStorageQueryCallbacks final : public WebCallbacks<WebPermissionStat us*, void> {
22 public: 22 public:
23 DurableStoragePermissionCallbacks(ScriptPromiseResolver* resolver) 23 DurableStorageQueryCallbacks(ScriptPromiseResolver* resolver)
24 : m_resolver(resolver) 24 : m_resolver(resolver)
25 { 25 {
26 } 26 }
27 27
28 void onSuccess(WebPermissionStatus* rawStatus) override 28 void onSuccess(WebPermissionStatus* rawStatus) override
29 { 29 {
30 OwnPtr<WebPermissionStatus> status = adoptPtr(rawStatus); 30 OwnPtr<WebPermissionStatus> status = adoptPtr(rawStatus);
31 String toReturn; 31 String toReturn;
32 switch (*status) { 32 switch (*status) {
33 case WebPermissionStatusGranted: 33 case WebPermissionStatusGranted:
(...skipping 10 matching lines...) Expand all
44 } 44 }
45 void onError() override 45 void onError() override
46 { 46 {
47 ASSERT_NOT_REACHED(); 47 ASSERT_NOT_REACHED();
48 } 48 }
49 49
50 private: 50 private:
51 Persistent<ScriptPromiseResolver> m_resolver; 51 Persistent<ScriptPromiseResolver> m_resolver;
52 }; 52 };
53 53
54 class DurableStorageRequestCallbacks final : public WebCallbacks<WebPermissionSt atus*, void> {
55 public:
56 DurableStorageRequestCallbacks(ScriptPromiseResolver* resolver)
57 : m_resolver(resolver)
58 {
59 }
60
61 void onSuccess(WebPermissionStatus* rawStatus) override
62 {
63 OwnPtr<WebPermissionStatus> status = adoptPtr(rawStatus);
64 m_resolver->resolve(*status == WebPermissionStatusGranted);
65 }
66 void onError() override
67 {
68 ASSERT_NOT_REACHED();
69 }
70
71 private:
72 Persistent<ScriptPromiseResolver> m_resolver;
73 };
74
54 } // namespace 75 } // namespace
55 76
56 ScriptPromise StorageManager::requestPersistent(ScriptState* scriptState) 77 ScriptPromise StorageManager::requestPersistent(ScriptState* scriptState)
57 { 78 {
58 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 79 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
59 ScriptPromise promise = resolver->promise(); 80 ScriptPromise promise = resolver->promise();
60 ExecutionContext* executionContext = scriptState->executionContext(); 81 ExecutionContext* executionContext = scriptState->executionContext();
61 SecurityOrigin* securityOrigin = executionContext->securityOrigin(); 82 SecurityOrigin* securityOrigin = executionContext->securityOrigin();
62 // TODO(dgrogan): Is the isUnique() check covered by the later 83 // TODO(dgrogan): Is the isUnique() check covered by the later
63 // isPrivilegedContext() check? If so, maybe remove it. Write a test if it 84 // isPrivilegedContext() check? If so, maybe remove it. Write a test if it
64 // stays. 85 // stays.
65 if (securityOrigin->isUnique()) { 86 if (securityOrigin->isUnique()) {
66 resolver->reject(DOMException::create(NotSupportedError)); 87 resolver->reject(DOMException::create(NotSupportedError));
67 return promise; 88 return promise;
68 } 89 }
69 String errorMessage; 90 String errorMessage;
70 if (!executionContext->isPrivilegedContext(errorMessage)) { 91 if (!executionContext->isPrivilegedContext(errorMessage)) {
71 resolver->reject(DOMException::create(SecurityError, errorMessage)); 92 resolver->reject(DOMException::create(SecurityError, errorMessage));
72 return promise; 93 return promise;
73 } 94 }
74 ASSERT(executionContext->isDocument()); 95 ASSERT(executionContext->isDocument());
75 WebPermissionClient* permissionClient = Permissions::getClient(executionCont ext); 96 WebPermissionClient* permissionClient = Permissions::getClient(executionCont ext);
76 if (!permissionClient) { 97 if (!permissionClient) {
77 resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't request permissions.")); 98 resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't request permissions."));
78 return promise; 99 return promise;
79 } 100 }
80 permissionClient->requestPermission(WebPermissionTypeDurableStorage, KURL(KU RL(), scriptState->executionContext()->securityOrigin()->toString()), new Durabl eStoragePermissionCallbacks(resolver)); 101 permissionClient->requestPermission(WebPermissionTypeDurableStorage, KURL(KU RL(), scriptState->executionContext()->securityOrigin()->toString()), new Durabl eStorageRequestCallbacks(resolver));
81 102
82 return promise; 103 return promise;
83 } 104 }
84 105
85 ScriptPromise StorageManager::persistentPermission(ScriptState* scriptState) 106 ScriptPromise StorageManager::persistentPermission(ScriptState* scriptState)
86 { 107 {
87 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 108 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
88 ScriptPromise promise = resolver->promise(); 109 ScriptPromise promise = resolver->promise();
89 WebPermissionClient* permissionClient = Permissions::getClient(scriptState-> executionContext()); 110 WebPermissionClient* permissionClient = Permissions::getClient(scriptState-> executionContext());
90 if (!permissionClient) { 111 if (!permissionClient) {
91 resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't query permissions.")); 112 resolver->reject(DOMException::create(InvalidStateError, "In its current state, the global scope can't query permissions."));
92 return promise; 113 return promise;
93 } 114 }
94 permissionClient->queryPermission(WebPermissionTypeDurableStorage, KURL(KURL (), scriptState->executionContext()->securityOrigin()->toString()), new DurableS toragePermissionCallbacks(resolver)); 115 permissionClient->queryPermission(WebPermissionTypeDurableStorage, KURL(KURL (), scriptState->executionContext()->securityOrigin()->toString()), new DurableS torageQueryCallbacks(resolver));
95 return promise; 116 return promise;
96 } 117 }
97 118
98 DEFINE_TRACE(StorageManager) 119 DEFINE_TRACE(StorageManager)
99 { 120 {
100 } 121 }
101 122
102 } // namespace blink 123 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/quota/OWNERS ('k') | Source/modules/quota/StorageManager.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698