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
3 // found in the LICENSE file.
6 #include "modules/serviceworkers/ServiceWorkerClients.h"
8 #include "bindings/v8/CallbackPromiseAdapter.h"
9 #include "bindings/v8/ScriptPromiseResolver.h"
10 #include "bindings/v8/ScriptPromiseResolverWithContext.h"
11 #include "modules/serviceworkers/Client.h"
12 #include "modules/serviceworkers/ServiceWorkerError.h"
13 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h"
14 #include "public/platform/WebServiceWorkerClientsInfo.h"
15 #include "wtf/RefPtr.h"
16 #include "wtf/Vector.h"
24 typedef blink::WebServiceWorkerClientsInfo WebType;
25 static Vector<RefPtr<Client> > from(ScriptPromiseResolverWithContext*, WebType* webClientsRaw)
27 OwnPtr<WebType> webClients = adoptPtr(webClientsRaw);
28 Vector<RefPtr<Client> > clients;
29 for (size_t i = 0; i < webClients->clientIDs.size(); ++i) {
30 clients.append(Client::create(webClients->clientIDs[i]));
36 WTF_MAKE_NONCOPYABLE(ClientArray);
37 ClientArray() WTF_DELETED_FUNCTION;
42 PassRefPtr<ServiceWorkerClients> ServiceWorkerClients::create()
44 return adoptRef(new ServiceWorkerClients());
47 ServiceWorkerClients::ServiceWorkerClients()
49 ScriptWrappable::init(this);
52 ServiceWorkerClients::~ServiceWorkerClients()
56 ScriptPromise ServiceWorkerClients::getServiced(ExecutionContext* context)
58 RefPtr<ScriptPromiseResolverWithContext> resolver = ScriptPromiseResolverWithContext::create(ScriptState::current(toIsolate(context)));
59 ServiceWorkerGlobalScopeClient::from(context)->getClients(new CallbackPromiseAdapter<ClientArray, ServiceWorkerError>(resolver));
60 return resolver->promise();
63 } // namespace WebCore