athena_chrome_app_delegate.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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.h"
13#include "chrome/browser/ui/browser_dialogs.h"
14#include "chrome/common/extensions/chrome_extension_messages.h"
15#include "content/public/browser/render_view_host.h"
16#include "content/public/browser/web_contents.h"
17
18#if defined(ENABLE_PRINTING)
19#if defined(ENABLE_FULL_PRINTING)
20#include "chrome/browser/printing/print_preview_message_handler.h"
21#include "chrome/browser/printing/print_view_manager.h"
22#else
23#include "chrome/browser/printing/print_view_manager_basic.h"
24#endif  // defined(ENABLE_FULL_PRINTING)
25#endif  // defined(ENABLE_PRINTING)
26
27namespace athena {
28
29AthenaChromeAppDelegate::AthenaChromeAppDelegate() {
30}
31
32AthenaChromeAppDelegate::~AthenaChromeAppDelegate() {
33}
34
35void AthenaChromeAppDelegate::InitWebContents(
36    content::WebContents* web_contents) {
37  FaviconTabHelper::CreateForWebContents(web_contents);
38
39#if defined(ENABLE_PRINTING)
40#if defined(ENABLE_FULL_PRINTING)
41  printing::PrintViewManager::CreateForWebContents(web_contents);
42  printing::PrintPreviewMessageHandler::CreateForWebContents(web_contents);
43#else
44  printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
45#endif  // defined(ENABLE_FULL_PRINTING)
46#endif  // defined(ENABLE_PRINTING)
47  extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
48      web_contents);
49}
50
51content::ColorChooser* AthenaChromeAppDelegate::ShowColorChooser(
52    content::WebContents* web_contents,
53    SkColor initial_color) {
54  return chrome::ShowColorChooser(web_contents, initial_color);
55}
56
57void AthenaChromeAppDelegate::RunFileChooser(
58    content::WebContents* tab,
59    const content::FileChooserParams& params) {
60  FileSelectHelper::RunFileChooser(tab, params);
61}
62
63void AthenaChromeAppDelegate::RequestMediaAccessPermission(
64    content::WebContents* web_contents,
65    const content::MediaStreamRequest& request,
66    const content::MediaResponseCallback& callback,
67    const extensions::Extension* extension) {
68  MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
69      web_contents, request, callback, extension);
70}
71
72bool AthenaChromeAppDelegate::CheckMediaAccessPermission(
73    content::WebContents* web_contents,
74    const GURL& security_origin,
75    content::MediaStreamType type,
76    const extensions::Extension* extension) {
77  return MediaCaptureDevicesDispatcher::GetInstance()
78      ->CheckMediaAccessPermission(
79          web_contents, security_origin, type, extension);
80}
81
82void AthenaChromeAppDelegate::SetWebContentsBlocked(
83    content::WebContents* web_contents,
84    bool blocked) {
85  // RenderViewHost may be NULL during shutdown.
86  content::RenderViewHost* host = web_contents->GetRenderViewHost();
87  if (host) {
88    host->Send(new ChromeViewMsg_SetVisuallyDeemphasized(host->GetRoutingID(),
89                                                         blocked));
90  }
91}
92
93}  // namespace athena
94