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

Side by Side Diff: third_party/WebKit/Source/modules/permissions/Permissions.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "modules/permissions/Permissions.h" 5 #include "modules/permissions/Permissions.h"
6 6
7 #include "bindings/core/v8/Dictionary.h" 7 #include "bindings/core/v8/Dictionary.h"
8 #include "bindings/core/v8/Nullable.h" 8 #include "bindings/core/v8/Nullable.h"
9 #include "bindings/core/v8/ScriptPromise.h" 9 #include "bindings/core/v8/ScriptPromise.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
11 #include "bindings/modules/v8/V8MidiPermissionDescriptor.h" 11 #include "bindings/modules/v8/V8MidiPermissionDescriptor.h"
12 #include "bindings/modules/v8/V8PermissionDescriptor.h" 12 #include "bindings/modules/v8/V8PermissionDescriptor.h"
13 #include "bindings/modules/v8/V8PushPermissionDescriptor.h" 13 #include "bindings/modules/v8/V8PushPermissionDescriptor.h"
14 #include "core/dom/DOMException.h" 14 #include "core/dom/DOMException.h"
15 #include "core/dom/Document.h" 15 #include "core/dom/Document.h"
16 #include "core/dom/ExceptionCode.h" 16 #include "core/dom/ExceptionCode.h"
17 #include "modules/permissions/PermissionCallback.h" 17 #include "modules/permissions/PermissionCallback.h"
18 #include "modules/permissions/PermissionController.h" 18 #include "modules/permissions/PermissionController.h"
19 #include "modules/permissions/PermissionDescriptor.h" 19 #include "modules/permissions/PermissionDescriptor.h"
20 #include "modules/permissions/PermissionStatus.h" 20 #include "modules/permissions/PermissionStatus.h"
21 #include "modules/permissions/PermissionsCallback.h" 21 #include "modules/permissions/PermissionsCallback.h"
22 #include "platform/Logging.h" 22 #include "platform/Logging.h"
23 #include "public/platform/Platform.h" 23 #include "public/platform/Platform.h"
24 #include "public/platform/modules/permissions/WebPermissionClient.h" 24 #include "public/platform/modules/permissions/WebPermissionClient.h"
25 #include "wtf/NotFound.h" 25 #include "wtf/NotFound.h"
26 #include "wtf/PtrUtil.h"
27 #include "wtf/Vector.h" 26 #include "wtf/Vector.h"
28 #include <memory>
29 27
30 namespace blink { 28 namespace blink {
31 29
32 namespace { 30 namespace {
33 31
34 WebPermissionType getPermissionType(ScriptState* scriptState, const Dictionary& rawPermission, const PermissionDescriptor& permission, ExceptionState& exception State) 32 WebPermissionType getPermissionType(ScriptState* scriptState, const Dictionary& rawPermission, const PermissionDescriptor& permission, ExceptionState& exception State)
35 { 33 {
36 const String& name = permission.name(); 34 const String& name = permission.name();
37 if (name == "geolocation") 35 if (name == "geolocation")
38 return WebPermissionTypeGeolocation; 36 return WebPermissionTypeGeolocation;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 return promise; 160 return promise;
163 } 161 }
164 162
165 ScriptPromise Permissions::requestAll(ScriptState* scriptState, const Vector<Dic tionary>& rawPermissions) 163 ScriptPromise Permissions::requestAll(ScriptState* scriptState, const Vector<Dic tionary>& rawPermissions)
166 { 164 {
167 WebPermissionClient* client = getClient(scriptState->getExecutionContext()); 165 WebPermissionClient* client = getClient(scriptState->getExecutionContext());
168 if (!client) 166 if (!client)
169 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "In its current state, the global scope can't request permissions.")); 167 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "In its current state, the global scope can't request permissions."));
170 168
171 ExceptionState exceptionState(ExceptionState::GetterContext, "request", "Pe rmissions", scriptState->context()->Global(), scriptState->isolate()); 169 ExceptionState exceptionState(ExceptionState::GetterContext, "request", "Pe rmissions", scriptState->context()->Global(), scriptState->isolate());
172 std::unique_ptr<Vector<WebPermissionType>> internalPermissions = wrapUnique( new Vector<WebPermissionType>()); 170 OwnPtr<Vector<WebPermissionType>> internalPermissions = adoptPtr(new Vector< WebPermissionType>());
173 std::unique_ptr<Vector<int>> callerIndexToInternalIndex = wrapUnique(new Vec tor<int>(rawPermissions.size())); 171 OwnPtr<Vector<int>> callerIndexToInternalIndex = adoptPtr(new Vector<int>(ra wPermissions.size()));
174 for (size_t i = 0; i < rawPermissions.size(); ++i) { 172 for (size_t i = 0; i < rawPermissions.size(); ++i) {
175 const Dictionary& rawPermission = rawPermissions[i]; 173 const Dictionary& rawPermission = rawPermissions[i];
176 174
177 Nullable<WebPermissionType> type = parsePermission(scriptState, rawPermi ssion, exceptionState); 175 Nullable<WebPermissionType> type = parsePermission(scriptState, rawPermi ssion, exceptionState);
178 if (exceptionState.hadException()) 176 if (exceptionState.hadException())
179 return exceptionState.reject(scriptState); 177 return exceptionState.reject(scriptState);
180 178
181 // Only append permissions to the vector that is passed to the client if it is not already 179 // Only append permissions to the vector that is passed to the client if it is not already
182 // in the vector (i.e. do not duplicate permisison types). 180 // in the vector (i.e. do not duplicate permisison types).
183 int internalIndex; 181 int internalIndex;
(...skipping 10 matching lines...) Expand all
194 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 192 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
195 ScriptPromise promise = resolver->promise(); 193 ScriptPromise promise = resolver->promise();
196 194
197 WebVector<WebPermissionType> internalWebPermissions = *internalPermissions; 195 WebVector<WebPermissionType> internalWebPermissions = *internalPermissions;
198 client->requestPermissions(internalWebPermissions, KURL(KURL(), scriptState- >getExecutionContext()->getSecurityOrigin()->toString()), 196 client->requestPermissions(internalWebPermissions, KURL(KURL(), scriptState- >getExecutionContext()->getSecurityOrigin()->toString()),
199 new PermissionsCallback(resolver, std::move(internalPermissions), std::m ove(callerIndexToInternalIndex))); 197 new PermissionsCallback(resolver, std::move(internalPermissions), std::m ove(callerIndexToInternalIndex)));
200 return promise; 198 return promise;
201 } 199 }
202 200
203 } // namespace blink 201 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698