123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/extensions/chrome_extension_host_delegate.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/extensions/extension_service.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/extensions/extension_tab_util.h" 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/media/media_capture_devices_dispatcher.h" 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.h" 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/ui/prefs/prefs_tab_helper.h" 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "extensions/browser/extension_host.h" 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "extensions/browser/extension_system.h" 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace extensions { 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)ChromeExtensionHostDelegate::ChromeExtensionHostDelegate() {} 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)ChromeExtensionHostDelegate::~ChromeExtensionHostDelegate() {} 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ChromeExtensionHostDelegate::OnExtensionHostCreated( 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) content::WebContents* web_contents) { 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ChromeExtensionWebContentsObserver::CreateForWebContents(web_contents); 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrefsTabHelper::CreateForWebContents(web_contents); 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ChromeExtensionHostDelegate::OnRenderViewCreatedForBackgroundPage( 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ExtensionHost* host) { 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ExtensionService* service = 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ExtensionSystem::Get(host->browser_context())->extension_service(); 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (service) 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) service->DidCreateRenderViewForBackgroundPage(host); 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)content::JavaScriptDialogManager* 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)ChromeExtensionHostDelegate::GetJavaScriptDialogManager() { 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return GetJavaScriptDialogManagerInstance(); 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ChromeExtensionHostDelegate::CreateTab(content::WebContents* web_contents, 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const std::string& extension_id, 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) WindowOpenDisposition disposition, 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const gfx::Rect& initial_pos, 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool user_gesture) { 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ExtensionTabUtil::CreateTab( 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) web_contents, extension_id, disposition, initial_pos, user_gesture); 4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void ChromeExtensionHostDelegate::ProcessMediaAccessRequest( 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) content::WebContents* web_contents, 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const content::MediaStreamRequest& request, 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const content::MediaResponseCallback& callback, 5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const Extension* extension) { 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) web_contents, request, callback, extension); 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeExtensionHostDelegate::CheckMediaAccessPermission( 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::WebContents* web_contents, 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& security_origin, 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::MediaStreamType type, 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const Extension* extension) { 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return MediaCaptureDevicesDispatcher::GetInstance() 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->CheckMediaAccessPermission( 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_contents, security_origin, type, extension); 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} // namespace extensions 70