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

Unified Diff: chrome/browser/extensions/api/i18n/i18n_api.h

Issue 1208993011: New thin layer of API extension chrome.i18n.detectLanguage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed issues and changes to functions due to added LanguageDetectionResult struct Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/i18n/i18n_api.h
diff --git a/chrome/browser/extensions/api/i18n/i18n_api.h b/chrome/browser/extensions/api/i18n/i18n_api.h
index 5863aaacf22c42625d43467e99cc5928bb968db7..5505f4e180d19d9a8f41bc8265012c0480fb4209 100644
--- a/chrome/browser/extensions/api/i18n/i18n_api.h
+++ b/chrome/browser/extensions/api/i18n/i18n_api.h
@@ -5,8 +5,14 @@
#ifndef CHROME_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_
#define CHROME_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_
+#include <string>
+#include <vector>
+
#include "chrome/browser/extensions/chrome_extension_function.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
+#include "extensions/browser/extension_function.h"
+#include "third_party/cld_2/src/public/compact_lang_det.h"
+#include "third_party/cld_2/src/public/encodings.h"
class Profile;
@@ -18,6 +24,54 @@ class I18nGetAcceptLanguagesFunction : public ChromeSyncExtensionFunction {
DECLARE_EXTENSION_FUNCTION("i18n.getAcceptLanguages", I18N_GETACCEPTLANGUAGES)
};
+class I18nDetectLanguageFunction : public UIThreadExtensionFunction {
+ public:
+ // Results returned by CLD
+ struct DetectedLanguage {
not at google - send to devlin 2015/07/10 16:21:09 You shouldn't need to make this public, and in fac
amalika 2015/07/10 18:18:36 I think we finally understand what you meant in th
not at google - send to devlin 2015/07/13 21:25:10 Yep you can typedef, but only in the .cc file (not
amalika 2015/07/13 23:57:01 Done.
+ DetectedLanguage();
+ DetectedLanguage(std::string language, int percentage);
+ ~DetectedLanguage();
+ // Returns a new base::DictionaryValue representing the serialized form of
+ // this LanguagesType object.
+ scoped_ptr<base::DictionaryValue> ToValue() const;
+
+ std::string language;
+ int percentage;
+ };
+
+ // LanguageDetectionResult object that holds detected langugae reliability and
+ // array of DetectedLanguage
+ struct LanguageDetectionResult {
not at google - send to devlin 2015/07/10 16:21:09 You should be able to define this entirely in an a
amalika 2015/07/13 23:57:01 Acknowledged.
+ LanguageDetectionResult();
+ LanguageDetectionResult(bool is_reliable,
not at google - send to devlin 2015/07/10 16:21:09 This is not the style we use, but running "git cl
amalika 2015/07/13 23:57:01 Done.
+ std::vector<linked_ptr<DetectedLanguage> > detected_langs);
+ ~LanguageDetectionResult();
+
+ // Returns a new base::DictionaryValue representing the serialized form of
+ // this Result object.
+ scoped_ptr<base::DictionaryValue> ToValue() const;
+
+ // CLD detected language reliability
+ bool is_reliable;
+
+ // array of detectedLanguage of size 1-3. The null is returned if
+ // there were no languages detected
+ std::vector<linked_ptr<DetectedLanguage> > detected_langs;
not at google - send to devlin 2015/07/10 16:21:09 No space needed between "> >" anymore. Same goes f
amalika 2015/07/13 23:57:01 Done.
+ };
+
+ private:
+ ~I18nDetectLanguageFunction() override {};
+ ResponseAction Run() override;
+ void GetLanguage(const std::string& text);
+ void SendLanguagesResult(
+ std::vector<linked_ptr<DetectedLanguage> > detected_langs,
+ bool is_reliable);
+ void InitDetectedLanguages(CLD2::Language* langs, int* percent3,
+ std::vector<linked_ptr<DetectedLanguage> >* detected_langs);
+
+ DECLARE_EXTENSION_FUNCTION("i18n.detectLanguage", I18N_DETECTLANGUAGE)
+};
+
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_

Powered by Google App Engine
This is Rietveld 408576698