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) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/compiler_specific.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/macros.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chrome_content_browser_client_parts.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace content { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ResourceContext; 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class BrowserPermissionsPolicyDelegate; 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Implements the extensions portion of ChromeContentBrowserClient. 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ChromeContentBrowserClientExtensionsPart 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : public ChromeContentBrowserClientParts { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ChromeContentBrowserClientExtensionsPart(); 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~ChromeContentBrowserClientExtensionsPart(); 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Corresponds to the ChromeContentBrowserClient function of the same name. 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static GURL GetEffectiveURL(Profile* profile, const GURL& url); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldUseProcessPerSite(Profile* profile, 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& effective_url); 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool CanCommitURL(content::RenderProcessHost* process_host, 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& url); 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool IsSuitableHost(Profile* profile, 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::RenderProcessHost* process_host, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& site_url); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldTryToUseExistingProcessHost(Profile* profile, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& url); 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldSwapBrowsingInstancesForNavigation( 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::SiteInstance* site_instance, 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& current_url, 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& new_url); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldSwapProcessesForRedirect( 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::ResourceContext* resource_context, 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& current_url, 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& new_url); 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Similiar to ChromeContentBrowserClient::ShouldAllowOpenURL(), but the 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // return value indicates whether to use |result| or not. 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static bool ShouldAllowOpenURL(content::SiteInstance* site_instance, 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& from_url, 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& to_url, 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool* result); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Helper function to call InfoMap::SetSigninProcess(). 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void SetSigninProcess(content::SiteInstance* site_instance); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // ChromeContentBrowserClientParts: 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void RenderProcessWillLaunch( 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::RenderProcessHost* host) OVERRIDE; 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SiteInstanceGotProcess( 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::SiteInstance* site_instance) OVERRIDE; 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SiteInstanceDeleting( 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::SiteInstance* site_instance) OVERRIDE; 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh, 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& url, 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::WebPreferences* web_prefs) OVERRIDE; 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void BrowserURLHandlerCreated( 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserURLHandler* handler) OVERRIDE; 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void GetAdditionalAllowedSchemesForFileSystem( 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<std::string>* additional_allowed_schemes) OVERRIDE; 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void GetURLRequestAutoMountHandlers( 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::vector<storage::URLRequestAutoMountHandler>* handlers) OVERRIDE; 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void GetAdditionalFileSystemBackends( 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* browser_context, 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::FilePath& storage_partition_path, 7703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ScopedVector<storage::FileSystemBackend>* additional_backends) OVERRIDE; 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void AppendExtraRendererCommandLineSwitches( 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::CommandLine* command_line, 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::RenderProcessHost* process, 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Profile* profile) OVERRIDE; 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<BrowserPermissionsPolicyDelegate> permissions_policy_delegate_; 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromeContentBrowserClientExtensionsPart); 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_ 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 92