| Index: chrome/browser/automation/automation_profile_impl.cc
|
| ===================================================================
|
| --- chrome/browser/automation/automation_profile_impl.cc (revision 56788)
|
| +++ chrome/browser/automation/automation_profile_impl.cc (working copy)
|
| @@ -1,203 +0,0 @@
|
| -// Copyright (c) 2006-2009 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.
|
| -
|
| -#include "chrome/browser/automation/automation_profile_impl.h"
|
| -
|
| -#include <map>
|
| -
|
| -#include "chrome/browser/automation/automation_resource_message_filter.h"
|
| -#include "chrome/browser/chrome_thread.h"
|
| -#include "chrome/browser/net/chrome_url_request_context.h"
|
| -#include "chrome/browser/profile.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "net/url_request/url_request_context.h"
|
| -#include "chrome/test/automation/automation_messages.h"
|
| -
|
| -namespace AutomationRequestContext {
|
| -
|
| -// A special Request context for automation. Substitute a few things
|
| -// like cookie store, proxy settings etc to handle them differently
|
| -// for automation.
|
| -class AutomationURLRequestContext : public ChromeURLRequestContext {
|
| - public:
|
| - AutomationURLRequestContext(ChromeURLRequestContext* original_context,
|
| - net::CookieStore* automation_cookie_store,
|
| - net::CookiePolicy* automation_cookie_policy)
|
| - : ChromeURLRequestContext(original_context),
|
| - // We must hold a reference to |original_context|, since many
|
| - // of the dependencies that ChromeURLRequestContext(original_context)
|
| - // copied are scoped to |original_context|.
|
| - original_context_(original_context) {
|
| - cookie_policy_ = automation_cookie_policy;
|
| - cookie_store_ = automation_cookie_store;
|
| - }
|
| -
|
| - virtual bool IsExternal() const {
|
| - return true;
|
| - }
|
| -
|
| - private:
|
| - virtual ~AutomationURLRequestContext() {
|
| - // Clear out members before calling base class dtor since we don't
|
| - // own any of them.
|
| -
|
| - // Clear URLRequestContext members.
|
| - host_resolver_ = NULL;
|
| - proxy_service_ = NULL;
|
| - http_transaction_factory_ = NULL;
|
| - ftp_transaction_factory_ = NULL;
|
| - cookie_store_ = NULL;
|
| - transport_security_state_ = NULL;
|
| - }
|
| -
|
| - scoped_refptr<ChromeURLRequestContext> original_context_;
|
| - DISALLOW_COPY_AND_ASSIGN(AutomationURLRequestContext);
|
| -};
|
| -
|
| -// CookieStore specialization to have automation specific
|
| -// behavior for cookies.
|
| -class AutomationCookieStore : public net::CookieStore {
|
| - public:
|
| - AutomationCookieStore(net::CookieStore* original_cookie_store,
|
| - AutomationResourceMessageFilter* automation_client,
|
| - int tab_handle)
|
| - : original_cookie_store_(original_cookie_store),
|
| - automation_client_(automation_client),
|
| - tab_handle_(tab_handle) {
|
| - }
|
| -
|
| - virtual ~AutomationCookieStore() {
|
| - DLOG(INFO) << "In " << __FUNCTION__;
|
| - }
|
| -
|
| - // CookieStore implementation.
|
| - virtual bool SetCookieWithOptions(const GURL& url,
|
| - const std::string& cookie_line,
|
| - const net::CookieOptions& options) {
|
| - // The cookie_string_ is available only once, i.e. once it is read by
|
| - // it is invalidated.
|
| - cookie_string_ = cookie_line;
|
| - return true;
|
| - }
|
| -
|
| - virtual std::string GetCookiesWithOptions(const GURL& url,
|
| - const net::CookieOptions& options) {
|
| - return cookie_string_;
|
| - }
|
| -
|
| - virtual void DeleteCookie(const GURL& url,
|
| - const std::string& cookie_name) {
|
| - NOTREACHED() << "Should not get called for an automation profile";
|
| - }
|
| -
|
| - virtual net::CookieMonster* GetCookieMonster() {
|
| - NOTREACHED() << "Should not get called for an automation profile";
|
| - return NULL;
|
| - }
|
| -
|
| - protected:
|
| - net::CookieStore* original_cookie_store_;
|
| - scoped_refptr<AutomationResourceMessageFilter> automation_client_;
|
| - int tab_handle_;
|
| - std::string cookie_string_;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(AutomationCookieStore);
|
| -};
|
| -
|
| -// CookiePolicy specialization for automation specific cookie policies.
|
| -class AutomationCookiePolicy : public net::CookiePolicy {
|
| - public:
|
| - AutomationCookiePolicy(AutomationResourceMessageFilter* automation_client,
|
| - int tab_handle, net::CookieStore* cookie_store)
|
| - : automation_client_(automation_client),
|
| - tab_handle_(tab_handle),
|
| - cookie_store_(cookie_store) {}
|
| -
|
| - virtual int CanGetCookies(const GURL& url,
|
| - const GURL& first_party_for_cookies,
|
| - net::CompletionCallback* callback) {
|
| - DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
| -
|
| - AutomationResourceMessageFilter::GetCookiesForUrl(tab_handle_, url,
|
| - callback,
|
| - cookie_store_.get());
|
| - return net::ERR_IO_PENDING;
|
| - }
|
| -
|
| - virtual int CanSetCookie(const GURL& url,
|
| - const GURL& first_party_for_cookies,
|
| - const std::string& cookie_line,
|
| - net::CompletionCallback* callback) {
|
| - AutomationResourceMessageFilter::SetCookiesForUrl(tab_handle_, url,
|
| - cookie_line,
|
| - callback);
|
| - return net::ERR_IO_PENDING;
|
| - }
|
| -
|
| - private:
|
| - scoped_refptr<AutomationResourceMessageFilter> automation_client_;
|
| - int tab_handle_;
|
| - scoped_refptr<net::CookieStore> cookie_store_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AutomationCookiePolicy);
|
| -};
|
| -
|
| -class Factory : public ChromeURLRequestContextFactory {
|
| - public:
|
| - Factory(ChromeURLRequestContextGetter* original_context_getter,
|
| - Profile* profile,
|
| - AutomationResourceMessageFilter* automation_client,
|
| - int tab_handle)
|
| - : ChromeURLRequestContextFactory(profile),
|
| - original_context_getter_(original_context_getter),
|
| - automation_client_(automation_client),
|
| - tab_handle_(tab_handle) {
|
| - }
|
| -
|
| - virtual ChromeURLRequestContext* Create() {
|
| - ChromeURLRequestContext* original_context =
|
| - original_context_getter_->GetIOContext();
|
| -
|
| - // Create an automation cookie store.
|
| - scoped_refptr<net::CookieStore> automation_cookie_store =
|
| - new AutomationCookieStore(original_context->cookie_store(),
|
| - automation_client_,
|
| - tab_handle_);
|
| -
|
| - // Create an automation cookie policy.
|
| - AutomationCookiePolicy* automation_cookie_policy =
|
| - new AutomationCookiePolicy(automation_client_,
|
| - tab_handle_,
|
| - automation_cookie_store);
|
| -
|
| - return new AutomationURLRequestContext(original_context,
|
| - automation_cookie_store,
|
| - automation_cookie_policy);
|
| - }
|
| -
|
| - private:
|
| - scoped_refptr<ChromeURLRequestContextGetter> original_context_getter_;
|
| - scoped_refptr<AutomationResourceMessageFilter> automation_client_;
|
| - int tab_handle_;
|
| -};
|
| -
|
| -ChromeURLRequestContextGetter* CreateAutomationURLRequestContextForTab(
|
| - int tab_handle,
|
| - Profile* profile,
|
| - AutomationResourceMessageFilter* automation_client) {
|
| - ChromeURLRequestContextGetter* original_context =
|
| - static_cast<ChromeURLRequestContextGetter*>(
|
| - profile->GetRequestContext());
|
| -
|
| - ChromeURLRequestContextGetter* request_context =
|
| - new ChromeURLRequestContextGetter(
|
| - NULL, // Don't register an observer on PrefService.
|
| - new Factory(original_context, profile, automation_client,
|
| - tab_handle));
|
| - return request_context;
|
| -}
|
| -
|
| -} // namespace AutomationRequestContext
|
| -
|
|
|