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