Index: chrome/browser/google_apis/test_util.h |
diff --git a/chrome/browser/google_apis/test_util.h b/chrome/browser/google_apis/test_util.h |
deleted file mode 100644 |
index 2976937c973e35060d68b7e6afb92d197906e0b9..0000000000000000000000000000000000000000 |
--- a/chrome/browser/google_apis/test_util.h |
+++ /dev/null |
@@ -1,299 +0,0 @@ |
-// 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 CHROME_BROWSER_GOOGLE_APIS_TEST_UTIL_H_ |
-#define CHROME_BROWSER_GOOGLE_APIS_TEST_UTIL_H_ |
- |
-#include <string> |
-#include <utility> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/template_util.h" |
-#include "chrome/browser/google_apis/base_requests.h" |
-#include "chrome/browser/google_apis/gdata_errorcode.h" |
-#include "chrome/browser/google_apis/task_util.h" |
- |
-class GURL; |
- |
-namespace base { |
-class FilePath; |
-class RunLoop; |
-class Value; |
-} |
- |
-namespace net { |
-namespace test_server { |
-class BasicHttpResponse; |
-class HttpResponse; |
-struct HttpRequest; |
-} |
-} |
- |
-namespace google_apis { |
-namespace test_util { |
- |
-// Runs the closure, and then quits the |run_loop|. |
-void RunAndQuit(base::RunLoop* run_loop, const base::Closure& closure); |
- |
-// Returns callback which runs the given |callback| and then quits |run_loop|. |
-template<typename CallbackType> |
-CallbackType CreateQuitCallback(base::RunLoop* run_loop, |
- const CallbackType& callback) { |
- return CreateComposedCallback(base::Bind(&RunAndQuit, run_loop), callback); |
-} |
- |
-// Removes |prefix| from |input| and stores the result in |output|. Returns |
-// true if the prefix is removed. |
-bool RemovePrefix(const std::string& input, |
- const std::string& prefix, |
- std::string* output); |
- |
-// Returns the absolute path for a test file stored under |
-// chrome/test/data. |
-base::FilePath GetTestFilePath(const std::string& relative_path); |
- |
-// Returns the base URL for communicating with the local test server for |
-// testing, running at the specified port number. |
-GURL GetBaseUrlForTesting(int port); |
- |
-// Writes the |content| to the file at |file_path|. Returns true on success, |
-// otherwise false. |
-bool WriteStringToFile(const base::FilePath& file_path, |
- const std::string& content); |
- |
-// Creates a |size| byte file. The file is filled with random bytes so that |
-// the test assertions can identify correct portion/position of the file is |
-// used. |
-// Returns true on success with the created file's |path| and |data|, otherwise |
-// false. |
-bool CreateFileOfSpecifiedSize(const base::FilePath& temp_dir, |
- size_t size, |
- base::FilePath* path, |
- std::string* data); |
- |
-// Loads a test JSON file as a base::Value, from a test file stored under |
-// chrome/test/data. |
-scoped_ptr<base::Value> LoadJSONFile(const std::string& relative_path); |
- |
-// Returns a HttpResponse created from the given file path. |
-scoped_ptr<net::test_server::BasicHttpResponse> CreateHttpResponseFromFile( |
- const base::FilePath& file_path); |
- |
-// Handles a request for downloading a file. Reads a file from the test |
-// directory and returns the content. Also, copies the |request| to the memory |
-// pointed by |out_request|. |
-// |base_url| must be set to the server's base url. |
-scoped_ptr<net::test_server::HttpResponse> HandleDownloadFileRequest( |
- const GURL& base_url, |
- net::test_server::HttpRequest* out_request, |
- const net::test_server::HttpRequest& request); |
- |
-// Parses a value of Content-Range header, which looks like |
-// "bytes <start_position>-<end_position>/<length>". |
-// Returns true on success. |
-bool ParseContentRangeHeader(const std::string& value, |
- int64* start_position, |
- int64* end_position, |
- int64* length); |
- |
-// Google API related code and Drive File System code work on asynchronous |
-// architecture and return the results via callbacks. |
-// Following code implements a callback to copy such results. |
-// Here is how to use: |
-// |
-// // Prepare result storage. |
-// ResultType1 result1; |
-// ResultType2 result2; |
-// : |
-// |
-// PerformAsynchronousTask( |
-// param1, param2, ..., |
-// CreateCopyResultCallback(&result1, &result2, ...)); |
-// base::RunLoop().RunUntilIdle(); // Run message loop to complete |
-// // the async task. |
-// |
-// // Hereafter, we can write expectation with results. |
-// EXPECT_EQ(expected_result1, result1); |
-// EXPECT_EQ(expected_result2, result2); |
-// : |
-// |
-// Note: The max arity of the supported function is 4 based on the usage. |
-namespace internal { |
-// Following helper templates are to support Chrome's move semantics. |
-// Their goal is defining helper methods which are similar to: |
-// void CopyResultCallback1(T1* out1, T1&& in1) |
-// void CopyResultCallback2(T1* out1, T2* out2, T1&& in1, T2&& in2) |
-// : |
-// in C++11. |
- |
-// Declare if the type is movable or not. Currently limited to scoped_ptr only. |
-// We can add more types upon the usage. |
-template<typename T> struct IsMovable : base::false_type {}; |
-template<typename T, typename D> |
-struct IsMovable<scoped_ptr<T, D> > : base::true_type {}; |
- |
-// InType is const T& if |UseConstRef| is true, otherwise |T|. |
-template<bool UseConstRef, typename T> struct InTypeHelper { |
- typedef const T& InType; |
-}; |
-template<typename T> struct InTypeHelper<false, T> { |
- typedef T InType; |
-}; |
- |
-// Simulates the std::move function in C++11. We use pointer here for argument, |
-// instead of rvalue reference. |
-template<bool IsMovable, typename T> struct MoveHelper { |
- static const T& Move(const T* in) { return *in; } |
-}; |
-template<typename T> struct MoveHelper<true, T> { |
- static T Move(T* in) { return in->Pass(); } |
-}; |
- |
-// Helper to handle Chrome's move semantics correctly. |
-template<typename T> |
-struct CopyResultCallbackHelper |
- // It is necessary to calculate the exact signature of callbacks we want |
- // to create here. In our case, as we use value-parameters for primitive |
- // types and movable types in the callback declaration. |
- // Thus the incoming type is as follows: |
- // 1) If the argument type |T| is class type but doesn't movable, |
- // |InType| is const T&. |
- // 2) Otherwise, |T| as is. |
- : InTypeHelper< |
- base::is_class<T>::value && !IsMovable<T>::value, // UseConstRef |
- T>, |
- MoveHelper<IsMovable<T>::value, T> { |
-}; |
- |
-// Copies the |in|'s value to |out|. |
-template<typename T1> |
-void CopyResultCallback( |
- T1* out, |
- typename CopyResultCallbackHelper<T1>::InType in) { |
- *out = CopyResultCallbackHelper<T1>::Move(&in); |
-} |
- |
-// Copies the |in1|'s value to |out1|, and |in2|'s to |out2|. |
-template<typename T1, typename T2> |
-void CopyResultCallback( |
- T1* out1, |
- T2* out2, |
- typename CopyResultCallbackHelper<T1>::InType in1, |
- typename CopyResultCallbackHelper<T2>::InType in2) { |
- *out1 = CopyResultCallbackHelper<T1>::Move(&in1); |
- *out2 = CopyResultCallbackHelper<T2>::Move(&in2); |
-} |
- |
-// Copies the |in1|'s value to |out1|, |in2|'s to |out2|, and |in3|'s to |out3|. |
-template<typename T1, typename T2, typename T3> |
-void CopyResultCallback( |
- T1* out1, |
- T2* out2, |
- T3* out3, |
- typename CopyResultCallbackHelper<T1>::InType in1, |
- typename CopyResultCallbackHelper<T2>::InType in2, |
- typename CopyResultCallbackHelper<T3>::InType in3) { |
- *out1 = CopyResultCallbackHelper<T1>::Move(&in1); |
- *out2 = CopyResultCallbackHelper<T2>::Move(&in2); |
- *out3 = CopyResultCallbackHelper<T3>::Move(&in3); |
-} |
- |
-// Holds the pointers for output. This is introduced for the workaround of |
-// the arity limitation of Callback. |
-template<typename T1, typename T2, typename T3, typename T4> |
-struct OutputParams { |
- OutputParams(T1* out1, T2* out2, T3* out3, T4* out4) |
- : out1(out1), out2(out2), out3(out3), out4(out4) {} |
- T1* out1; |
- T2* out2; |
- T3* out3; |
- T4* out4; |
-}; |
- |
-// Copies the |in1|'s value to |output->out1|, |in2|'s to |output->out2|, |
-// and so on. |
-template<typename T1, typename T2, typename T3, typename T4> |
-void CopyResultCallback( |
- const OutputParams<T1, T2, T3, T4>& output, |
- typename CopyResultCallbackHelper<T1>::InType in1, |
- typename CopyResultCallbackHelper<T2>::InType in2, |
- typename CopyResultCallbackHelper<T3>::InType in3, |
- typename CopyResultCallbackHelper<T4>::InType in4) { |
- *output.out1 = CopyResultCallbackHelper<T1>::Move(&in1); |
- *output.out2 = CopyResultCallbackHelper<T2>::Move(&in2); |
- *output.out3 = CopyResultCallbackHelper<T3>::Move(&in3); |
- *output.out4 = CopyResultCallbackHelper<T4>::Move(&in4); |
-} |
- |
-} // namespace internal |
- |
-template<typename T1> |
-base::Callback<void(typename internal::CopyResultCallbackHelper<T1>::InType)> |
-CreateCopyResultCallback(T1* out1) { |
- return base::Bind(&internal::CopyResultCallback<T1>, out1); |
-} |
- |
-template<typename T1, typename T2> |
-base::Callback<void(typename internal::CopyResultCallbackHelper<T1>::InType, |
- typename internal::CopyResultCallbackHelper<T2>::InType)> |
-CreateCopyResultCallback(T1* out1, T2* out2) { |
- return base::Bind(&internal::CopyResultCallback<T1, T2>, out1, out2); |
-} |
- |
-template<typename T1, typename T2, typename T3> |
-base::Callback<void(typename internal::CopyResultCallbackHelper<T1>::InType, |
- typename internal::CopyResultCallbackHelper<T2>::InType, |
- typename internal::CopyResultCallbackHelper<T3>::InType)> |
-CreateCopyResultCallback(T1* out1, T2* out2, T3* out3) { |
- return base::Bind( |
- &internal::CopyResultCallback<T1, T2, T3>, out1, out2, out3); |
-} |
- |
-template<typename T1, typename T2, typename T3, typename T4> |
-base::Callback<void(typename internal::CopyResultCallbackHelper<T1>::InType, |
- typename internal::CopyResultCallbackHelper<T2>::InType, |
- typename internal::CopyResultCallbackHelper<T3>::InType, |
- typename internal::CopyResultCallbackHelper<T4>::InType)> |
-CreateCopyResultCallback(T1* out1, T2* out2, T3* out3, T4* out4) { |
- return base::Bind( |
- &internal::CopyResultCallback<T1, T2, T3, T4>, |
- internal::OutputParams<T1, T2, T3, T4>(out1, out2, out3, out4)); |
-} |
- |
-typedef std::pair<int64, int64> ProgressInfo; |
- |
-// Helper utility for recording the results via ProgressCallback. |
-void AppendProgressCallbackResult(std::vector<ProgressInfo>* progress_values, |
- int64 progress, |
- int64 total); |
- |
-// Helper utility for recording the content via GetContentCallback. |
-class TestGetContentCallback { |
- public: |
- TestGetContentCallback(); |
- ~TestGetContentCallback(); |
- |
- const GetContentCallback& callback() const { return callback_; } |
- const ScopedVector<std::string>& data() const { return data_; } |
- ScopedVector<std::string>* mutable_data() { return &data_; } |
- std::string GetConcatenatedData() const; |
- |
- private: |
- void OnGetContent(google_apis::GDataErrorCode error, |
- scoped_ptr<std::string> data); |
- |
- const GetContentCallback callback_; |
- ScopedVector<std::string> data_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestGetContentCallback); |
-}; |
- |
-} // namespace test_util |
-} // namespace google_apis |
- |
-#endif // CHROME_BROWSER_GOOGLE_APIS_TEST_UTIL_H_ |