11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "athena/extensions/chrome/athena_chrome_app_delegate.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/favicon/favicon_tab_helper.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/file_select_helper.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/media/media_capture_devices_dispatcher.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/platform_util.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/browser.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/browser_dialogs.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/chrome_extension_messages.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/render_view_host.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/web_contents.h"
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_PRINTING)
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_FULL_PRINTING)
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/printing/print_preview_message_handler.h"
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/printing/print_view_manager.h"
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/printing/print_view_manager_basic.h"
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // defined(ENABLE_FULL_PRINTING)
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // defined(ENABLE_PRINTING)
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace athena {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAthenaChromeAppDelegate::AthenaChromeAppDelegate() {
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAthenaChromeAppDelegate::~AthenaChromeAppDelegate() {
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AthenaChromeAppDelegate::InitWebContents(
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents) {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  FaviconTabHelper::CreateForWebContents(web_contents);
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_PRINTING)
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_FULL_PRINTING)
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  printing::PrintViewManager::CreateForWebContents(web_contents);
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  printing::PrintPreviewMessageHandler::CreateForWebContents(web_contents);
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // defined(ENABLE_FULL_PRINTING)
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // defined(ENABLE_PRINTING)
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      web_contents);
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicontent::ColorChooser* AthenaChromeAppDelegate::ShowColorChooser(
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents,
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SkColor initial_color) {
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return chrome::ShowColorChooser(web_contents, initial_color);
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AthenaChromeAppDelegate::RunFileChooser(
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* tab,
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const content::FileChooserParams& params) {
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  FileSelectHelper::RunFileChooser(tab, params);
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AthenaChromeAppDelegate::RequestMediaAccessPermission(
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents,
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const content::MediaStreamRequest& request,
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const content::MediaResponseCallback& callback,
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const extensions::Extension* extension) {
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      web_contents, request, callback, extension);
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool AthenaChromeAppDelegate::CheckMediaAccessPermission(
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents,
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const GURL& security_origin,
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::MediaStreamType type,
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const extensions::Extension* extension) {
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return MediaCaptureDevicesDispatcher::GetInstance()
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ->CheckMediaAccessPermission(
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          web_contents, security_origin, type, extension);
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid AthenaChromeAppDelegate::SetWebContentsBlocked(
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents,
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    bool blocked) {
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // RenderViewHost may be NULL during shutdown.
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  content::RenderViewHost* host = web_contents->GetRenderViewHost();
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (host) {
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    host->Send(new ChromeViewMsg_SetVisuallyDeemphasized(host->GetRoutingID(),
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                         blocked));
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace athena
94