103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file.
403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef EXTENSIONS_SHELL_BROWSER_SHELL_NACL_BROWSER_DELEGATE_H_
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define EXTENSIONS_SHELL_BROWSER_SHELL_NACL_BROWSER_DELEGATE_H_
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/compiler_specific.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/macros.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "components/nacl/browser/nacl_browser_delegate.h"
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace content {
1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class BrowserContext;
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace extensions {
1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class InfoMap;
1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// A lightweight NaClBrowserDelegate for app_shell. Only supports a single
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// BrowserContext.
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class ShellNaClBrowserDelegate : public NaClBrowserDelegate {
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public:
2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Uses |context| to look up extensions via InfoMap on the IO thread.
2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  explicit ShellNaClBrowserDelegate(content::BrowserContext* context);
2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual ~ShellNaClBrowserDelegate();
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // NaClBrowserDelegate overrides:
2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void ShowMissingArchInfobar(int render_process_id,
2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                      int render_view_id) OVERRIDE;
3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool DialogsAreSuppressed() OVERRIDE;
3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool GetCacheDirectory(base::FilePath* cache_dir) OVERRIDE;
3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool GetPluginDirectory(base::FilePath* plugin_dir) OVERRIDE;
3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool GetPnaclDirectory(base::FilePath* pnacl_dir) OVERRIDE;
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool GetUserDirectory(base::FilePath* user_dir) OVERRIDE;
3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual std::string GetVersionString() const OVERRIDE;
3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual ppapi::host::HostFactory* CreatePpapiHostFactory(
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      content::BrowserPpapiHost* ppapi_host) OVERRIDE;
3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool MapUrlToLocalFilePath(const GURL& url,
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     bool is_blocking,
4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     const base::FilePath& profile_directory,
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     base::FilePath* file_path) OVERRIDE;
4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void SetDebugPatterns(std::string debug_patterns) OVERRIDE;
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool URLMatchesDebugPatterns(const GURL& manifest_url) OVERRIDE;
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual content::BrowserPpapiHost::OnKeepaliveCallback
4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      GetOnKeepaliveCallback() OVERRIDE;
4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool IsNonSfiModeAllowed(const base::FilePath& profile_directory,
4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                   const GURL& manifest_url) OVERRIDE;
4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) private:
5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  content::BrowserContext* browser_context_;  // Not owned.
5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellNaClBrowserDelegate);
5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)};
5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace extensions
5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif  // EXTENSIONS_SHELL_BROWSER_SHELL_NACL_BROWSER_DELEGATE_H_
58