| Index: chrome/browser/desktop_notification_handler.cc
|
| ===================================================================
|
| --- chrome/browser/desktop_notification_handler.cc (revision 88079)
|
| +++ chrome/browser/desktop_notification_handler.cc (working copy)
|
| @@ -1,92 +0,0 @@
|
| -// Copyright (c) 2011 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 "chrome/browser/desktop_notification_handler.h"
|
| -
|
| -#include "chrome/browser/notifications/desktop_notification_service.h"
|
| -#include "chrome/browser/notifications/desktop_notification_service_factory.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "content/browser/renderer_host/render_process_host.h"
|
| -#include "content/browser/renderer_host/render_view_host.h"
|
| -#include "content/browser/renderer_host/render_view_host_delegate.h"
|
| -#include "content/common/desktop_notification_messages.h"
|
| -
|
| -// static
|
| -DesktopNotificationHandler*
|
| -DesktopNotificationHandler::Create(RenderViewHost* render_view_host) {
|
| - return new DesktopNotificationHandler(render_view_host);
|
| -}
|
| -
|
| -DesktopNotificationHandler::~DesktopNotificationHandler() {
|
| -}
|
| -
|
| -DesktopNotificationHandler::DesktopNotificationHandler(
|
| - RenderViewHost* render_view_host)
|
| - : RenderViewHostObserver(render_view_host) {
|
| -}
|
| -
|
| -bool DesktopNotificationHandler::OnMessageReceived(
|
| - const IPC::Message& message) {
|
| - bool handled = true;
|
| -
|
| - IPC_BEGIN_MESSAGE_MAP(DesktopNotificationHandler, message)
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_Show, OnShow)
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_Cancel, OnCancel)
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_RequestPermission,
|
| - OnRequestPermission)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| -
|
| - return handled;
|
| -}
|
| -
|
| -void DesktopNotificationHandler::OnShow(
|
| - const DesktopNotificationHostMsg_Show_Params& params) {
|
| - // Disallow HTML notifications from unwanted schemes. javascript:
|
| - // in particular allows unwanted cross-domain access.
|
| - GURL url = params.contents_url;
|
| - if (params.is_html &&
|
| - !url.SchemeIs(chrome::kHttpScheme) &&
|
| - !url.SchemeIs(chrome::kHttpsScheme) &&
|
| - !url.SchemeIs(chrome::kExtensionScheme) &&
|
| - !url.SchemeIs(chrome::kDataScheme)) {
|
| - return;
|
| - }
|
| -
|
| - RenderProcessHost* process = render_view_host()->process();
|
| - DesktopNotificationService* service =
|
| - DesktopNotificationServiceFactory::GetForProfile(process->profile());
|
| -
|
| - service->ShowDesktopNotification(
|
| - params,
|
| - process->id(),
|
| - routing_id(),
|
| - DesktopNotificationService::PageNotification);
|
| -}
|
| -
|
| -void DesktopNotificationHandler::OnCancel(int notification_id) {
|
| - RenderProcessHost* process = render_view_host()->process();
|
| - DesktopNotificationService* service =
|
| - DesktopNotificationServiceFactory::GetForProfile(process->profile());
|
| -
|
| - service->CancelDesktopNotification(
|
| - process->id(),
|
| - routing_id(),
|
| - notification_id);
|
| -}
|
| -
|
| -void DesktopNotificationHandler::OnRequestPermission(
|
| - const GURL& source_origin, int callback_context) {
|
| - if (render_view_host()->delegate()->RequestDesktopNotificationPermission(
|
| - source_origin, callback_context)) {
|
| - return;
|
| - }
|
| -
|
| - RenderProcessHost* process = render_view_host()->process();
|
| - DesktopNotificationService* service =
|
| - DesktopNotificationServiceFactory::GetForProfile(process->profile());
|
| - service->RequestPermission(
|
| - source_origin, process->id(), routing_id(), callback_context, NULL);
|
| -}
|
|
|