1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef COMPONENTS_TRANSLATE_CORE_LANGUAGE_DETECTION_LANGUAGE_DETECTION_UTIL_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define COMPONENTS_TRANSLATE_CORE_LANGUAGE_DETECTION_LANGUAGE_DETECTION_UTIL_H_
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <string>
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/strings/string16.h"
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace translate {
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Determines content page language from Content-Language code and contents.
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochstd::string DeterminePageLanguage(const std::string& code,
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                  const std::string& html_lang,
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                  const base::string16& contents,
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                  std::string* cld_language,
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                  bool* is_cld_reliable);
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Corrects language code if it contains well-known mistakes.
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Called only by tests.
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid CorrectLanguageCodeTypo(std::string* code);
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Checks if the language code's format is valid.
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Called only by tests.
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool IsValidLanguageCode(const std::string& code);
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Checks if languages are matched, or similar. This function returns true
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// against a language pair containing a language which is difficult for CLD to
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// distinguish.
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Called only by tests.
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool IsSameOrSimilarLanguages(const std::string& page_language,
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                              const std::string& cld_language);
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Checks if languages pair is one of well-known pairs of wrong server
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// configuration.
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Called only by tests.
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool MaybeServerWrongConfiguration(const std::string& page_language,
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                   const std::string& cld_language);
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace translate
43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // COMPONENTS_TRANSLATE_CORE_LANGUAGE_DETECTION_LANGUAGE_DETECTION_UTIL_H_
45