resource_context.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file.
468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_RESOURCE_CONTEXT_H_
668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_RESOURCE_CONTEXT_H_
768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/basictypes.h"
968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "base/supports_user_data.h"
1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "build/build_config.h"
1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "content/common/content_export.h"
1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class GURL;
1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace appcache {
1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class AppCacheService;
1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace net {
2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class ClientCertStore;
2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class HostResolver;
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class URLRequestContext;
2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace content {
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// ResourceContext contains the relevant context information required for
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// resource loading. It lives on the IO thread, although it is constructed on
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// the UI thread. It must be destructed on the IO thread.
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class CONTENT_EXPORT ResourceContext : public base::SupportsUserData {
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public:
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(OS_IOS)
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual ~ResourceContext() {}
3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#else
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ResourceContext();
3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual ~ResourceContext();
3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif
3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual net::HostResolver* GetHostResolver() = 0;
4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // DEPRECATED: This is no longer a valid given isolated apps/sites and
4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // storage partitioning. This getter returns the default context associated
4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // with a BrowsingContext.
4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual net::URLRequestContext* GetRequestContext() = 0;
4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Get platform ClientCertStore. May return NULL.
4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual scoped_ptr<net::ClientCertStore> CreateClientCertStore();
4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
4968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Returns true if microphone access is allowed for |origin|. Used to
5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // determine what level of authorization is given to |origin| to access
5168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // resource metadata.
5268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual bool AllowMicAccess(const GURL& origin) = 0;
5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // Returns true if web camera access is allowed for |origin|. Used to
5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // determine what level of authorization is given to |origin| to access
5668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // resource metadata.
5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual bool AllowCameraAccess(const GURL& origin) = 0;
5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)};
59
60}  // namespace content
61
62#endif  // CONTENT_PUBLIC_BROWSER_RESOURCE_CONTEXT_H_
63