Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / chrome_content_browser_client_extensions_part.h
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 CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_
6 #define CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_
7
8 #include "base/compiler_specific.h"
9 #include "base/macros.h"
10 #include "chrome/browser/chrome_content_browser_client_parts.h"
11
12 namespace content {
13 class ResourceContext;
14 }
15
16 namespace extensions {
17
18 class BrowserPermissionsPolicyDelegate;
19
20 // Implements the extensions portion of ChromeContentBrowserClient.
21 class ChromeContentBrowserClientExtensionsPart
22     : public ChromeContentBrowserClientParts {
23  public:
24   ChromeContentBrowserClientExtensionsPart();
25   virtual ~ChromeContentBrowserClientExtensionsPart();
26
27   // Corresponds to the ChromeContentBrowserClient function of the same name.
28   static GURL GetEffectiveURL(Profile* profile, const GURL& url);
29   static bool ShouldUseProcessPerSite(Profile* profile,
30                                       const GURL& effective_url);
31   static bool CanCommitURL(content::RenderProcessHost* process_host,
32                            const GURL& url);
33   static bool IsSuitableHost(Profile* profile,
34                              content::RenderProcessHost* process_host,
35                              const GURL& site_url);
36   static bool ShouldTryToUseExistingProcessHost(Profile* profile,
37                                                 const GURL& url);
38   static bool ShouldSwapBrowsingInstancesForNavigation(
39       content::SiteInstance* site_instance,
40       const GURL& current_url,
41       const GURL& new_url);
42   static bool ShouldSwapProcessesForRedirect(
43       content::ResourceContext* resource_context,
44       const GURL& current_url,
45       const GURL& new_url);
46   static std::string GetWorkerProcessTitle(const GURL& url,
47                                            content::ResourceContext* context);
48
49   // Similiar to ChromeContentBrowserClient::ShouldAllowOpenURL(), but the
50   // return value indicates whether to use |result| or not.
51   static bool ShouldAllowOpenURL(content::SiteInstance* site_instance,
52                                  const GURL& from_url,
53                                  const GURL& to_url,
54                                  bool* result);
55
56   // Helper function to call InfoMap::SetSigninProcess().
57   static void SetSigninProcess(content::SiteInstance* site_instance);
58
59  private:
60   // ChromeContentBrowserClientParts:
61   virtual void RenderProcessWillLaunch(
62       content::RenderProcessHost* host) OVERRIDE;
63   virtual void SiteInstanceGotProcess(
64       content::SiteInstance* site_instance) OVERRIDE;
65   virtual void SiteInstanceDeleting(
66       content::SiteInstance* site_instance) OVERRIDE;
67   virtual void WorkerProcessCreated(content::SiteInstance* site_instance,
68                                     int worker_process_id) OVERRIDE;
69   virtual void WorkerProcessTerminated(content::SiteInstance* site_instance,
70                                        int worker_process_id) OVERRIDE;
71   virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,
72                                    const GURL& url,
73                                    content::WebPreferences* web_prefs) OVERRIDE;
74   virtual void BrowserURLHandlerCreated(
75       content::BrowserURLHandler* handler) OVERRIDE;
76   virtual void GetAdditionalAllowedSchemesForFileSystem(
77       std::vector<std::string>* additional_allowed_schemes) OVERRIDE;
78   virtual void GetURLRequestAutoMountHandlers(
79       std::vector<fileapi::URLRequestAutoMountHandler>* handlers) OVERRIDE;
80   virtual void GetAdditionalFileSystemBackends(
81       content::BrowserContext* browser_context,
82       const base::FilePath& storage_partition_path,
83       ScopedVector<fileapi::FileSystemBackend>* additional_backends) OVERRIDE;
84   virtual void AppendExtraRendererCommandLineSwitches(
85       base::CommandLine* command_line,
86       content::RenderProcessHost* process,
87       Profile* profile) OVERRIDE;
88
89   scoped_ptr<BrowserPermissionsPolicyDelegate> permissions_policy_delegate_;
90
91   DISALLOW_COPY_AND_ASSIGN(ChromeContentBrowserClientExtensionsPart);
92 };
93
94 }  // namespace extensions
95
96 #endif  // CHROME_BROWSER_EXTENSIONS_CHROME_CONTENT_BROWSER_CLIENT_EXTENSIONS_PART_H_
97