Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: chrome/browser/translate/cld_data_harness.h

Issue 333603002: Modularize Compact Language Detector 2 (CLD2) data sources (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: git cl format Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_TRANSLATE_CLD_DATA_HARNESS_H_
6 #define CHROME_BROWSER_TRANSLATE_CLD_DATA_HARNESS_H_
7
8 #include "base/files/file_path.h"
9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h"
11
12 namespace test {
13
14 // A utility class that sets up CLD dynamic data upon calling Init() and cleans
15 // it up when destroyed.
16 // Test data lives under: src/chrome/test/data/cld2_component
17 //
18 // This class is intended to be instantiated within IN_PROC_BROWSER_TEST_F
19 // test fixtures; it uses ASSERT macros for correctness, so that tests will
20 // fail gracefully in error conditions. Sample use:
21 //
22 // IN_PROC_BROWSER_TEST_F(BrowserTest, PageLanguageDetection) {
23 // scoped_ptr<test::CldDataHarness> cld_data_scope =
24 // test::CreateCldDataHarness();
25 // ASSERT_NO_FATAL_FAILURE(cld_data_scope->Init());
26 // // ... your code that depends on language detection goes here
27 // }
28 //
29 // If you have a lot of tests that need language translation features, you can
30 // add an instance of the CldDataHarness to your test class' private
31 // member variables and add the call to Init() into SetUpOnMainThread.
32 // Sample use:
33 //
34 // class MyTestClass : public InProcessBrowserTest {
35 // public:
36 // MyTestClass() :
37 // cld_data_scope(test::CreateCldDataHarness()) {
38 // }
39 // virtual void SetUpOnMainThread() OVERRIDE {
40 // cld_data_scope->Init();
41 // InProcessBrowserTest::SetUpOnMainThread();
42 // }
43 // private:
44 // scoped_ptr<test::CldDataHarness> cld_data_scope;
45 // };
46 //
47 class CldDataHarness {
48 public:
49 // Reverses the work done by the Init() method: any files and/or directories
50 // that would be created by Init() (whether it was called or not) are
51 // immediately deleted.
52 // If dynamic data is not currently available for any reason, this method has
53 // no effect.
54 virtual ~CldDataHarness() {}
55
56 // Call this method, wrapping it in ASSERT_NO_FATAL_FAILURE, to initialize
57 // the harness and trigger test failure if initialization fails.
58 virtual void Init() = 0;
59
60 protected:
61 // Returns the version number of the Component Updater "extension" in the
62 // test directory. This generally corresponds the the revision of CLD2 that
63 // the data was built from. The version number is also part of the path that
64 // would be present at runtime if the component installer was used as the
65 // CLD2 data source.
66 const base::FilePath::CharType* GetTestDataSourceCrxVersion();
67
68 // Returns the path to the Component Updater "extension" files in the test
69 // directory. Within, there is a real copy of the CLD2 dynamic data that can
70 // be used in testing scenarios without accessing the network.
71 void GetTestDataSourceDirectory(base::FilePath* out_path);
72 };
73
74 // Static factory function that returns a data harness defined by the
75 // implementation, which must be a subclass of CldDataHarness.
76 scoped_ptr<CldDataHarness> CreateCldDataHarness();
77
78 } // namespace test
79
80 #endif // CHROME_BROWSER_TRANSLATE_CLD_DATA_HARNESS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698