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