Remove PushPermissionClient.

I found that I still need a multi purpose dispatcher for the Push API. I'll re-implement the permission request in a followup CL.

BUG=389194

Review URL: https://codereview.chromium.org/728443002

git-svn-id: svn://svn.chromium.org/blink/trunk@185297 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 6f069ab9
......@@ -764,10 +764,6 @@
'push_messaging/PushEvent.h',
'push_messaging/PushManager.cpp',
'push_messaging/PushManager.h',
'push_messaging/PushPermissionClient.cpp',
'push_messaging/PushPermissionClient.h',
'push_messaging/PushPermissionRequestCallback.cpp',
'push_messaging/PushPermissionRequestCallback.h',
'push_messaging/PushPermissionStatusCallback.cpp',
'push_messaging/PushPermissionStatusCallback.h',
'push_messaging/PushRegistration.cpp',
......
......@@ -16,8 +16,6 @@
#include "core/frame/LocalDOMWindow.h"
#include "modules/push_messaging/PushController.h"
#include "modules/push_messaging/PushError.h"
#include "modules/push_messaging/PushPermissionClient.h"
#include "modules/push_messaging/PushPermissionRequestCallback.h"
#include "modules/push_messaging/PushPermissionStatusCallback.h"
#include "modules/push_messaging/PushRegistration.h"
#include "modules/serviceworkers/NavigatorServiceWorker.h"
......@@ -45,20 +43,13 @@ ScriptPromise PushManager::registerPushMessaging(ScriptState* scriptState)
if (!serviceWorkerProvider)
return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(AbortError, "No Service Worker installed for this document."));
// FIXME: Once everything except permission request goes through platform,
// delete WebPushClient and usage such as this one.
// See crbug.com/389194
WebPushClient* client = PushController::clientFrom(document->frame());
ASSERT(client);
RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
PushPermissionClient* permissionClient = PushPermissionClient::from(scriptState->executionContext());
if (permissionClient)
permissionClient->requestPermission(scriptState->executionContext(), new PushPermissionRequestCallback(this, client, resolver, serviceWorkerProvider));
else
doRegister(client, resolver, serviceWorkerProvider);
client->registerPushMessaging(new CallbackPromiseAdapter<PushRegistration, PushError>(resolver), serviceWorkerProvider);
return promise;
}
......@@ -88,9 +79,4 @@ ScriptPromise PushManager::hasPermission(ScriptState* scriptState)
return promise;
}
void PushManager::doRegister(WebPushClient* client, PassRefPtr<ScriptPromiseResolver> resolver, WebServiceWorkerProvider* serviceWorkerProvider)
{
client->registerPushMessaging(new CallbackPromiseAdapter<PushRegistration, PushError>(resolver), serviceWorkerProvider);
}
} // namespace blink
......@@ -7,15 +7,11 @@
#include "bindings/core/v8/ScriptWrappable.h"
#include "platform/heap/Handle.h"
#include "wtf/PassRefPtr.h"
namespace blink {
class ScriptPromise;
class ScriptState;
class ScriptPromiseResolver;
class WebPushClient;
class WebServiceWorkerProvider;
class PushManager final : public GarbageCollected<PushManager>, public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
......@@ -28,8 +24,6 @@ public:
ScriptPromise registerPushMessaging(ScriptState*);
ScriptPromise hasPermission(ScriptState*);
void doRegister(WebPushClient*, PassRefPtr<ScriptPromiseResolver>, WebServiceWorkerProvider*);
void trace(Visitor*) { }
private:
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "modules/push_messaging/PushPermissionClient.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
#include "core/frame/LocalFrame.h"
namespace blink {
const char* PushPermissionClient::supplementName()
{
return "PushPermissionClient";
}
PushPermissionClient* PushPermissionClient::from(ExecutionContext* context)
{
if (!context->isDocument())
return nullptr;
const Document* document = toDocument(context);
ASSERT(document->frame());
if (!document->frame()->isLocalFrame())
return nullptr;
return static_cast<PushPermissionClient*>(WillBeHeapSupplement<LocalFrame>::from(document->frame(), supplementName()));
}
void providePushPermissionClientTo(LocalFrame& frame, PassOwnPtrWillBeRawPtr<PushPermissionClient> client)
{
frame.provideSupplement(PushPermissionClient::supplementName(), client);
}
}
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PushPermissionClient_h
#define PushPermissionClient_h
#include "platform/Supplementable.h"
#include "public/platform/WebCallback.h"
#include "wtf/PassOwnPtr.h"
namespace blink {
class ExecutionContext;
class LocalFrame;
class PushPermissionClient : public WillBeHeapSupplement<LocalFrame> {
public:
virtual ~PushPermissionClient() { }
// Requests user permission to use the Push API from the origin of the
// current frame. The provided callback will be run when a decision has been
// made.
virtual void requestPermission(ExecutionContext*, WebCallback*) = 0;
// WillBeHeapSupplement requirements.
static const char* supplementName();
static PushPermissionClient* from(ExecutionContext*);
};
void providePushPermissionClientTo(LocalFrame&, PassOwnPtrWillBeRawPtr<PushPermissionClient>);
} // namespace blink
#endif // PushPermissionClient_h
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "modules/push_messaging/PushPermissionRequestCallback.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "modules/push_messaging/PushManager.h"
namespace blink {
PushPermissionRequestCallback::PushPermissionRequestCallback(PushManager* manager, WebPushClient* client, PassRefPtr<ScriptPromiseResolver> resolver, WebServiceWorkerProvider* serviceWorkerProvider)
: m_manager(manager)
, m_client(client)
, m_resolver(resolver)
, m_serviceWorkerProvider(serviceWorkerProvider)
{
}
PushPermissionRequestCallback::~PushPermissionRequestCallback()
{
}
void PushPermissionRequestCallback::run()
{
m_manager->doRegister(m_client, m_resolver, m_serviceWorkerProvider);
}
} // namespace blink
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PushPermissionRequestCallback_h
#define PushPermissionRequestCallback_h
#include "platform/heap/Handle.h"
#include "public/platform/WebCallback.h"
#include "wtf/Noncopyable.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefPtr.h"
namespace blink {
class PushManager;
class ScriptPromiseResolver;
class WebPushClient;
class WebServiceWorkerProvider;
class PushPermissionRequestCallback final : public WebCallback {
WTF_MAKE_NONCOPYABLE(PushPermissionRequestCallback);
public:
// Since |PushManager| is oilpan garbage collected this will keep it alive.
// Does not take ownership of |WebPushClient|.
// Since |ScriptPromiseResolver| is ref counted this will keep it alive.
// Does not take ownership of |WebServiceWorkerProvider|.
PushPermissionRequestCallback(PushManager*, WebPushClient*, PassRefPtr<ScriptPromiseResolver>, WebServiceWorkerProvider*);
~PushPermissionRequestCallback() override;
void run() override;
private:
Persistent<PushManager> m_manager;
WebPushClient* m_client;
RefPtr<ScriptPromiseResolver> m_resolver;
WebServiceWorkerProvider* m_serviceWorkerProvider;
};
} // namespace blink
#endif // PushPermissionRequestCallback_h
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "web/PushPermissionClientImpl.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
#include "public/web/WebFrameClient.h"
#include "web/WebLocalFrameImpl.h"
namespace blink {
PassOwnPtrWillBeRawPtr<PushPermissionClientImpl> PushPermissionClientImpl::create()
{
return adoptPtrWillBeNoop(new PushPermissionClientImpl());
}
PushPermissionClientImpl::PushPermissionClientImpl()
{
}
PushPermissionClientImpl::~PushPermissionClientImpl()
{
}
void PushPermissionClientImpl::requestPermission(ExecutionContext* context, WebCallback* callback)
{
ASSERT(context && context->isDocument());
Document* document = toDocument(context);
WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(document->frame());
webFrame->client()->requestPushPermission(callback);
}
} // namespace blink
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PushPermissionClientImpl_h
#define PushPermissionClientImpl_h
#include "modules/push_messaging/PushPermissionClient.h"
namespace blink {
class PushPermissionClientImpl : public NoBaseWillBeGarbageCollectedFinalized<PushPermissionClientImpl>, public PushPermissionClient {
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(PushPermissionClientImpl);
public:
static PassOwnPtrWillBeRawPtr<PushPermissionClientImpl> create();
~PushPermissionClientImpl() override;
// PushPermissionClient implementation.
void requestPermission(ExecutionContext*, WebCallback*) override;
// NoBaseWillBeGarbageCollectedFinalized implementation.
void trace(Visitor* visitor) override { PushPermissionClient::trace(visitor); }
private:
PushPermissionClientImpl();
};
} // namespace blink
#endif // PushPermissionClientImpl_h
......@@ -78,8 +78,6 @@
'PopupMenuChromium.h',
'PrerendererClientImpl.cpp',
'PrerendererClientImpl.h',
'PushPermissionClientImpl.cpp',
'PushPermissionClientImpl.h',
'RemoteFrameClientImpl.cpp',
'RemoteFrameClientImpl.h',
'ScrollbarGroup.cpp',
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WebCallback_h
#define WebCallback_h
namespace blink {
class WebCallback {
public:
virtual ~WebCallback() { };
virtual void run() { };
};
} // namespace blink
#endif // WebCallback_h
......@@ -57,7 +57,6 @@ namespace blink {
class WebApplicationCacheHost;
class WebApplicationCacheHostClient;
class WebCachedURLRequest;
class WebCallback;
class WebColorChooser;
class WebColorChooserClient;
class WebContentDecryptionModule;
......@@ -337,10 +336,6 @@ public:
// Push API ---------------------------------------------------
// Requests permission to use the Push API in the origin of this frame.
// FIXME: Merge this into WebPushClient as it's not going away as originally planned.
virtual void requestPushPermission(WebCallback* callback) { }
// Used to access the embedder for the Push API.
virtual WebPushClient* pushClient() { return 0; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment