| Index: chrome/test/live_sync/live_sync_test.cc
|
| diff --git a/chrome/test/live_sync/live_sync_test.cc b/chrome/test/live_sync/live_sync_test.cc
|
| index 024f6ef9c6e8f9fdfd64ceb7556ff279ceefccfd..e09573b6101259a45f3b47dde656a20b429ac30d 100644
|
| --- a/chrome/test/live_sync/live_sync_test.cc
|
| +++ b/chrome/test/live_sync/live_sync_test.cc
|
| @@ -7,12 +7,26 @@
|
| #include <vector>
|
|
|
| #include "base/command_line.h"
|
| +#include "base/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "base/string_util.h"
|
| +#include "base/task.h"
|
| +#include "base/waitable_event.h"
|
| +#include "chrome/browser/chrome_thread.h"
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/browser/profile_manager.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/chrome_switches.h"
|
| +#include "chrome/common/net/url_fetcher.h"
|
| +#include "chrome/common/net/url_request_context_getter.h"
|
| +#include "chrome/test/testing_browser_process.h"
|
| +#include "googleurl/src/gurl.h"
|
| +#include "net/base/escape.h"
|
| +#include "net/proxy/proxy_config.h"
|
| +#include "net/proxy/proxy_config_service_fixed.h"
|
| +#include "net/proxy/proxy_service.h"
|
| +#include "net/url_request/url_request_context.h"
|
| +#include "net/url_request/url_request_status.h"
|
|
|
| namespace switches {
|
| const std::string kPasswordFileForTest = "password-file-for-test";
|
| @@ -20,6 +34,51 @@ const std::string kSyncUserForTest = "sync-user-for-test";
|
| const std::string kSyncPasswordForTest = "sync-password-for-test";
|
| }
|
|
|
| +class ConfigureURLFectcherDelegate : public URLFetcher::Delegate {
|
| + public:
|
| + ConfigureURLFectcherDelegate() : success_(false) {}
|
| +
|
| + virtual void OnURLFetchComplete(const URLFetcher* source,
|
| + const GURL& url,
|
| + const URLRequestStatus& status,
|
| + int response_code,
|
| + const ResponseCookies& cookies,
|
| + const std::string& data) {
|
| + if (status.status() == URLRequestStatus::SUCCESS && response_code == 200)
|
| + success_ = true;
|
| + MessageLoop::current()->Quit();
|
| + }
|
| +
|
| + bool success() const { return success_; }
|
| +
|
| + private:
|
| + bool success_;
|
| +};
|
| +
|
| +class SetProxyConfigTask : public Task {
|
| + public:
|
| + SetProxyConfigTask(base::WaitableEvent* done,
|
| + URLRequestContextGetter* url_request_context_getter,
|
| + const net::ProxyConfig& proxy_config)
|
| + : done_(done),
|
| + url_request_context_getter_(url_request_context_getter),
|
| + proxy_config_(proxy_config) {
|
| + }
|
| +
|
| + void Run() {
|
| + net::ProxyService* proxy_service =
|
| + url_request_context_getter_->GetURLRequestContext()->proxy_service();
|
| + proxy_service->ResetConfigService(
|
| + new net::ProxyConfigServiceFixed(proxy_config_));
|
| + done_->Signal();
|
| + }
|
| +
|
| + private:
|
| + base::WaitableEvent* done_;
|
| + URLRequestContextGetter* url_request_context_getter_;
|
| + net::ProxyConfig proxy_config_;
|
| +};
|
| +
|
| void LiveSyncTest::SetUp() {
|
| // At this point, the browser hasn't been launched, and no services are
|
| // available. But we can verify our command line parameters and fail
|
| @@ -198,3 +257,53 @@ void LiveSyncTest::TearDownLocalTestServer() {
|
| bool success = server_.Stop();
|
| ASSERT_TRUE(success);
|
| }
|
| +
|
| +
|
| +void LiveSyncTest::EnableNetwork(Profile* profile) {
|
| + SetProxyConfig(profile->GetRequestContext(),
|
| + net::ProxyConfig::CreateDirect());
|
| +}
|
| +
|
| +void LiveSyncTest::DisableNetwork(Profile* profile) {
|
| + // Set the current proxy configuration to a nonexistent proxy to
|
| + // effectively disable networking.
|
| + net::ProxyConfig config;
|
| + config.proxy_rules().ParseFromString("http=127.0.0.1:0");
|
| + SetProxyConfig(profile->GetRequestContext(), config);
|
| +}
|
| +
|
| +bool LiveSyncTest::EnsureSyncServerConfiguration() {
|
| + const CommandLine* cl = CommandLine::ForCurrentProcess();
|
| + if (!cl->HasSwitch(switches::kSyncServiceURL))
|
| + return true;
|
| +
|
| + return ConfigureSyncServer("user_email", username_);
|
| +}
|
| +
|
| +void LiveSyncTest::SetProxyConfig(URLRequestContextGetter* context_getter,
|
| + const net::ProxyConfig& proxy_config) {
|
| + base::WaitableEvent done(false, false);
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO,
|
| + FROM_HERE,
|
| + new SetProxyConfigTask(&done,
|
| + context_getter,
|
| + proxy_config));
|
| + done.Wait();
|
| +}
|
| +
|
| +bool LiveSyncTest::ConfigureSyncServer(const std::string& name,
|
| + const std::string& value) {
|
| + std::string url = StringPrintf("http://%s:%d/chromiumsync/configure",
|
| + server_.kHostName,
|
| + server_.kOKHTTPSPort);
|
| + std::string data = EscapePath(name) + "=" + EscapePath(value);
|
| + ConfigureURLFectcherDelegate delegate;
|
| + scoped_ptr<URLFetcher> fetcher(
|
| + URLFetcher::Create(0, GURL(url), URLFetcher::POST, &delegate));
|
| + fetcher->set_request_context(Profile::GetDefaultRequestContext());
|
| + fetcher->set_upload_data("application/x-www-form-urlencoded", data);
|
| + fetcher->Start();
|
| + MessageLoop::current()->Run();
|
| + return delegate.success();
|
| +}
|
|
|