Commit be876eec authored by reillyg's avatar reillyg Committed by Commit bot

Remove content::NotificationPermissionDispatcher.

blink::Notification can make calls to the Mojo PermissionService itself.

BUG=561879

Review-Url: https://codereview.chromium.org/2244913002
Cr-Commit-Position: refs/heads/master@{#412636}
parent c11a6807
...@@ -385,8 +385,6 @@ ...@@ -385,8 +385,6 @@
'renderer/navigation_state_impl.h', 'renderer/navigation_state_impl.h',
'renderer/net_info_helper.cc', 'renderer/net_info_helper.cc',
'renderer/net_info_helper.h', 'renderer/net_info_helper.h',
'renderer/notification_permission_dispatcher.cc',
'renderer/notification_permission_dispatcher.h',
'renderer/origin_trials/web_trial_token_validator_impl.cc', 'renderer/origin_trials/web_trial_token_validator_impl.cc',
'renderer/origin_trials/web_trial_token_validator_impl.h', 'renderer/origin_trials/web_trial_token_validator_impl.h',
'renderer/peripheral_content_heuristic.cc', 'renderer/peripheral_content_heuristic.cc',
......
// 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 "content/renderer/notification_permission_dispatcher.h"
#include <utility>
#include "base/bind.h"
#include "content/public/renderer/render_frame.h"
#include "services/shell/public/cpp/interface_provider.h"
#include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/modules/permissions/permission_status.mojom.h"
#include "third_party/WebKit/public/web/WebUserGestureIndicator.h"
#include "third_party/WebKit/public/web/modules/notifications/WebNotificationPermissionCallback.h"
using blink::WebNotificationPermissionCallback;
namespace content {
NotificationPermissionDispatcher::NotificationPermissionDispatcher(
RenderFrame* render_frame)
: RenderFrameObserver(render_frame) {}
NotificationPermissionDispatcher::~NotificationPermissionDispatcher() {}
void NotificationPermissionDispatcher::RequestPermission(
const blink::WebSecurityOrigin& origin,
WebNotificationPermissionCallback* callback) {
if (!permission_service_.get()) {
render_frame()->GetRemoteInterfaces()->GetInterface(&permission_service_);
}
std::unique_ptr<WebNotificationPermissionCallback> owned_callback(callback);
// base::Unretained is safe here because the Mojo channel, with associated
// callbacks, will be deleted before the "this" instance is deleted.
permission_service_->RequestPermission(
blink::mojom::PermissionName::NOTIFICATIONS, origin,
blink::WebUserGestureIndicator::isProcessingUserGesture(),
base::Bind(&NotificationPermissionDispatcher::OnPermissionRequestComplete,
base::Unretained(this),
base::Passed(std::move(owned_callback))));
}
void NotificationPermissionDispatcher::OnPermissionRequestComplete(
std::unique_ptr<WebNotificationPermissionCallback> callback,
blink::mojom::PermissionStatus status) {
DCHECK(callback);
// Blink can't use non-blink bindings so we need to cast to int32.
int32_t blink_status = static_cast<int32_t>(status);
callback->permissionRequestComplete(blink_status);
}
void NotificationPermissionDispatcher::OnDestruct() {
delete this;
}
} // namespace content
// 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 CONTENT_RENDERER_NOTIFICATION_PERMISSION_DISPATCHER_H_
#define CONTENT_RENDERER_NOTIFICATION_PERMISSION_DISPATCHER_H_
#include <memory>
#include "base/macros.h"
#include "content/public/renderer/render_frame_observer.h"
#include "third_party/WebKit/public/platform/modules/permissions/permission.mojom.h"
namespace blink {
class WebNotificationPermissionCallback;
class WebSecurityOrigin;
}
namespace content {
class RenderFrame;
// Dispatcher for Web Notification permission requests.
class NotificationPermissionDispatcher : public RenderFrameObserver {
public:
explicit NotificationPermissionDispatcher(RenderFrame* render_frame);
~NotificationPermissionDispatcher() override;
// Requests permission to display Web Notifications for |origin|. The callback
// will be invoked when the permission status is available. This class will
// take ownership of |callback|.
void RequestPermission(const blink::WebSecurityOrigin& origin,
blink::WebNotificationPermissionCallback* callback);
private:
// RenderFrameObserver implementation.
void OnDestruct() override;
void OnPermissionRequestComplete(
std::unique_ptr<blink::WebNotificationPermissionCallback> callback,
blink::mojom::PermissionStatus status);
blink::mojom::PermissionServicePtr permission_service_;
DISALLOW_COPY_AND_ASSIGN(NotificationPermissionDispatcher);
};
} // namespace content
#endif // CONTENT_RENDERER_NOTIFICATION_PERMISSION_DISPATCHER_H_
...@@ -112,7 +112,6 @@ ...@@ -112,7 +112,6 @@
#include "content/renderer/mojo/interface_provider_js_wrapper.h" #include "content/renderer/mojo/interface_provider_js_wrapper.h"
#include "content/renderer/mojo_bindings_controller.h" #include "content/renderer/mojo_bindings_controller.h"
#include "content/renderer/navigation_state_impl.h" #include "content/renderer/navigation_state_impl.h"
#include "content/renderer/notification_permission_dispatcher.h"
#include "content/renderer/pepper/pepper_audio_controller.h" #include "content/renderer/pepper/pepper_audio_controller.h"
#include "content/renderer/pepper/plugin_instance_throttler_impl.h" #include "content/renderer/pepper/plugin_instance_throttler_impl.h"
#include "content/renderer/presentation/presentation_dispatcher.h" #include "content/renderer/presentation/presentation_dispatcher.h"
...@@ -1052,7 +1051,6 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) ...@@ -1052,7 +1051,6 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params)
selection_text_offset_(0), selection_text_offset_(0),
selection_range_(gfx::Range::InvalidRange()), selection_range_(gfx::Range::InvalidRange()),
handling_select_range_(false), handling_select_range_(false),
notification_permission_dispatcher_(NULL),
web_user_media_client_(NULL), web_user_media_client_(NULL),
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
media_player_manager_(NULL), media_player_manager_(NULL),
...@@ -3759,17 +3757,6 @@ RenderFrameImpl::getEffectiveConnectionType() { ...@@ -3759,17 +3757,6 @@ RenderFrameImpl::getEffectiveConnectionType() {
return effective_connection_type_; return effective_connection_type_;
} }
void RenderFrameImpl::requestNotificationPermission(
const blink::WebSecurityOrigin& origin,
blink::WebNotificationPermissionCallback* callback) {
if (!notification_permission_dispatcher_) {
notification_permission_dispatcher_ =
new NotificationPermissionDispatcher(this);
}
notification_permission_dispatcher_->RequestPermission(origin, callback);
}
void RenderFrameImpl::didChangeSelection(bool is_empty_selection) { void RenderFrameImpl::didChangeSelection(bool is_empty_selection) {
if (!GetRenderWidget()->input_handler().handling_input_event() && if (!GetRenderWidget()->input_handler().handling_input_event() &&
!handling_select_range_) !handling_select_range_)
......
...@@ -133,7 +133,6 @@ class MediaStreamRendererFactory; ...@@ -133,7 +133,6 @@ class MediaStreamRendererFactory;
class MediaPermissionDispatcher; class MediaPermissionDispatcher;
class MidiDispatcher; class MidiDispatcher;
class NavigationState; class NavigationState;
class NotificationPermissionDispatcher;
class PageState; class PageState;
class PepperPluginInstanceImpl; class PepperPluginInstanceImpl;
class PresentationDispatcher; class PresentationDispatcher;
...@@ -545,9 +544,6 @@ class CONTENT_EXPORT RenderFrameImpl ...@@ -545,9 +544,6 @@ class CONTENT_EXPORT RenderFrameImpl
void didChangeThemeColor() override; void didChangeThemeColor() override;
void dispatchLoad() override; void dispatchLoad() override;
blink::WebEffectiveConnectionType getEffectiveConnectionType() override; blink::WebEffectiveConnectionType getEffectiveConnectionType() override;
void requestNotificationPermission(
const blink::WebSecurityOrigin& origin,
blink::WebNotificationPermissionCallback* callback) override;
void didChangeSelection(bool is_empty_selection) override; void didChangeSelection(bool is_empty_selection) override;
blink::WebColorChooser* createColorChooser( blink::WebColorChooser* createColorChooser(
blink::WebColorChooserClient* client, blink::WebColorChooserClient* client,
...@@ -1145,9 +1141,6 @@ class CONTENT_EXPORT RenderFrameImpl ...@@ -1145,9 +1141,6 @@ class CONTENT_EXPORT RenderFrameImpl
// along with the RenderFrame automatically. This is why we just store weak // along with the RenderFrame automatically. This is why we just store weak
// references. // references.
// Dispatches permission requests for Web Notifications.
NotificationPermissionDispatcher* notification_permission_dispatcher_;
// Destroyed via the RenderFrameObserver::OnDestruct() mechanism. // Destroyed via the RenderFrameObserver::OnDestruct() mechanism.
UserMediaClientImpl* web_user_media_client_; UserMediaClientImpl* web_user_media_client_;
......
...@@ -1369,8 +1369,6 @@ ...@@ -1369,8 +1369,6 @@
'notifications/NotificationManager.cpp', 'notifications/NotificationManager.cpp',
'notifications/NotificationManager.h', 'notifications/NotificationManager.h',
'notifications/NotificationPermissionCallback.h', 'notifications/NotificationPermissionCallback.h',
'notifications/NotificationPermissionClient.cpp',
'notifications/NotificationPermissionClient.h',
'notifications/NotificationResourcesLoader.cpp', 'notifications/NotificationResourcesLoader.cpp',
'notifications/NotificationResourcesLoader.h', 'notifications/NotificationResourcesLoader.h',
'notifications/ServiceWorkerGlobalScopeNotifications.h', 'notifications/ServiceWorkerGlobalScopeNotifications.h',
......
...@@ -7,6 +7,7 @@ include_rules = [ ...@@ -7,6 +7,7 @@ include_rules = [
"+modules/EventTargetModules.h", "+modules/EventTargetModules.h",
"+modules/ModulesExport.h", "+modules/ModulesExport.h",
"+modules/notifications", "+modules/notifications",
"+modules/permissions",
"+modules/serviceworkers", "+modules/serviceworkers",
"+modules/vibration", "+modules/vibration",
"+platform", "+platform",
......
...@@ -44,17 +44,14 @@ ...@@ -44,17 +44,14 @@
#include "modules/notifications/NotificationData.h" #include "modules/notifications/NotificationData.h"
#include "modules/notifications/NotificationManager.h" #include "modules/notifications/NotificationManager.h"
#include "modules/notifications/NotificationOptions.h" #include "modules/notifications/NotificationOptions.h"
#include "modules/notifications/NotificationPermissionClient.h"
#include "modules/notifications/NotificationResourcesLoader.h" #include "modules/notifications/NotificationResourcesLoader.h"
#include "platform/RuntimeEnabledFeatures.h" #include "platform/RuntimeEnabledFeatures.h"
#include "platform/UserGestureIndicator.h" #include "platform/UserGestureIndicator.h"
#include "public/platform/Platform.h" #include "public/platform/Platform.h"
#include "public/platform/WebSecurityOrigin.h" #include "public/platform/WebSecurityOrigin.h"
#include "public/platform/WebString.h"
#include "public/platform/modules/notifications/WebNotificationAction.h" #include "public/platform/modules/notifications/WebNotificationAction.h"
#include "public/platform/modules/notifications/WebNotificationConstants.h" #include "public/platform/modules/notifications/WebNotificationConstants.h"
#include "public/platform/modules/notifications/WebNotificationManager.h" #include "public/platform/modules/notifications/WebNotificationManager.h"
#include "public/platform/modules/permissions/permission_status.mojom-blink.h"
#include "wtf/Assertions.h" #include "wtf/Assertions.h"
#include "wtf/Functional.h" #include "wtf/Functional.h"
...@@ -354,14 +351,7 @@ String Notification::permission(ExecutionContext* context) ...@@ -354,14 +351,7 @@ String Notification::permission(ExecutionContext* context)
ScriptPromise Notification::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback) ScriptPromise Notification::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback)
{ {
ExecutionContext* context = scriptState->getExecutionContext(); return NotificationManager::from(scriptState->getExecutionContext())->requestPermission(scriptState, deprecatedCallback);
if (NotificationPermissionClient* permissionClient = NotificationPermissionClient::from(context))
return permissionClient->requestPermission(scriptState, deprecatedCallback);
// The context has been detached. Return a promise that will never settle.
DCHECK(context->activeDOMObjectsAreStopped());
return ScriptPromise();
} }
size_t Notification::maxActions() size_t Notification::maxActions()
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "public/platform/WebVector.h" #include "public/platform/WebVector.h"
#include "public/platform/modules/notifications/WebNotificationData.h" #include "public/platform/modules/notifications/WebNotificationData.h"
#include "public/platform/modules/notifications/WebNotificationDelegate.h" #include "public/platform/modules/notifications/WebNotificationDelegate.h"
#include "public/platform/modules/permissions/permission.mojom-blink.h"
#include "public/platform/modules/permissions/permission_status.mojom-blink.h" #include "public/platform/modules/permissions/permission_status.mojom-blink.h"
namespace blink { namespace blink {
......
...@@ -4,10 +4,18 @@ ...@@ -4,10 +4,18 @@
#include "modules/notifications/NotificationManager.h" #include "modules/notifications/NotificationManager.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
#include "modules/notifications/Notification.h"
#include "modules/notifications/NotificationPermissionCallback.h"
#include "modules/permissions/Permissions.h"
#include "platform/UserGestureIndicator.h"
#include "platform/weborigin/SecurityOrigin.h" #include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/InterfaceProvider.h" #include "public/platform/InterfaceProvider.h"
#include "public/platform/Platform.h" #include "public/platform/Platform.h"
#include "public/platform/modules/permissions/permission.mojom-blink.h"
#include "public/platform/modules/permissions/permission_status.mojom-blink.h" #include "public/platform/modules/permissions/permission_status.mojom-blink.h"
#include "wtf/Functional.h"
namespace blink { namespace blink {
...@@ -35,27 +43,54 @@ const char* NotificationManager::supplementName() ...@@ -35,27 +43,54 @@ const char* NotificationManager::supplementName()
NotificationManager::NotificationManager(ExecutionContext* executionContext) NotificationManager::NotificationManager(ExecutionContext* executionContext)
: ContextLifecycleObserver(executionContext) : ContextLifecycleObserver(executionContext)
{ {
Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_service));
} }
NotificationManager::~NotificationManager() NotificationManager::~NotificationManager()
{ {
} }
mojom::blink::PermissionStatus NotificationManager::permissionStatus() const mojom::blink::PermissionStatus NotificationManager::permissionStatus()
{ {
mojom::blink::PermissionStatus permissionStatus; if (!m_notificationService)
Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_notificationService));
const bool result = mojom::blink::PermissionStatus permissionStatus;
m_service->GetPermissionStatus(getExecutionContext()->getSecurityOrigin()->toString(), &permissionStatus); const bool result = m_notificationService->GetPermissionStatus(getExecutionContext()->getSecurityOrigin()->toString(), &permissionStatus);
DCHECK(result); DCHECK(result);
return permissionStatus; return permissionStatus;
} }
ScriptPromise NotificationManager::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback)
{
ExecutionContext* context = scriptState->getExecutionContext();
if (!m_permissionService)
Permissions::connectToService(context, mojo::GetProxy(&m_permissionService));
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
m_permissionService->RequestPermission(
mojom::blink::PermissionName::NOTIFICATIONS, context->getSecurityOrigin(), UserGestureIndicator::processingUserGesture(),
convertToBaseCallback(WTF::bind(&NotificationManager::onPermissionRequestComplete, wrapPersistent(this), wrapPersistent(resolver), wrapPersistent(deprecatedCallback))));
return promise;
}
void NotificationManager::contextDestroyed() void NotificationManager::contextDestroyed()
{ {
m_service.reset(); m_notificationService.reset();
m_permissionService.reset();
}
void NotificationManager::onPermissionRequestComplete(ScriptPromiseResolver* resolver, NotificationPermissionCallback* deprecatedCallback, mojom::blink::PermissionStatus status)
{
String statusString = Notification::permissionString(status);
if (deprecatedCallback)
deprecatedCallback->handleEvent(statusString);
resolver->resolve(statusString);
} }
DEFINE_TRACE(NotificationManager) DEFINE_TRACE(NotificationManager)
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "core/dom/ContextLifecycleObserver.h" #include "core/dom/ContextLifecycleObserver.h"
#include "core/dom/ExecutionContext.h" #include "core/dom/ExecutionContext.h"
#include "public/platform/modules/notifications/notification_service.mojom-blink.h" #include "public/platform/modules/notifications/notification_service.mojom-blink.h"
#include "public/platform/modules/permissions/permission.mojom-blink.h"
#include "wtf/Noncopyable.h" #include "wtf/Noncopyable.h"
#include "wtf/text/WTFString.h" #include "wtf/text/WTFString.h"
...@@ -19,6 +20,11 @@ enum class PermissionStatus; ...@@ -19,6 +20,11 @@ enum class PermissionStatus;
} }
} }
class NotificationPermissionCallback;
class ScriptPromise;
class ScriptPromiseResolver;
class ScriptState;
// The notification manager, unique to the execution context, is responsible for // The notification manager, unique to the execution context, is responsible for
// connecting and communicating with the Mojo notification service. // connecting and communicating with the Mojo notification service.
// //
...@@ -37,7 +43,9 @@ public: ...@@ -37,7 +43,9 @@ public:
// Returns the notification permission status of the current origin. This // Returns the notification permission status of the current origin. This
// method is synchronous to support the Notification.permission getter. // method is synchronous to support the Notification.permission getter.
mojom::blink::PermissionStatus permissionStatus() const; mojom::blink::PermissionStatus permissionStatus();
ScriptPromise requestPermission(ScriptState*, NotificationPermissionCallback* deprecatedCallback);
// ContextLifecycleObserver implementation. // ContextLifecycleObserver implementation.
void contextDestroyed() override; void contextDestroyed() override;
...@@ -47,7 +55,10 @@ public: ...@@ -47,7 +55,10 @@ public:
private: private:
explicit NotificationManager(ExecutionContext*); explicit NotificationManager(ExecutionContext*);
mojom::blink::NotificationServicePtr m_service; void onPermissionRequestComplete(ScriptPromiseResolver*, NotificationPermissionCallback*, mojom::blink::PermissionStatus);
mojom::blink::NotificationServicePtr m_notificationService;
mojom::blink::PermissionServicePtr m_permissionService;
}; };
} // namespace blink } // 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.
#include "modules/notifications/NotificationPermissionClient.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
#include "core/frame/LocalFrame.h"
namespace blink {
const char* NotificationPermissionClient::supplementName()
{
return "NotificationPermissionClient";
}
NotificationPermissionClient* NotificationPermissionClient::from(ExecutionContext* context)
{
if (!context->isDocument())
return nullptr;
const Document* document = toDocument(context);
if (!document->frame())
return nullptr;
return static_cast<NotificationPermissionClient*>(Supplement<LocalFrame>::from(document->frame(), supplementName()));
}
void provideNotificationPermissionClientTo(LocalFrame& frame, NotificationPermissionClient* client)
{
frame.provideSupplement(NotificationPermissionClient::supplementName(), client);
}
} // 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 NotificationPermissionClient_h
#define NotificationPermissionClient_h
#include "bindings/core/v8/ScriptPromise.h"
#include "modules/ModulesExport.h"
#include "platform/Supplementable.h"
namespace blink {
class ExecutionContext;
class LocalFrame;
class NotificationPermissionCallback;
class ScriptState;
class NotificationPermissionClient : public Supplement<LocalFrame> {
public:
virtual ~NotificationPermissionClient() { }
// Requests user permission to show platform notifications from the origin of the
// current frame. The provided callback will be ran when the user has made a decision.
virtual ScriptPromise requestPermission(ScriptState*, NotificationPermissionCallback*) = 0;
// Supplement requirements.
static const char* supplementName();
static NotificationPermissionClient* from(ExecutionContext*);
};
MODULES_EXPORT void provideNotificationPermissionClientTo(LocalFrame&, NotificationPermissionClient*);
} // namespace blink
#endif // NotificationPermissionClient_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 "web/NotificationPermissionClientImpl.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/Document.h"
#include "core/dom/ExecutionContext.h"
#include "modules/notifications/Notification.h"
#include "modules/notifications/NotificationPermissionCallback.h"
#include "public/web/WebFrameClient.h"
#include "public/web/modules/notifications/WebNotificationPermissionCallback.h"
#include "web/WebLocalFrameImpl.h"
namespace blink {
namespace {
class WebNotificationPermissionCallbackImpl : public WebNotificationPermissionCallback {
public:
WebNotificationPermissionCallbackImpl(ScriptPromiseResolver* resolver, NotificationPermissionCallback* deprecatedCallback)
: m_resolver(resolver)
, m_deprecatedCallback(deprecatedCallback)
{
}
~WebNotificationPermissionCallbackImpl() override { }
void permissionRequestComplete(int32_t permissionStatus) override
{
String permissionString = Notification::permissionString(static_cast<mojom::blink::PermissionStatus>(permissionStatus));
if (m_deprecatedCallback)
m_deprecatedCallback->handleEvent(permissionString);
m_resolver->resolve(permissionString);
}
private:
Persistent<ScriptPromiseResolver> m_resolver;
Persistent<NotificationPermissionCallback> m_deprecatedCallback;
};
} // namespace
NotificationPermissionClientImpl* NotificationPermissionClientImpl::create()
{
return new NotificationPermissionClientImpl();
}
NotificationPermissionClientImpl::NotificationPermissionClientImpl()
{
}
NotificationPermissionClientImpl::~NotificationPermissionClientImpl()
{
}
ScriptPromise NotificationPermissionClientImpl::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback)
{
DCHECK(scriptState);
ExecutionContext* context = scriptState->getExecutionContext();
DCHECK(context);
DCHECK(context->isDocument());
Document* document = toDocument(context);
WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(document->frame());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
webFrame->client()->requestNotificationPermission(WebSecurityOrigin(context->getSecurityOrigin()), new WebNotificationPermissionCallbackImpl(resolver, deprecatedCallback));
return promise;
}
} // 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 NotificationPermissionClientImpl_h
#define NotificationPermissionClientImpl_h
#include "modules/notifications/NotificationPermissionClient.h"
#include "platform/heap/Handle.h"
namespace blink {
class NotificationPermissionClientImpl : public GarbageCollectedFinalized<NotificationPermissionClientImpl>, public NotificationPermissionClient {
USING_GARBAGE_COLLECTED_MIXIN(NotificationPermissionClientImpl);
public:
static NotificationPermissionClientImpl* create();
~NotificationPermissionClientImpl() override;
// NotificationPermissionClient implementation.
ScriptPromise requestPermission(ScriptState*, NotificationPermissionCallback*) override;
// GarbageCollectedFinalized implementation.
DEFINE_INLINE_VIRTUAL_TRACE() { NotificationPermissionClient::trace(visitor); }
private:
NotificationPermissionClientImpl();
};
} // namespace blink
#endif // NotificationPermissionClientImpl_h
...@@ -156,7 +156,6 @@ ...@@ -156,7 +156,6 @@
#include "modules/audio_output_devices/AudioOutputDeviceClient.h" #include "modules/audio_output_devices/AudioOutputDeviceClient.h"
#include "modules/bluetooth/BluetoothSupplement.h" #include "modules/bluetooth/BluetoothSupplement.h"
#include "modules/installedapp/InstalledAppController.h" #include "modules/installedapp/InstalledAppController.h"
#include "modules/notifications/NotificationPermissionClient.h"
#include "modules/presentation/PresentationController.h" #include "modules/presentation/PresentationController.h"
#include "modules/push_messaging/PushController.h" #include "modules/push_messaging/PushController.h"
#include "modules/screen_orientation/ScreenOrientationController.h" #include "modules/screen_orientation/ScreenOrientationController.h"
...@@ -221,7 +220,6 @@ ...@@ -221,7 +220,6 @@
#include "web/IndexedDBClientImpl.h" #include "web/IndexedDBClientImpl.h"
#include "web/LocalFileSystemClient.h" #include "web/LocalFileSystemClient.h"
#include "web/NavigatorContentUtilsClientImpl.h" #include "web/NavigatorContentUtilsClientImpl.h"
#include "web/NotificationPermissionClientImpl.h"
#include "web/RemoteFrameOwner.h" #include "web/RemoteFrameOwner.h"
#include "web/SharedWorkerRepositoryClientImpl.h" #include "web/SharedWorkerRepositoryClientImpl.h"
#include "web/SuspendableScriptExecutor.h" #include "web/SuspendableScriptExecutor.h"
...@@ -1494,7 +1492,6 @@ void WebLocalFrameImpl::setCoreFrame(LocalFrame* frame) ...@@ -1494,7 +1492,6 @@ void WebLocalFrameImpl::setCoreFrame(LocalFrame* frame)
provideUserMediaTo(*m_frame, UserMediaClientImpl::create(m_client->userMediaClient())); provideUserMediaTo(*m_frame, UserMediaClientImpl::create(m_client->userMediaClient()));
} }
provideNotificationPermissionClientTo(*m_frame, NotificationPermissionClientImpl::create());
provideIndexedDBClientTo(*m_frame, IndexedDBClientImpl::create()); provideIndexedDBClientTo(*m_frame, IndexedDBClientImpl::create());
provideLocalFileSystemTo(*m_frame, LocalFileSystemClient::create()); provideLocalFileSystemTo(*m_frame, LocalFileSystemClient::create());
provideNavigatorContentUtilsTo(*m_frame, NavigatorContentUtilsClientImpl::create(this)); provideNavigatorContentUtilsTo(*m_frame, NavigatorContentUtilsClientImpl::create(this));
......
...@@ -61,8 +61,6 @@ ...@@ -61,8 +61,6 @@
'MediaKeysClientImpl.h', 'MediaKeysClientImpl.h',
'NavigatorContentUtilsClientImpl.cpp', 'NavigatorContentUtilsClientImpl.cpp',
'NavigatorContentUtilsClientImpl.h', 'NavigatorContentUtilsClientImpl.h',
'NotificationPermissionClientImpl.cpp',
'NotificationPermissionClientImpl.h',
'OpenedFrameTracker.cpp', 'OpenedFrameTracker.cpp',
'OpenedFrameTracker.h', 'OpenedFrameTracker.h',
'PageOverlay.cpp', 'PageOverlay.cpp',
......
...@@ -483,7 +483,6 @@ ...@@ -483,7 +483,6 @@
"web/linux/WebFontRendering.h", "web/linux/WebFontRendering.h",
"web/mac/WebScrollbarTheme.h", "web/mac/WebScrollbarTheme.h",
"web/mac/WebSubstringUtil.h", "web/mac/WebSubstringUtil.h",
"web/modules/notifications/WebNotificationPermissionCallback.h",
"web/modules/serviceworker/WebServiceWorkerContextClient.h", "web/modules/serviceworker/WebServiceWorkerContextClient.h",
"web/modules/serviceworker/WebServiceWorkerContextProxy.h", "web/modules/serviceworker/WebServiceWorkerContextProxy.h",
"web/modules/serviceworker/WebServiceWorkerNetworkProvider.h", "web/modules/serviceworker/WebServiceWorkerNetworkProvider.h",
......
...@@ -89,7 +89,6 @@ class WebMediaPlayerEncryptedMediaClient; ...@@ -89,7 +89,6 @@ class WebMediaPlayerEncryptedMediaClient;
class WebMediaPlayerSource; class WebMediaPlayerSource;
class WebMediaSession; class WebMediaSession;
class WebMediaStream; class WebMediaStream;
class WebNotificationPermissionCallback;
class WebServiceWorkerProvider; class WebServiceWorkerProvider;
class WebSocketHandle; class WebSocketHandle;
class WebPlugin; class WebPlugin;
...@@ -371,11 +370,6 @@ public: ...@@ -371,11 +370,6 @@ public:
// Returns the effective connection type when the frame was fetched. // Returns the effective connection type when the frame was fetched.
virtual WebEffectiveConnectionType getEffectiveConnectionType() { return WebEffectiveConnectionType::TypeUnknown; } virtual WebEffectiveConnectionType getEffectiveConnectionType() { return WebEffectiveConnectionType::TypeUnknown; }
// Web Notifications ---------------------------------------------------
// Requests permission to display platform notifications on the origin of this frame.
virtual void requestNotificationPermission(const WebSecurityOrigin&, WebNotificationPermissionCallback* callback) { }
// Push API --------------------------------------------------- // Push API ---------------------------------------------------
......
peter@chromium.org
\ No newline at end of file
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef WebNotificationPermissionCallback_h
#define WebNotificationPermissionCallback_h
namespace blink {
// Callback object used for Web Notification permission requests.
class WebNotificationPermissionCallback {
public:
virtual ~WebNotificationPermissionCallback() { }
// Method to be invoked when the asynchronous permission request for the
// ability to display Web Notifications has been completed.
virtual void permissionRequestComplete(int32_t permissionStatus) = 0;
};
} // namespace blink
#endif
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