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.
5 #ifndef CHROME_BROWSER_TRANSLATE_TRANSLATE_SERVICE_H_
6 #define CHROME_BROWSER_TRANSLATE_TRANSLATE_SERVICE_H_
8 #include "components/web_resource/resource_request_allowed_notifier.h"
13 // Singleton managing the resources required for Translate.
14 class TranslateService
15 : public web_resource::ResourceRequestAllowedNotifier::Observer
{
17 // Must be called before the Translate feature can be used.
18 static void Initialize();
20 // Must be called to shut down the Translate feature.
21 static void Shutdown(bool cleanup_pending_fetcher
);
23 // Initializes the TranslateService in a way that it can be initialized
24 // multiple times in a unit test suite (once for each test). Should be paired
25 // with ShutdownForTesting at the end of the test.
26 static void InitializeForTesting();
28 // Shuts down the TranslateService at the end of a test in a way that the next
29 // test can initialize and use the service.
30 static void ShutdownForTesting();
32 // Let the caller decide if and when we should fetch the language list from
33 // the translate server. This is a NOOP if switches::kDisableTranslate is set
34 // or if prefs::kEnableTranslate is set to false.
35 static void FetchLanguageListFromTranslateServer(PrefService
* prefs
);
37 // Returns true if the new translate bubble is enabled.
38 static bool IsTranslateBubbleEnabled();
40 // Returns the language to translate to. The language returned is the
41 // first language found in the following list that is supported by the
42 // translation service:
44 // the accept-language list
45 // If no language is found then an empty string is returned.
46 static std::string
GetTargetLanguage(PrefService
* prefs
);
48 // Returns true if the URL can be translated.
49 static bool IsTranslatableURL(const GURL
& url
);
55 // ResourceRequestAllowedNotifier::Observer methods.
56 void OnResourceRequestsAllowed() override
;
58 // Helper class to know if it's allowed to make network resource requests.
59 web_resource::ResourceRequestAllowedNotifier
60 resource_request_allowed_notifier_
;
63 #endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_SERVICE_H_