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

Side by Side Diff: components/translate/content/browser/browser_cld_data_provider_factory.cc

Issue 461633002: Refactor language detection logic to allow non-static CLD data sources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Create a factory for test harnesses and use it Created 6 years, 2 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 #include "components/translate/content/browser/browser_cld_data_provider_factory .h"
6
7 #include "base/lazy_instance.h"
8 #include "components/translate/content/browser/browser_cld_data_provider.h"
9
10 namespace {
11 translate::BrowserCldDataProviderFactory* g_instance = NULL;
12
picksi1 2014/09/29 15:59:08 This looks familiar! Is there a common pattern her
Andrew Hayden (chromium.org) 2014/10/30 14:25:15 Similarly, this is now cleaned up.
13 // The default factory
14 struct WrappedDefault {
15 WrappedDefault() {
16 value = new translate::BrowserCldDataProviderFactory();
17 }
18 translate::BrowserCldDataProviderFactory* value;
19 };
20 base::LazyInstance<WrappedDefault>::Leaky g_wrapped_default =
21 LAZY_INSTANCE_INITIALIZER;
22
23 } // namespace
24
25
26 namespace translate {
27
28 BrowserCldDataProviderFactory::BrowserCldDataProviderFactory() {
29 }
30
31 BrowserCldDataProviderFactory::~BrowserCldDataProviderFactory() {
32 }
33
34 BrowserCldDataProvider* BrowserCldDataProviderFactory::NewProvider(
35 content::WebContents* web_contents) {
36 return new BrowserCldDataProvider();
37 }
38
39 bool BrowserCldDataProviderFactory::IsInitialized() {
40 return g_instance != NULL;
41 }
42
43 void BrowserCldDataProviderFactory::Set(
44 BrowserCldDataProviderFactory* instance, bool overwrite) {
45 if (overwrite || g_instance == NULL) {
46 g_instance = instance;
picksi1 2014/09/29 15:59:08 Now I understand what the bool does! It might be b
Andrew Hayden (chromium.org) 2014/10/30 14:25:15 Done
47 }
48 }
49
50 BrowserCldDataProviderFactory* BrowserCldDataProviderFactory::Get() {
51 if (g_instance == NULL) {
52 // No provider set. OK for test code and narrow use cases, but bad if it is
53 // a real browser. Since there's no good way to differentiate these use
54 // cases at runtime, don't log a warning here.
55 return g_wrapped_default.Get().value;
picksi1 2014/09/29 15:59:08 Can we lazily initialize (to a default?) in here?
Andrew Hayden (chromium.org) 2014/10/30 14:25:15 That's what we're doing. Cleaner now.
56 }
57 return g_instance;
58 }
59
60 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698