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 27 namespace athena { 28 29 AthenaChromeAppDelegate::AthenaChromeAppDelegate() { 30 } 31 32 AthenaChromeAppDelegate::~AthenaChromeAppDelegate() { 33 } 34 35 void 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 51 content::ColorChooser* AthenaChromeAppDelegate::ShowColorChooser( 52 content::WebContents* web_contents, 53 SkColor initial_color) { 54 return chrome::ShowColorChooser(web_contents, initial_color); 55 } 56 57 void AthenaChromeAppDelegate::RunFileChooser( 58 content::WebContents* tab, 59 const content::FileChooserParams& params) { 60 FileSelectHelper::RunFileChooser(tab, params); 61 } 62 63 void 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 72 bool 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 82 void 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