15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/common/console_message_level.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/common/media_stream_request.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace blink { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class WebGestureEvent; 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace content { 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class BrowserContext; 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)struct OpenURLParams; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class WebContents; 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class AppDelegate; 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Extension; 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Provides common functionality for apps and launcher pages to respond to 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// messages from a WebContents. 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class AppWebContentsHelper { 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) AppWebContentsHelper(content::BrowserContext* browser_context, 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& extension_id, 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::WebContents* web_contents, 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) AppDelegate* app_delegate); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Returns true if the given |event| should not be handled by the renderer. 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldSuppressGestureEvent(const blink::WebGestureEvent& event); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Opens a new URL inside the passed in WebContents. See WebContentsDelegate. 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::WebContents* OpenURLFromTab( 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const content::OpenURLParams& params) const; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Requests to lock the mouse. See WebContentsDelegate. 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void RequestToLockMouse() const; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Asks permission to use the camera and/or microphone. See 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // WebContentsDelegate. 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void RequestMediaAccessPermission( 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const content::MediaStreamRequest& request, 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const content::MediaResponseCallback& callback) const; 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Checks permission to use the camera or microphone. See 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // WebContentsDelegate. 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool CheckMediaAccessPermission(const GURL& security_origin, 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::MediaStreamType type) const; 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const Extension* GetExtension() const; 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Helper method to add a message to the renderer's DevTools console. 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void AddMessageToDevToolsConsole(content::ConsoleMessageLevel level, 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) const; 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // The browser context with which this window is associated. 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // AppWindowWebContentsDelegate does not own this object. 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* browser_context_; 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string extension_id_; 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::WebContents* web_contents_; 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) AppDelegate* app_delegate_; 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppWebContentsHelper); 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace extensions 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_WEB_CONTENTS_HELPER_H_ 79