Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / components / translate / core / browser / translate_download_manager.cc
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/core/browser/translate_download_manager.h"
6
7 #include "base/command_line.h"
8 #include "base/logging.h"
9 #include "base/memory/singleton.h"
10 #include "base/prefs/pref_service.h"
11 #include "components/translate/core/common/translate_pref_names.h"
12 #include "components/translate/core/common/translate_switches.h"
13
14 namespace translate {
15
16 // static
17 TranslateDownloadManager* TranslateDownloadManager::GetInstance() {
18   return Singleton<TranslateDownloadManager>::get();
19 }
20
21 TranslateDownloadManager::TranslateDownloadManager()
22     : language_list_(new TranslateLanguageList),
23       script_(new TranslateScript) {}
24
25 TranslateDownloadManager::~TranslateDownloadManager() {}
26
27 void TranslateDownloadManager::Shutdown() {
28   language_list_.reset();
29   script_.reset();
30   request_context_ = NULL;
31 }
32
33 // static
34 void TranslateDownloadManager::RequestLanguageList() {
35   TranslateLanguageList* language_list = GetInstance()->language_list();
36   if (!language_list) {
37     NOTREACHED();
38     return;
39   }
40
41   language_list->RequestLanguageList();
42 }
43
44 // static
45 void TranslateDownloadManager::RequestLanguageList(PrefService* prefs) {
46   // We don't want to do this when translate is disabled.
47   DCHECK(prefs != NULL);
48   if (CommandLine::ForCurrentProcess()->HasSwitch(
49           translate::switches::kDisableTranslate) ||
50       !prefs->GetBoolean(prefs::kEnableTranslate)) {
51     return;
52   }
53
54   RequestLanguageList();
55 }
56
57 // static
58 void TranslateDownloadManager::GetSupportedLanguages(
59     std::vector<std::string>* languages) {
60   TranslateLanguageList* language_list = GetInstance()->language_list();
61   if (!language_list) {
62     NOTREACHED();
63     return;
64   }
65
66   language_list->GetSupportedLanguages(languages);
67 }
68
69 // static
70 base::Time TranslateDownloadManager::GetSupportedLanguagesLastUpdated() {
71   TranslateLanguageList* language_list = GetInstance()->language_list();
72   if (!language_list) {
73     NOTREACHED();
74     return base::Time();
75   }
76
77   return language_list->last_updated();
78 }
79
80 // static
81 std::string TranslateDownloadManager::GetLanguageCode(
82     const std::string& language) {
83   TranslateLanguageList* language_list = GetInstance()->language_list();
84   if (!language_list) {
85     NOTREACHED();
86     return language;
87   }
88
89   return language_list->GetLanguageCode(language);
90 }
91
92 // static
93 bool TranslateDownloadManager::IsSupportedLanguage(
94     const std::string& language) {
95   TranslateLanguageList* language_list = GetInstance()->language_list();
96   if (!language_list) {
97     NOTREACHED();
98     return false;
99   }
100
101   return language_list->IsSupportedLanguage(language);
102 }
103
104 // static
105 bool TranslateDownloadManager::IsAlphaLanguage(const std::string& language) {
106   TranslateLanguageList* language_list = GetInstance()->language_list();
107   if (!language_list) {
108     NOTREACHED();
109     return false;
110   }
111
112   return language_list->IsAlphaLanguage(language);
113 }
114
115 void TranslateDownloadManager::ClearTranslateScriptForTesting() {
116   if (script_.get() == NULL) {
117     NOTREACHED();
118     return;
119   }
120   script_->Clear();
121 }
122
123 void TranslateDownloadManager::ResetForTesting() {
124   language_list_.reset(new TranslateLanguageList);
125   script_.reset(new TranslateScript);
126 }
127
128 void TranslateDownloadManager::SetTranslateScriptExpirationDelay(int delay_ms) {
129   if (script_.get() == NULL) {
130     NOTREACHED();
131     return;
132   }
133   script_->set_expiration_delay(delay_ms);
134 }
135
136 }  // namespace translate