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

Side by Side Diff: third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerRegistration.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/serviceworkers/ServiceWorkerRegistration.h" 5 #include "modules/serviceworkers/ServiceWorkerRegistration.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "core/dom/DOMException.h" 10 #include "core/dom/DOMException.h"
11 #include "core/dom/ExceptionCode.h" 11 #include "core/dom/ExceptionCode.h"
12 #include "core/dom/ExecutionContext.h" 12 #include "core/dom/ExecutionContext.h"
13 #include "core/events/Event.h" 13 #include "core/events/Event.h"
14 #include "modules/EventTargetModules.h" 14 #include "modules/EventTargetModules.h"
15 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" 15 #include "modules/serviceworkers/ServiceWorkerContainerClient.h"
16 #include "modules/serviceworkers/ServiceWorkerError.h" 16 #include "modules/serviceworkers/ServiceWorkerError.h"
17 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h" 17 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h"
18 #include "wtf/PtrUtil.h"
19 #include <memory>
20 18
21 namespace blink { 19 namespace blink {
22 20
23 const AtomicString& ServiceWorkerRegistration::interfaceName() const 21 const AtomicString& ServiceWorkerRegistration::interfaceName() const
24 { 22 {
25 return EventTargetNames::ServiceWorkerRegistration; 23 return EventTargetNames::ServiceWorkerRegistration;
26 } 24 }
27 25
28 void ServiceWorkerRegistration::dispatchUpdateFoundEvent() 26 void ServiceWorkerRegistration::dispatchUpdateFoundEvent()
29 { 27 {
30 dispatchEvent(Event::create(EventTypeNames::updatefound)); 28 dispatchEvent(Event::create(EventTypeNames::updatefound));
31 } 29 }
32 30
33 void ServiceWorkerRegistration::setInstalling(std::unique_ptr<WebServiceWorker:: Handle> handle) 31 void ServiceWorkerRegistration::setInstalling(std::unique_ptr<WebServiceWorker:: Handle> handle)
34 { 32 {
35 if (!getExecutionContext()) 33 if (!getExecutionContext())
36 return; 34 return;
37 m_installing = ServiceWorker::from(getExecutionContext(), wrapUnique(handle. release())); 35 m_installing = ServiceWorker::from(getExecutionContext(), adoptPtr(handle.re lease()));
38 } 36 }
39 37
40 void ServiceWorkerRegistration::setWaiting(std::unique_ptr<WebServiceWorker::Han dle> handle) 38 void ServiceWorkerRegistration::setWaiting(std::unique_ptr<WebServiceWorker::Han dle> handle)
41 { 39 {
42 if (!getExecutionContext()) 40 if (!getExecutionContext())
43 return; 41 return;
44 m_waiting = ServiceWorker::from(getExecutionContext(), wrapUnique(handle.rel ease())); 42 m_waiting = ServiceWorker::from(getExecutionContext(), adoptPtr(handle.relea se()));
45 } 43 }
46 44
47 void ServiceWorkerRegistration::setActive(std::unique_ptr<WebServiceWorker::Hand le> handle) 45 void ServiceWorkerRegistration::setActive(std::unique_ptr<WebServiceWorker::Hand le> handle)
48 { 46 {
49 if (!getExecutionContext()) 47 if (!getExecutionContext())
50 return; 48 return;
51 m_active = ServiceWorker::from(getExecutionContext(), wrapUnique(handle.rele ase())); 49 m_active = ServiceWorker::from(getExecutionContext(), adoptPtr(handle.releas e()));
52 } 50 }
53 51
54 ServiceWorkerRegistration* ServiceWorkerRegistration::getOrCreate(ExecutionConte xt* executionContext, std::unique_ptr<WebServiceWorkerRegistration::Handle> hand le) 52 ServiceWorkerRegistration* ServiceWorkerRegistration::getOrCreate(ExecutionConte xt* executionContext, PassOwnPtr<WebServiceWorkerRegistration::Handle> handle)
55 { 53 {
56 ASSERT(handle); 54 ASSERT(handle);
57 55
58 ServiceWorkerRegistration* existingRegistration = static_cast<ServiceWorkerR egistration*>(handle->registration()->proxy()); 56 ServiceWorkerRegistration* existingRegistration = static_cast<ServiceWorkerR egistration*>(handle->registration()->proxy());
59 if (existingRegistration) { 57 if (existingRegistration) {
60 ASSERT(existingRegistration->getExecutionContext() == executionContext); 58 ASSERT(existingRegistration->getExecutionContext() == executionContext);
61 return existingRegistration; 59 return existingRegistration;
62 } 60 }
63 61
64 ServiceWorkerRegistration* newRegistration = new ServiceWorkerRegistration(e xecutionContext, std::move(handle)); 62 ServiceWorkerRegistration* newRegistration = new ServiceWorkerRegistration(e xecutionContext, std::move(handle));
(...skipping 23 matching lines...) Expand all
88 ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::from(ge tExecutionContext()); 86 ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::from(ge tExecutionContext());
89 if (!client || !client->provider()) 87 if (!client || !client->provider())
90 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Failed to unregister a ServiceWorkerRegistration: No associated provider is available.")); 88 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Failed to unregister a ServiceWorkerRegistration: No associated provider is available."));
91 89
92 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 90 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
93 ScriptPromise promise = resolver->promise(); 91 ScriptPromise promise = resolver->promise();
94 m_handle->registration()->unregister(client->provider(), new CallbackPromise Adapter<bool, ServiceWorkerError>(resolver)); 92 m_handle->registration()->unregister(client->provider(), new CallbackPromise Adapter<bool, ServiceWorkerError>(resolver));
95 return promise; 93 return promise;
96 } 94 }
97 95
98 ServiceWorkerRegistration::ServiceWorkerRegistration(ExecutionContext* execution Context, std::unique_ptr<WebServiceWorkerRegistration::Handle> handle) 96 ServiceWorkerRegistration::ServiceWorkerRegistration(ExecutionContext* execution Context, PassOwnPtr<WebServiceWorkerRegistration::Handle> handle)
99 : ActiveScriptWrappable(this) 97 : ActiveScriptWrappable(this)
100 , ActiveDOMObject(executionContext) 98 , ActiveDOMObject(executionContext)
101 , m_handle(std::move(handle)) 99 , m_handle(std::move(handle))
102 , m_stopped(false) 100 , m_stopped(false)
103 { 101 {
104 ASSERT(m_handle); 102 ASSERT(m_handle);
105 ASSERT(!m_handle->registration()->proxy()); 103 ASSERT(!m_handle->registration()->proxy());
106 ThreadState::current()->registerPreFinalizer(this); 104 ThreadState::current()->registerPreFinalizer(this);
107 105
108 if (!executionContext) 106 if (!executionContext)
(...skipping 29 matching lines...) Expand all
138 136
139 void ServiceWorkerRegistration::stop() 137 void ServiceWorkerRegistration::stop()
140 { 138 {
141 if (m_stopped) 139 if (m_stopped)
142 return; 140 return;
143 m_stopped = true; 141 m_stopped = true;
144 m_handle->registration()->proxyStopped(); 142 m_handle->registration()->proxyStopped();
145 } 143 }
146 144
147 } // namespace blink 145 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698