Index: ios/chrome/browser/translate/translate_service_ios.cc |
diff --git a/ios/chrome/browser/translate/translate_service_ios.cc b/ios/chrome/browser/translate/translate_service_ios.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3f2964f8fc63287b7bab512f2694edaa80890795 |
--- /dev/null |
+++ b/ios/chrome/browser/translate/translate_service_ios.cc |
@@ -0,0 +1,71 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ios/chrome/browser/translate/translate_service_ios.h" |
+ |
+#include "base/logging.h" |
+#include "components/translate/core/browser/translate_download_manager.h" |
+#include "components/translate/core/browser/translate_manager.h" |
+#include "ios/chrome/browser/application_context.h" |
+#include "ios/public/provider/chrome/browser/chrome_browser_provider.h" |
+#include "url/gurl.h" |
+ |
+namespace { |
+// The singleton instance of TranslateServiceIOS. |
+TranslateServiceIOS* g_translate_service = nullptr; |
+} |
+ |
+TranslateServiceIOS::TranslateServiceIOS() |
+ : resource_request_allowed_notifier_( |
+ GetApplicationContext()->GetLocalState(), |
+ nullptr) { |
+ resource_request_allowed_notifier_.Init(this); |
+} |
+ |
+TranslateServiceIOS::~TranslateServiceIOS() { |
+} |
+ |
+// static |
+void TranslateServiceIOS::Initialize() { |
+ if (g_translate_service) |
+ return; |
+ |
+ g_translate_service = new TranslateServiceIOS; |
+ // Initialize the allowed state for resource requests. |
+ g_translate_service->OnResourceRequestsAllowed(); |
+ translate::TranslateDownloadManager* download_manager = |
+ translate::TranslateDownloadManager::GetInstance(); |
+ download_manager->set_request_context( |
+ GetApplicationContext()->GetSystemURLRequestContext()); |
+ download_manager->set_application_locale( |
+ GetApplicationContext()->GetApplicationLocale()); |
+} |
+ |
+// static |
+void TranslateServiceIOS::Shutdown() { |
+ translate::TranslateDownloadManager* download_manager = |
+ translate::TranslateDownloadManager::GetInstance(); |
+ download_manager->Shutdown(); |
+} |
+ |
+void TranslateServiceIOS::OnResourceRequestsAllowed() { |
+ translate::TranslateLanguageList* language_list = |
+ translate::TranslateDownloadManager::GetInstance()->language_list(); |
+ if (!language_list) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ language_list->SetResourceRequestsAllowed( |
+ resource_request_allowed_notifier_.ResourceRequestsAllowed()); |
+} |
+ |
+// static |
+bool TranslateServiceIOS::IsTranslatableURL(const GURL& url) { |
+ // A URL is translatable unless it is one of the following: |
+ // - empty (can happen for popups created with window.open("")) |
+ // - an internal URL |
+ return !url.is_empty() && |
+ !url.SchemeIs(ios::GetChromeBrowserProvider()->GetChromeUIScheme()); |
+} |