1a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch// found in the LICENSE file.
4a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
5a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "config.h"
6a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "modules/push_messaging/PushController.h"
7a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
8a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "public/platform/WebPushClient.h"
9a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "wtf/PassOwnPtr.h"
10a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
12a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
13e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)PushController::PushController(WebPushClient* client)
14a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    : m_client(client)
15a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{
16a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch}
17a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
18e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)PassOwnPtrWillBeRawPtr<PushController> PushController::create(WebPushClient* client)
19a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{
20f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu    return adoptPtrWillBeNoop(new PushController(client));
21a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch}
22a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
23e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebPushClient* PushController::clientFrom(Page* page)
24a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{
25a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    if (PushController* controller = PushController::from(page))
26a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch        return controller->client();
27a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    return 0;
28a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch}
29a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
30a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdochconst char* PushController::supplementName()
31a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{
32a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    return "PushController";
33a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch}
34a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
35e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void providePushControllerTo(Page& page, WebPushClient* client)
36a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch{
37a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    PushController::provideTo(page, PushController::supplementName(), PushController::create(client));
38a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch}
39a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch
40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
41