Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 #include "chrome/browser/translate/cld_data_harness_factory.h" | |
| 6 | |
| 7 #include "base/lazy_instance.h" | |
| 8 #include "chrome/browser/translate/component_cld_data_harness.h" | |
| 9 #include "chrome/browser/translate/standalone_cld_data_harness.h" | |
| 10 | |
| 11 namespace { | |
| 12 | |
| 13 // This is the global instance managed by Get/Set | |
| 14 test::CldDataHarnessFactory* g_instance = NULL; | |
| 15 | |
| 16 base::LazyInstance<test::CldDataHarnessFactory>::Leaky g_wrapped_component = | |
| 17 LAZY_INSTANCE_INITIALIZER; | |
| 18 base::LazyInstance<test::CldDataHarnessFactory>::Leaky g_wrapped_standalone = | |
| 19 LAZY_INSTANCE_INITIALIZER; | |
| 20 base::LazyInstance<test::CldDataHarnessFactory>::Leaky g_wrapped_static = | |
| 21 LAZY_INSTANCE_INITIALIZER; | |
| 22 | |
| 23 } // namespace | |
| 24 | |
| 25 namespace test { | |
| 26 | |
| 27 scoped_ptr<CldDataHarness> CldDataHarnessFactory::CreateCldDataHarness() { | |
|
Takashi Toyoshima
2014/11/06 14:34:28
I may miss something, but this design looks redund
Andrew Hayden (chromium.org)
2014/11/10 14:06:35
Tricky question.
Each platform needs to be able to
Takashi Toyoshima
2014/11/11 07:16:36
Thank you for additional comments.
So, now I under
| |
| 28 if (this == GetStaticDataHarnessFactory()) { | |
| 29 return CldDataHarness::CreateStaticDataHarness(); | |
| 30 } | |
| 31 if (this == GetStandaloneDataHarnessFactory()) { | |
| 32 return CldDataHarness::CreateStandaloneDataHarness(); | |
| 33 } | |
| 34 if (this == GetComponentDataHarnessFactory()) { | |
| 35 return CldDataHarness::CreateComponentDataHarness(); | |
| 36 } | |
| 37 NOTREACHED() << "Subclass failed to override CreateCldDataHarness()"; | |
| 38 return CldDataHarness::CreateStaticDataHarness(); | |
| 39 } | |
| 40 | |
| 41 CldDataHarnessFactory* CldDataHarnessFactory::Get() { | |
| 42 DCHECK(g_instance != NULL) << "No CLD data harness factory was configured!"; | |
| 43 if (g_instance != NULL) return g_instance; | |
| 44 return g_instance; | |
| 45 } | |
| 46 | |
| 47 void CldDataHarnessFactory::Set(CldDataHarnessFactory* instance) { | |
| 48 g_instance = instance; | |
| 49 } | |
| 50 | |
| 51 // static | |
| 52 CldDataHarnessFactory* | |
| 53 CldDataHarnessFactory::GetStaticDataHarnessFactory() { | |
| 54 return &g_wrapped_static.Get(); | |
| 55 } | |
| 56 | |
| 57 // static | |
| 58 CldDataHarnessFactory* | |
| 59 CldDataHarnessFactory::GetStandaloneDataHarnessFactory() { | |
| 60 return &g_wrapped_standalone.Get(); | |
| 61 } | |
| 62 | |
| 63 // static | |
| 64 CldDataHarnessFactory* | |
| 65 CldDataHarnessFactory::GetComponentDataHarnessFactory() { | |
| 66 return &g_wrapped_component.Get(); | |
| 67 } | |
| 68 | |
| 69 } // namespace test | |
| OLD | NEW |