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_TRANSLATE_BROWSER_TEST_UTILS_H_ 6 #define CHROME_BROWSER_TRANSLATE_TRANSLATE_BROWSER_TEST_UTILS_H_ 7 8 #include "base/macros.h" 9 10 namespace test { 11 12 // A utility class that sets up CLD dynamic data upon calling Init() and cleans 13 // it up when destroyed. 14 // Test data lives under: src/chrome/test/data/cld2_component 15 // 16 // This class is intended to be instantiated within IN_PROC_BROWSER_TEST_F 17 // test fixtures; it uses ASSERT macros for correctness, so that tests will 18 // fail gracefully in error conditions. Sample use: 19 // 20 // IN_PROC_BROWSER_TEST_F(BrowserTest, PageLanguageDetection) { 21 // test::ScopedCLDDynamicDataHarness dynamic_data_scope; 22 // ASSERT_NO_FATAL_FAILURE(dynamic_data_scope.Init()); 23 // // ... your code that depends on language detection goes here 24 // } 25 // 26 // If you have a lot of tests that need language translation features, you can 27 // add an instance of the ScopedCLDDynamicDataHarness to your test class' 28 // private member variables and add the call to Init() into SetUpOnMainThread. 29 // Sample use: 30 // 31 // class MyTestClass : public InProcessBrowserTest { 32 // public: 33 // virtual void SetUpOnMainThread() OVERRIDE { 34 // dynamic_data_scope.Init(); 35 // InProcessBrowserTest::SetUpOnMainThread(); 36 // } 37 // private: 38 // test::ScopedCLDDynamicDataHarness dynamic_data_scope; 39 // }; 40 // 41 class ScopedCLDDynamicDataHarness { 42 public: 43 // Constructs the object, but does nothing. Call Init() to prepare the 44 // harness, and enclose that call in ASSERT_NO_FATAL_FAILURE(...). 45 ScopedCLDDynamicDataHarness(); 46 47 // Reverses the work done by the constructor: any files and/or directories 48 // that would be created by the constructor are immediately and irrevocably 49 // deleted. 50 // If dynamic data is not currently available for any reason, this method has 51 // no net effect on the runtime. 52 ~ScopedCLDDynamicDataHarness(); 53 54 // Call this method, wrapping it in ASSERT_NO_FATAL_FAILURE, to initialize 55 // the harness and trigger test failure of initialization fails. 56 void Init(); 57 58 private: 59 void ClearStandaloneDataFileState(); 60 61 DISALLOW_COPY_AND_ASSIGN(ScopedCLDDynamicDataHarness); 62 }; 63 64 } // namespace test 65 66 #endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_BROWSER_TEST_UTILS_H_ 67