| Index: content/shell/browser/shell_content_browser_client.cc
|
| diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
|
| index a178ee0969984a26a570cd9366479426664cd414..8a2f3fe7a58cada596978c12f7dff66eaeaae6b0 100644
|
| --- a/content/shell/browser/shell_content_browser_client.cc
|
| +++ b/content/shell/browser/shell_content_browser_client.cc
|
| @@ -22,6 +22,7 @@
|
| #include "content/shell/browser/shell_devtools_delegate.h"
|
| #include "content/shell/browser/shell_message_filter.h"
|
| #include "content/shell/browser/shell_net_log.h"
|
| +#include "content/shell/browser/shell_notification_manager.h"
|
| #include "content/shell/browser/shell_quota_permission_context.h"
|
| #include "content/shell/browser/shell_resource_dispatcher_host_delegate.h"
|
| #include "content/shell/browser/shell_web_contents_view_delegate_creator.h"
|
| @@ -114,6 +115,18 @@ int GetCrashSignalFD(const CommandLine& command_line) {
|
| }
|
| #endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
|
|
|
| +void RequestDesktopNotificationPermissionOnIO(
|
| + const GURL& source_origin,
|
| + RenderFrameHost* render_frame_host,
|
| + const base::Callback<void(blink::WebNotificationPermission)>& callback) {
|
| + ShellNotificationManager* manager =
|
| + ShellContentBrowserClient::Get()->GetShellNotificationManager();
|
| + if (manager)
|
| + manager->RequestPermission(source_origin, callback);
|
| + else
|
| + callback.Run(blink::WebNotificationPermissionAllowed);
|
| +}
|
| +
|
| } // namespace
|
|
|
| ShellContentBrowserClient* ShellContentBrowserClient::Get() {
|
| @@ -137,6 +150,18 @@ ShellContentBrowserClient::~ShellContentBrowserClient() {
|
| g_browser_client = NULL;
|
| }
|
|
|
| +ShellNotificationManager*
|
| +ShellContentBrowserClient::GetShellNotificationManager() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
|
| + return NULL;
|
| +
|
| + if (!shell_notification_manager_)
|
| + shell_notification_manager_.reset(new ShellNotificationManager());
|
| +
|
| + return shell_notification_manager_.get();
|
| +}
|
| +
|
| BrowserMainParts* ShellContentBrowserClient::CreateBrowserMainParts(
|
| const MainFunctionParams& parameters) {
|
| shell_browser_main_parts_ = new ShellBrowserMainParts(parameters);
|
| @@ -277,6 +302,31 @@ ShellContentBrowserClient::CreateQuotaPermissionContext() {
|
| return new ShellQuotaPermissionContext();
|
| }
|
|
|
| +void ShellContentBrowserClient::RequestDesktopNotificationPermission(
|
| + const GURL& source_origin,
|
| + RenderFrameHost* render_frame_host,
|
| + const base::Callback<void(blink::WebNotificationPermission)>& callback) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + BrowserThread::PostTask(BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&RequestDesktopNotificationPermissionOnIO,
|
| + source_origin,
|
| + render_frame_host,
|
| + callback));
|
| +}
|
| +
|
| +blink::WebNotificationPermission
|
| +ShellContentBrowserClient::CheckDesktopNotificationPermission(
|
| + const GURL& source_url,
|
| + ResourceContext* context,
|
| + int render_process_id) {
|
| + ShellNotificationManager* manager = GetShellNotificationManager();
|
| + if (manager)
|
| + return manager->CheckPermission(source_url);
|
| +
|
| + return blink::WebNotificationPermissionAllowed;
|
| +}
|
| +
|
| SpeechRecognitionManagerDelegate*
|
| ShellContentBrowserClient::GetSpeechRecognitionManagerDelegate() {
|
| return new ShellSpeechRecognitionManagerDelegate();
|
|
|