diff options
Diffstat (limited to 'chromium/net/proxy/proxy_resolver_script_data.h')
-rw-r--r-- | chromium/net/proxy/proxy_resolver_script_data.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/chromium/net/proxy/proxy_resolver_script_data.h b/chromium/net/proxy/proxy_resolver_script_data.h new file mode 100644 index 00000000000..16e17fd5293 --- /dev/null +++ b/chromium/net/proxy/proxy_resolver_script_data.h @@ -0,0 +1,74 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_PROXY_PROXY_RESOLVER_SCRIPT_DATA_H_ +#define NET_PROXY_PROXY_RESOLVER_SCRIPT_DATA_H_ + +#include "base/memory/ref_counted.h" +#include "base/strings/string16.h" +#include "net/base/net_export.h" +#include "url/gurl.h" + +namespace net { + +// Reference-counted wrapper for passing around a PAC script specification. +// The PAC script can be either specified via a URL, a deferred URL for +// auto-detect, or the actual javascript program text. +// +// This is thread-safe so it can be used by multi-threaded implementations of +// ProxyResolver to share the data between threads. +class NET_EXPORT_PRIVATE ProxyResolverScriptData + : public base::RefCountedThreadSafe<ProxyResolverScriptData> { + public: + enum Type { + TYPE_SCRIPT_CONTENTS, + TYPE_SCRIPT_URL, + TYPE_AUTO_DETECT, + }; + + // Creates a script data given the UTF8 bytes of the content. + static scoped_refptr<ProxyResolverScriptData> FromUTF8( + const std::string& utf8); + + // Creates a script data given the UTF16 bytes of the content. + static scoped_refptr<ProxyResolverScriptData> FromUTF16( + const base::string16& utf16); + + // Creates a script data given a URL to the PAC script. + static scoped_refptr<ProxyResolverScriptData> FromURL(const GURL& url); + + // Creates a script data for using an automatically detected PAC URL. + static scoped_refptr<ProxyResolverScriptData> ForAutoDetect(); + + Type type() const { + return type_; + } + + // Returns the contents of the script as UTF16. + // (only valid for type() == TYPE_SCRIPT_CONTENTS). + const base::string16& utf16() const; + + // Returns the URL of the script. + // (only valid for type() == TYPE_SCRIPT_URL). + const GURL& url() const; + + // Returns true if |this| matches |other|. + bool Equals(const ProxyResolverScriptData* other) const; + + private: + friend class base::RefCountedThreadSafe<ProxyResolverScriptData>; + ProxyResolverScriptData(Type type, + const GURL& url, + const base::string16& utf16); + virtual ~ProxyResolverScriptData(); + + + const Type type_; + const GURL url_; + const base::string16 utf16_; +}; + +} // namespace net + +#endif // NET_PROXY_PROXY_RESOLVER_SCRIPT_DATA_H_ |