Index: chrome/browser/chrome_to_mobile/common/test_cloud_print_request_factory.cc |
diff --git a/chrome/browser/chrome_to_mobile/common/test_cloud_print_request_factory.cc b/chrome/browser/chrome_to_mobile/common/test_cloud_print_request_factory.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..71f575846cd34d11952d9fb1418d970f554719ec |
--- /dev/null |
+++ b/chrome/browser/chrome_to_mobile/common/test_cloud_print_request_factory.cc |
@@ -0,0 +1,167 @@ |
+// Copyright 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. |
+ |
+#include "chrome/browser/chrome_to_mobile/common/test_cloud_print_request_factory.h" |
+ |
+#include <string> |
+ |
+namespace chrome_to_mobile { |
+ |
+TestCloudPrintRequest::TestCloudPrintRequest( |
+ TestCloudPrintRequestFactory* factory, |
+ const GURL& url, |
+ Delegate* delegate) |
+ : factory_(factory), |
+ url_(url), |
+ delegate_(delegate), |
+ has_completed_(false), |
+ response_data_(std::string()), |
+ mime_type_(std::string()), |
+ success_(true), |
+ has_oauth2_access_token_failure_(false), |
+ has_cloud_print_auth_error_(false) { |
+ factory_->requests_.push_back(this); |
+} |
+ |
+TestCloudPrintRequest::~TestCloudPrintRequest() { |
+ // Removes itself from |factory_|. |
+ std::vector<TestCloudPrintRequest*>* requests = &(factory_->requests_); |
+ std::vector<TestCloudPrintRequest*>::iterator it = requests->begin(); |
+ for (; it != requests->end(); ++it) { |
+ if (*it == this) { |
+ requests->erase(it); |
+ return; |
+ } |
+ } |
+} |
+ |
+void TestCloudPrintRequest::Complete() { |
+ delegate_->OnRequestComplete(this); |
+ has_completed_= true; |
+} |
+ |
+void TestCloudPrintRequest::Complete( |
+ const std::string& response_data, |
+ const std::string& mime_type, |
+ const bool& success, |
+ const bool& has_oauth2_access_token_failure, |
+ const bool& has_cloud_print_auth_error) { |
+ response_data_ = response_data; |
+ mime_type_ = mime_type; |
+ success_ = success; |
+ has_oauth2_access_token_failure_ = has_oauth2_access_token_failure; |
+ has_cloud_print_auth_error_ = has_cloud_print_auth_error; |
+ Complete(); |
+} |
+ |
+bool TestCloudPrintRequest::HasCompleted() const { |
+ return has_completed_; |
+} |
+ |
+std::string TestCloudPrintRequest::GetRequestPath() const { |
+ return url_.path(); |
+} |
+ |
+bool TestCloudPrintRequest::HasOAuth2AccessTokenFailure() const { |
+ return has_oauth2_access_token_failure_; |
+} |
+ |
+bool TestCloudPrintRequest::HasCloudPrintAuthError() const { |
+ return has_cloud_print_auth_error_; |
+} |
+ |
+std::string TestCloudPrintRequest::GetResponseMimeType() const { |
+ return mime_type_; |
+} |
+ |
+std::string TestCloudPrintRequest::GetResponseData(bool* success) const { |
+ *success = success_; |
+ return response_data_; |
+} |
+ |
+ScopedCloudPrintRequestFactory::ScopedCloudPrintRequestFactory( |
+ CloudPrintRequestFactory* factory) { |
+ DCHECK(!CloudPrintRequest::GetFactory()); |
+ CloudPrintRequest::SetFactory(factory); |
+} |
+ |
+ScopedCloudPrintRequestFactory::~ScopedCloudPrintRequestFactory() { |
+ DCHECK(CloudPrintRequest::GetFactory()); |
+ CloudPrintRequest::SetFactory(NULL); |
+} |
+ |
+TestCloudPrintRequestFactory::TestCloudPrintRequestFactory() |
+ : ScopedCloudPrintRequestFactory(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
+} |
+ |
+TestCloudPrintRequestFactory::~TestCloudPrintRequestFactory() { |
+} |
+ |
+CloudPrintRequest* TestCloudPrintRequestFactory::CreateAndStart( |
+ const GURL& url, |
+ const std::string& additional_header, |
+ const net::URLFetcher::RequestType& request_type, |
+ const std::string& post_data_mime_type, |
+ const std::string& post_data, |
+ const CloudPrintRequest::Settings& settings, |
+ CloudPrintRequest::Delegate* delegate) { |
+ TestCloudPrintRequest* request = new TestCloudPrintRequest( |
+ this, url, delegate); |
+ return request; |
+} |
+ |
+std::vector<TestCloudPrintRequest*> |
+ TestCloudPrintRequestFactory::GetPendingRequests() const { |
+ std::vector<TestCloudPrintRequest*> requests; |
+ std::vector<TestCloudPrintRequest*>::const_iterator it = requests_.begin(); |
+ for (; it != requests_.end(); ++it) { |
+ TestCloudPrintRequest* request = *it; |
+ if (!request->HasCompleted()) |
+ requests.push_back(request); |
+ } |
+ return requests; |
+} |
+ |
+std::vector<TestCloudPrintRequest*> TestCloudPrintRequestFactory:: |
+ GetPendingRequestsAtPath(const std::string& path) const { |
+ std::vector<TestCloudPrintRequest*> requests; |
+ std::vector<TestCloudPrintRequest*>::const_iterator it = requests_.begin(); |
+ for (; it != requests_.end(); ++it) { |
+ TestCloudPrintRequest* request = *it; |
+ if (request->GetRequestPath().compare(path) == 0 && |
+ !request->HasCompleted()) { |
+ requests.push_back(request); |
+ } |
+ } |
+ return requests; |
+} |
+ |
+void TestCloudPrintRequestFactory::CompleteRequestAtPath( |
+ const std::string& path, int index, |
+ const std::string& response_data, const std::string& mime_type, |
+ bool success, bool has_oauth2_access_token_failure, |
+ bool has_cloud_print_auth_error) { |
+ int count = 0; |
+ std::vector<TestCloudPrintRequest*>::const_iterator it = requests_.begin(); |
+ for (; it != requests_.end(); ++it) { |
+ TestCloudPrintRequest* request = *it; |
+ if (request->GetRequestPath().compare(path) == 0 && |
+ !request->HasCompleted()) { |
+ if (count++ == index) { |
+ request->Complete(response_data, mime_type, success, |
+ has_oauth2_access_token_failure, has_cloud_print_auth_error); |
+ return; |
+ } |
+ } |
+ } |
+ NOTREACHED(); |
+} |
+ |
+void TestCloudPrintRequestFactory::CompleteRequestAtPath( |
+ const std::string& path, int index, bool success) { |
+ CompleteRequestAtPath( |
+ path, index, std::string(), std::string(), success, false, false); |
+} |
+ |
+} // namespace chrome_to_mobile |