1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/features/feature_channel.h" 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/common/extensions/manifest_handlers/automation.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/common/error_utils.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/common/manifest_constants.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/common/permissions/permissions_data.h" 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace extensions { 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass AutomationManifestTest : public ChromeManifestTest { 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public: 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AutomationManifestTest() : channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {} 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) protected: 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AutomationInfo* GetAutomationInfo(scoped_refptr<Extension> extension) { 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return static_cast<AutomationInfo*>( 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension->GetManifestData(manifest_keys::kAutomation)); 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) private: 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ScopedCurrentChannel channel_; 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}; 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, AsBooleanFalse) { 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_boolean_false.json"); 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(0u, warnings.size()); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_FALSE(info); 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, AsBooleanTrue) { 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_boolean_true.json"); 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.google.com", 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[0])); 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->interact); 61010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 64010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, InteractTrue) { 65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_interact_true.json"); 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.google.com", 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[0])); 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 78010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->interact); 80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, Matches) { 84010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = LoadAndExpectWarning( 85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "automation_matches.json", 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ErrorUtils::FormatErrorMessage( 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) automation_errors::kErrorInvalidMatch, 88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "www.badpattern.com", 89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) URLPattern::GetParseResultString( 90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR))); 91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.google.com and www.twitter.com", 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[0])); 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 99010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 100010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 103010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->interact); 104010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->matches.is_empty()); 105010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com/"))); 107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com"))); 108010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); 109010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); 110010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 111010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com/"))); 112010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com"))); 113010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST_F(AutomationManifestTest, MatchesAndPermissions) { 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<Extension> extension = 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) LoadAndExpectSuccess("automation_matches_and_permissions.json"); 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_TRUE(extension.get()); 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(2u, warnings.size()); 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.google.com", 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[0])); 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.twitter.com", 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[1])); 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_TRUE(info); 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_FALSE(info->desktop); 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_FALSE(info->interact); 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_FALSE(info->matches.is_empty()); 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 139010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, EmptyMatches) { 140010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectWarning("automation_empty_matches.json", 142010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) automation_errors::kErrorNoMatchesProvided); 143010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 144010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(0u, warnings.size()); 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->interact); 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 156010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, NoValidMatches) { 158010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) std::string error; 159010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LoadExtension(ManifestData("automation_no_valid_matches.json"), &error); 161010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 162010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ("", error); 163010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ(2u, extension->install_warnings().size()); 164010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ(ErrorUtils::FormatErrorMessage( 165010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) automation_errors::kErrorInvalidMatch, 166010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "www.badpattern.com", 167010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) URLPattern::GetParseResultString( 168010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)), 169010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension->install_warnings()[0].message); 170010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ(automation_errors::kErrorNoMatchesProvided, 171010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension->install_warnings()[1].message); 172010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(0u, warnings.size()); 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 177010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 178010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 179010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 180010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 181010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->interact); 182010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 183010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 184010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 185010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, DesktopFalse) { 186010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 187010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_desktop_false.json"); 188010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 189010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("Read and change your data on www.google.com", 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::UTF16ToUTF8(warnings[0])); 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 196010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 197010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 198010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 199010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->desktop); 200010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(info->interact); 201010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 202010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 203010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 204010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, DesktopTrue) { 205010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 206010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_desktop_true.json"); 207010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 208010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) warnings[0]); 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 216010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 217010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 218010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->desktop); 219010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->interact); 220010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 221010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 222010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 223010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, Desktop_InteractTrue) { 224010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 225010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectSuccess("automation_desktop_interact_true.json"); 226010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) warnings[0]); 232010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 233010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 234010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 235010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 236010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->desktop); 237010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->interact); 238010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 239010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 240010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 241010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, Desktop_InteractFalse) { 242010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = 243010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) LoadAndExpectWarning("automation_desktop_interact_false.json", 244010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) automation_errors::kErrorDesktopTrueInteractFalse); 245010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 246010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) warnings[0]); 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 253010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 254010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 255010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 256010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->desktop); 257010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->interact); 258010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 259010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 260010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 261010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) { 262010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<Extension> extension = LoadAndExpectWarning( 263010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) "automation_desktop_matches_specified.json", 264010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) automation_errors::kErrorDesktopTrueMatchesSpecified); 265010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(extension.get()); 266010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<base::string16> warnings = 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension->permissions_data()->GetPermissionMessageStrings(); 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASSERT_EQ(1u, warnings.size()); 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) warnings[0]); 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 273010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AutomationInfo* info = AutomationInfo::Get(extension.get()); 274010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ASSERT_TRUE(info); 275010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 276010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->desktop); 277010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->interact); 278010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(info->matches.is_empty()); 279010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 280010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 281010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace extensions 282