| Index: chrome/browser/translate/cld_data_harness.h
|
| diff --git a/chrome/browser/translate/cld_data_harness.h b/chrome/browser/translate/cld_data_harness.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..59f01e36699d9061292fdda8b6474b3a851a00e1
|
| --- /dev/null
|
| +++ b/chrome/browser/translate/cld_data_harness.h
|
| @@ -0,0 +1,80 @@
|
| +// Copyright 2014 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_TRANSLATE_CLD_DATA_HARNESS_H_
|
| +#define CHROME_BROWSER_TRANSLATE_CLD_DATA_HARNESS_H_
|
| +
|
| +#include "base/files/file_path.h"
|
| +#include "base/macros.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +
|
| +namespace test {
|
| +
|
| +// A utility class that sets up CLD dynamic data upon calling Init() and cleans
|
| +// it up when destroyed.
|
| +// Test data lives under: src/chrome/test/data/cld2_component
|
| +//
|
| +// This class is intended to be instantiated within IN_PROC_BROWSER_TEST_F
|
| +// test fixtures; it uses ASSERT macros for correctness, so that tests will
|
| +// fail gracefully in error conditions. Sample use:
|
| +//
|
| +// IN_PROC_BROWSER_TEST_F(BrowserTest, PageLanguageDetection) {
|
| +// scoped_ptr<test::CldDataHarness> cld_data_scope =
|
| +// test::CreateCldDataHarness();
|
| +// ASSERT_NO_FATAL_FAILURE(cld_data_scope->Init());
|
| +// // ... your code that depends on language detection goes here
|
| +// }
|
| +//
|
| +// If you have a lot of tests that need language translation features, you can
|
| +// add an instance of the CldDataHarness to your test class' private
|
| +// member variables and add the call to Init() into SetUpOnMainThread.
|
| +// Sample use:
|
| +//
|
| +// class MyTestClass : public InProcessBrowserTest {
|
| +// public:
|
| +// MyTestClass() :
|
| +// cld_data_scope(test::CreateCldDataHarness()) {
|
| +// }
|
| +// virtual void SetUpOnMainThread() OVERRIDE {
|
| +// cld_data_scope->Init();
|
| +// InProcessBrowserTest::SetUpOnMainThread();
|
| +// }
|
| +// private:
|
| +// scoped_ptr<test::CldDataHarness> cld_data_scope;
|
| +// };
|
| +//
|
| +class CldDataHarness {
|
| + public:
|
| + // Reverses the work done by the Init() method: any files and/or directories
|
| + // that would be created by Init() (whether it was called or not) are
|
| + // immediately deleted.
|
| + // If dynamic data is not currently available for any reason, this method has
|
| + // no effect.
|
| + virtual ~CldDataHarness() {}
|
| +
|
| + // Call this method, wrapping it in ASSERT_NO_FATAL_FAILURE, to initialize
|
| + // the harness and trigger test failure if initialization fails.
|
| + virtual void Init() = 0;
|
| +
|
| + protected:
|
| + // Returns the version number of the Component Updater "extension" in the
|
| + // test directory. This generally corresponds the the revision of CLD2 that
|
| + // the data was built from. The version number is also part of the path that
|
| + // would be present at runtime if the component installer was used as the
|
| + // CLD2 data source.
|
| + const base::FilePath::CharType* GetTestDataSourceCrxVersion();
|
| +
|
| + // Returns the path to the Component Updater "extension" files in the test
|
| + // directory. Within, there is a real copy of the CLD2 dynamic data that can
|
| + // be used in testing scenarios without accessing the network.
|
| + void GetTestDataSourceDirectory(base::FilePath* out_path);
|
| +};
|
| +
|
| +// Static factory function that returns a data harness defined by the
|
| +// implementation, which must be a subclass of CldDataHarness.
|
| +scoped_ptr<CldDataHarness> CreateCldDataHarness();
|
| +
|
| +} // namespace test
|
| +
|
| +#endif // CHROME_BROWSER_TRANSLATE_CLD_DATA_HARNESS_H_
|
|
|