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#ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 6#define EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 7 8#include "content/public/common/console_message_level.h" 9#include "content/public/common/media_stream_request.h" 10 11namespace blink { 12class WebGestureEvent; 13} 14 15namespace content { 16class BrowserContext; 17struct OpenURLParams; 18class WebContents; 19} 20 21namespace extensions { 22 23class AppDelegate; 24class Extension; 25 26// Provides common functionality for apps and launcher pages to respond to 27// messages from a WebContents. 28class AppWebContentsHelper { 29 public: 30 AppWebContentsHelper(content::BrowserContext* browser_context, 31 const std::string& extension_id, 32 content::WebContents* web_contents, 33 AppDelegate* app_delegate); 34 35 // Returns true if the given |event| should not be handled by the renderer. 36 static bool ShouldSuppressGestureEvent(const blink::WebGestureEvent& event); 37 38 // Opens a new URL inside the passed in WebContents. See WebContentsDelegate. 39 content::WebContents* OpenURLFromTab( 40 const content::OpenURLParams& params) const; 41 42 // Requests to lock the mouse. See WebContentsDelegate. 43 void RequestToLockMouse() const; 44 45 // Asks permission to use the camera and/or microphone. See 46 // WebContentsDelegate. 47 void RequestMediaAccessPermission( 48 const content::MediaStreamRequest& request, 49 const content::MediaResponseCallback& callback) const; 50 51 // Checks permission to use the camera or microphone. See 52 // WebContentsDelegate. 53 bool CheckMediaAccessPermission(const GURL& security_origin, 54 content::MediaStreamType type) const; 55 56 private: 57 const Extension* GetExtension() const; 58 59 // Helper method to add a message to the renderer's DevTools console. 60 void AddMessageToDevToolsConsole(content::ConsoleMessageLevel level, 61 const std::string& message) const; 62 63 // The browser context with which this window is associated. 64 // AppWindowWebContentsDelegate does not own this object. 65 content::BrowserContext* browser_context_; 66 67 const std::string extension_id_; 68 69 content::WebContents* web_contents_; 70 71 AppDelegate* app_delegate_; 72 73 DISALLOW_COPY_AND_ASSIGN(AppWebContentsHelper); 74}; 75 76} // namespace extensions 77 78#endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 79