15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/common/translate_util.h"
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/command_line.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/common/translate_switches.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "url/gurl.h"
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)typedef testing::Test TranslateUtilTest;
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Tests that synonym language code is converted to one used in supporting list.
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(TranslateUtilTest, ToTranslateLanguageSynonym) {
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  std::string language;
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("nb");
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("no", language);
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("he");
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("iw", language);
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("jv");
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("jw", language);
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("fil");
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("tl", language);
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Preserve a sub code if the language has a synonym.
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("he-IL");
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("iw-IL", language);
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Don't preserve a sub code if the language has just a similitude.
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("nb-NO");
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("nb-NO", language);
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Preserve the argument if it doesn't have its synonym.
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("en");
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToTranslateLanguageSynonym(&language);
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("en", language);
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Tests that synonym language code is converted to one used in Chrome internal.
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(TranslateUtilTest, ToChromeLanguageSynonym) {
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  std::string language;
534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("no");
554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("nb", language);
574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("iw");
594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("he", language);
614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("jw");
634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("jv", language);
654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("tl");
674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("fil", language);
694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Preserve a sub code if the language has a synonym.
714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("iw-IL");
724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("he-IL", language);
744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Don't preserve a sub code if the language has just a similitude.
764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("no-NO");
774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("no-NO", language);
794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Preserve the argument if it doesn't have its synonym.
814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  language = std::string("en");
824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  translate::ToChromeLanguageSynonym(&language);
834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ("en", language);
844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(TranslateUtilTest, SecurityOrigin) {
874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL origin = translate::GetTranslateSecurityOrigin();
884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ(std::string(translate::kSecurityOrigin), origin.spec());
894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  const std::string running_origin("http://www.tamurayukari.com/");
914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  CommandLine* command_line = CommandLine::ForCurrentProcess();
924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  command_line->AppendSwitchASCII(translate::switches::kTranslateSecurityOrigin,
934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  running_origin);
944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL modified_origin = translate::GetTranslateSecurityOrigin();
954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_EQ(running_origin, modified_origin.spec());
964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
97