Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / athena / extensions / chrome / athena_chrome_app_delegate.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "athena/extensions/chrome/athena_chrome_app_delegate.h"
6
7 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
8 #include "chrome/browser/favicon/favicon_tab_helper.h"
9 #include "chrome/browser/file_select_helper.h"
10 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
11 #include "chrome/browser/platform_util.h"
12 #include "chrome/browser/ui/browser_dialogs.h"
13 #include "chrome/common/extensions/chrome_extension_messages.h"
14 #include "content/public/browser/render_view_host.h"
15 #include "content/public/browser/web_contents.h"
16
17 #if defined(ENABLE_PRINTING)
18 #if defined(ENABLE_PRINT_PREVIEW)
19 #include "chrome/browser/printing/print_preview_message_handler.h"
20 #include "chrome/browser/printing/print_view_manager.h"
21 #else
22 #include "chrome/browser/printing/print_view_manager_basic.h"
23 #endif  // defined(ENABLE_PRINT_PREVIEW)
24 #endif  // defined(ENABLE_PRINTING)
25
26 namespace athena {
27
28 AthenaChromeAppDelegate::AthenaChromeAppDelegate() {
29 }
30
31 AthenaChromeAppDelegate::~AthenaChromeAppDelegate() {
32 }
33
34 void AthenaChromeAppDelegate::InitWebContents(
35     content::WebContents* web_contents) {
36   FaviconTabHelper::CreateForWebContents(web_contents);
37
38 #if defined(ENABLE_PRINTING)
39 #if defined(ENABLE_PRINT_PREVIEW)
40   printing::PrintViewManager::CreateForWebContents(web_contents);
41   printing::PrintPreviewMessageHandler::CreateForWebContents(web_contents);
42 #else
43   printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
44 #endif  // defined(ENABLE_PRINT_PREVIEW)
45 #endif  // defined(ENABLE_PRINTING)
46   extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
47       web_contents);
48 }
49
50 content::ColorChooser* AthenaChromeAppDelegate::ShowColorChooser(
51     content::WebContents* web_contents,
52     SkColor initial_color) {
53   return chrome::ShowColorChooser(web_contents, initial_color);
54 }
55
56 void AthenaChromeAppDelegate::RunFileChooser(
57     content::WebContents* tab,
58     const content::FileChooserParams& params) {
59   FileSelectHelper::RunFileChooser(tab, params);
60 }
61
62 void AthenaChromeAppDelegate::RequestMediaAccessPermission(
63     content::WebContents* web_contents,
64     const content::MediaStreamRequest& request,
65     const content::MediaResponseCallback& callback,
66     const extensions::Extension* extension) {
67   MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
68       web_contents, request, callback, extension);
69 }
70
71 bool AthenaChromeAppDelegate::CheckMediaAccessPermission(
72     content::WebContents* web_contents,
73     const GURL& security_origin,
74     content::MediaStreamType type,
75     const extensions::Extension* extension) {
76   return MediaCaptureDevicesDispatcher::GetInstance()
77       ->CheckMediaAccessPermission(
78           web_contents, security_origin, type, extension);
79 }
80
81 void AthenaChromeAppDelegate::SetWebContentsBlocked(
82     content::WebContents* web_contents,
83     bool blocked) {
84   // RenderViewHost may be nullptr during shutdown.
85   content::RenderViewHost* host = web_contents->GetRenderViewHost();
86   if (host) {
87     host->Send(new ChromeViewMsg_SetVisuallyDeemphasized(host->GetRoutingID(),
88                                                          blocked));
89   }
90 }
91
92 }  // namespace athena