Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1798)

Unified Diff: content/browser/renderer_host/render_view_host.cc

Issue 7125006: Get rid of Chrome notifications dependency, and instead go through ContentBrowserClient to show U... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix browsertest Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_view_host.cc
===================================================================
--- content/browser/renderer_host/render_view_host.cc (revision 88079)
+++ content/browser/renderer_host/render_view_host.cc (working copy)
@@ -31,6 +31,7 @@
#include "content/browser/user_metrics.h"
#include "content/common/bindings_policy.h"
#include "content/common/content_constants.h"
+#include "content/common/desktop_notification_messages.h"
#include "content/common/drag_messages.h"
#include "content/common/native_web_keyboard_event.h"
#include "content/common/notification_details.h"
@@ -421,6 +422,32 @@
Send(new DragMsg_TargetDrop(routing_id(), client_pt, screen_pt));
}
+void RenderViewHost::DesktopNotificationPermissionRequestDone(
+ int callback_context) {
+ Send(new DesktopNotificationMsg_PermissionRequestDone(
+ routing_id(), callback_context));
+}
+
+void RenderViewHost::DesktopNotificationPostDisplay(int callback_context) {
+ Send(new DesktopNotificationMsg_PostDisplay(routing_id(), callback_context));
+}
+
+void RenderViewHost::DesktopNotificationPostError(int notification_id,
+ const string16& message) {
+ Send(new DesktopNotificationMsg_PostError(
+ routing_id(), notification_id, message));
+}
+
+void RenderViewHost::DesktopNotificationPostClose(int notification_id,
+ bool by_user) {
+ Send(new DesktopNotificationMsg_PostClose(
+ routing_id(), notification_id, by_user));
+}
+
+void RenderViewHost::DesktopNotificationPostClick(int notification_id) {
+ Send(new DesktopNotificationMsg_PostClick(routing_id(), notification_id));
+}
+
void RenderViewHost::ExecuteJavascriptInWebFrame(
const string16& frame_xpath,
const string16& jscript) {
@@ -666,6 +693,12 @@
OnAccessibilityNotifications)
IPC_MESSAGE_HANDLER(ViewHostMsg_ScriptEvalResponse, OnScriptEvalResponse)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidZoomURL, OnDidZoomURL)
+ IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_RequestPermission,
+ OnRequestDesktopNotificationPermission)
+ IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_Show,
+ OnShowDesktopNotification)
+ IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_Cancel,
+ OnCancelDesktopNotification)
#if defined(OS_MACOSX)
IPC_MESSAGE_HANDLER(ViewHostMsg_ShowPopup, OnMsgShowPopup)
#endif
@@ -1230,6 +1263,34 @@
}
}
+void RenderViewHost::OnRequestDesktopNotificationPermission(
+ const GURL& source_origin, int callback_context) {
+ content::GetContentClient()->browser()->RequestDesktopNotificationPermission(
+ source_origin, callback_context, process()->id(), routing_id());
+}
+
+void RenderViewHost::OnShowDesktopNotification(
+ 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;
+ }
+
+ content::GetContentClient()->browser()->ShowDesktopNotification(
+ params, process()->id(), routing_id(), false);
+}
+
+void RenderViewHost::OnCancelDesktopNotification(int notification_id) {
+ content::GetContentClient()->browser()->CancelDesktopNotification(
+ process()->id(), routing_id(), notification_id);
+}
+
#if defined(OS_MACOSX)
void RenderViewHost::OnMsgShowPopup(
const ViewHostMsg_ShowPopup_Params& params) {

Powered by Google App Engine
This is Rietveld 408576698