| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/common/extensions/features/simple_feature.h" | 5 #include "chrome/common/extensions/features/simple_feature.h" | 
| 6 | 6 | 
| 7 #include "chrome/common/extensions/value_builder.h" | 7 #include "chrome/common/extensions/value_builder.h" | 
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" | 
| 9 | 9 | 
| 10 using chrome::VersionInfo; | 10 using chrome::VersionInfo; | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 84   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 84   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 
| 85       kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 85       kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 
| 86       Feature::UNSPECIFIED_PLATFORM).result()); | 86       Feature::UNSPECIFIED_PLATFORM).result()); | 
| 87   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 87   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 
| 88       kIdBar, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 88       kIdBar, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 
| 89       Feature::UNSPECIFIED_PLATFORM).result()); | 89       Feature::UNSPECIFIED_PLATFORM).result()); | 
| 90 | 90 | 
| 91   EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 91   EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 
| 92       kIdBaz, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 92       kIdBaz, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 
| 93       Feature::UNSPECIFIED_PLATFORM).result()); | 93       Feature::UNSPECIFIED_PLATFORM).result()); | 
| 94   EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 94   EXPECT_EQ( | 
| 95       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 95       Feature::NOT_FOUND_IN_WHITELIST, | 
| 96       Feature::UNSPECIFIED_PLATFORM).result()); | 96       feature.IsAvailableToManifest(std::string(), | 
|  | 97                                     Manifest::TYPE_UNKNOWN, | 
|  | 98                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 99                                     -1, | 
|  | 100                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 97 | 101 | 
| 98   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 102   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 
| 99   EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 103   EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 
| 100       kIdBaz, Manifest::TYPE_LEGACY_PACKAGED_APP, | 104       kIdBaz, Manifest::TYPE_LEGACY_PACKAGED_APP, | 
| 101       Feature::UNSPECIFIED_LOCATION, -1, | 105       Feature::UNSPECIFIED_LOCATION, -1, | 
| 102       Feature::UNSPECIFIED_PLATFORM).result()); | 106       Feature::UNSPECIFIED_PLATFORM).result()); | 
| 103 } | 107 } | 
| 104 | 108 | 
| 105 TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) { | 109 TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) { | 
| 106   // echo -n "fooabbbbccccddddeeeeffffgggghhhh" | | 110   // echo -n "fooabbbbccccddddeeeeffffgggghhhh" | | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 126       "tooshortforanextensionid", Manifest::TYPE_UNKNOWN, | 130       "tooshortforanextensionid", Manifest::TYPE_UNKNOWN, | 
| 127       Feature::UNSPECIFIED_LOCATION, -1, | 131       Feature::UNSPECIFIED_LOCATION, -1, | 
| 128       Feature::UNSPECIFIED_PLATFORM).result()); | 132       Feature::UNSPECIFIED_PLATFORM).result()); | 
| 129 } | 133 } | 
| 130 | 134 | 
| 131 TEST_F(ExtensionSimpleFeatureTest, PackageType) { | 135 TEST_F(ExtensionSimpleFeatureTest, PackageType) { | 
| 132   SimpleFeature feature; | 136   SimpleFeature feature; | 
| 133   feature.extension_types()->insert(Manifest::TYPE_EXTENSION); | 137   feature.extension_types()->insert(Manifest::TYPE_EXTENSION); | 
| 134   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 138   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 
| 135 | 139 | 
| 136   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 140   EXPECT_EQ( | 
| 137       "", Manifest::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, | 141       Feature::IS_AVAILABLE, | 
| 138       Feature::UNSPECIFIED_PLATFORM).result()); | 142       feature.IsAvailableToManifest(std::string(), | 
| 139   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 143                                     Manifest::TYPE_EXTENSION, | 
| 140       "", Manifest::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, | 144                                     Feature::UNSPECIFIED_LOCATION, | 
| 141       -1, Feature::UNSPECIFIED_PLATFORM).result()); | 145                                     -1, | 
|  | 146                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
|  | 147   EXPECT_EQ( | 
|  | 148       Feature::IS_AVAILABLE, | 
|  | 149       feature.IsAvailableToManifest(std::string(), | 
|  | 150                                     Manifest::TYPE_LEGACY_PACKAGED_APP, | 
|  | 151                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 152                                     -1, | 
|  | 153                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 142 | 154 | 
| 143   EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 155   EXPECT_EQ( | 
| 144       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 156       Feature::INVALID_TYPE, | 
| 145       Feature::UNSPECIFIED_PLATFORM).result()); | 157       feature.IsAvailableToManifest(std::string(), | 
| 146   EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 158                                     Manifest::TYPE_UNKNOWN, | 
| 147       "", Manifest::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, | 159                                     Feature::UNSPECIFIED_LOCATION, | 
| 148       Feature::UNSPECIFIED_PLATFORM).result()); | 160                                     -1, | 
|  | 161                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
|  | 162   EXPECT_EQ( | 
|  | 163       Feature::INVALID_TYPE, | 
|  | 164       feature.IsAvailableToManifest(std::string(), | 
|  | 165                                     Manifest::TYPE_THEME, | 
|  | 166                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 167                                     -1, | 
|  | 168                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 149 } | 169 } | 
| 150 | 170 | 
| 151 TEST_F(ExtensionSimpleFeatureTest, Context) { | 171 TEST_F(ExtensionSimpleFeatureTest, Context) { | 
| 152   SimpleFeature feature; | 172   SimpleFeature feature; | 
| 153   feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 173   feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 
| 154   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 174   feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); | 
| 155   feature.set_platform(Feature::CHROMEOS_PLATFORM); | 175   feature.set_platform(Feature::CHROMEOS_PLATFORM); | 
| 156   feature.set_min_manifest_version(21); | 176   feature.set_min_manifest_version(21); | 
| 157   feature.set_max_manifest_version(25); | 177   feature.set_max_manifest_version(25); | 
| 158 | 178 | 
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 213       Feature::CHROMEOS_PLATFORM).result()); | 233       Feature::CHROMEOS_PLATFORM).result()); | 
| 214   feature.set_max_manifest_version(25); | 234   feature.set_max_manifest_version(25); | 
| 215 } | 235 } | 
| 216 | 236 | 
| 217 TEST_F(ExtensionSimpleFeatureTest, Location) { | 237 TEST_F(ExtensionSimpleFeatureTest, Location) { | 
| 218   SimpleFeature feature; | 238   SimpleFeature feature; | 
| 219 | 239 | 
| 220   // If the feature specifies "component" as its location, then only component | 240   // If the feature specifies "component" as its location, then only component | 
| 221   // extensions can access it. | 241   // extensions can access it. | 
| 222   feature.set_location(Feature::COMPONENT_LOCATION); | 242   feature.set_location(Feature::COMPONENT_LOCATION); | 
| 223   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 243   EXPECT_EQ( | 
| 224       "", Manifest::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, | 244       Feature::IS_AVAILABLE, | 
| 225       Feature::UNSPECIFIED_PLATFORM).result()); | 245       feature.IsAvailableToManifest(std::string(), | 
| 226   EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest( | 246                                     Manifest::TYPE_UNKNOWN, | 
| 227       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 247                                     Feature::COMPONENT_LOCATION, | 
| 228       Feature::UNSPECIFIED_PLATFORM).result()); | 248                                     -1, | 
|  | 249                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
|  | 250   EXPECT_EQ( | 
|  | 251       Feature::INVALID_LOCATION, | 
|  | 252       feature.IsAvailableToManifest(std::string(), | 
|  | 253                                     Manifest::TYPE_UNKNOWN, | 
|  | 254                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 255                                     -1, | 
|  | 256                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 229 | 257 | 
| 230   // But component extensions can access anything else, whatever their location. | 258   // But component extensions can access anything else, whatever their location. | 
| 231   feature.set_location(Feature::UNSPECIFIED_LOCATION); | 259   feature.set_location(Feature::UNSPECIFIED_LOCATION); | 
| 232   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 260   EXPECT_EQ( | 
| 233       "", Manifest::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, | 261       Feature::IS_AVAILABLE, | 
| 234       Feature::UNSPECIFIED_PLATFORM).result()); | 262       feature.IsAvailableToManifest(std::string(), | 
|  | 263                                     Manifest::TYPE_UNKNOWN, | 
|  | 264                                     Feature::COMPONENT_LOCATION, | 
|  | 265                                     -1, | 
|  | 266                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 235 } | 267 } | 
| 236 | 268 | 
| 237 TEST_F(ExtensionSimpleFeatureTest, Platform) { | 269 TEST_F(ExtensionSimpleFeatureTest, Platform) { | 
| 238   SimpleFeature feature; | 270   SimpleFeature feature; | 
| 239   feature.set_platform(Feature::CHROMEOS_PLATFORM); | 271   feature.set_platform(Feature::CHROMEOS_PLATFORM); | 
| 240   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 272   EXPECT_EQ(Feature::IS_AVAILABLE, | 
| 241       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 273             feature.IsAvailableToManifest(std::string(), | 
| 242       Feature::CHROMEOS_PLATFORM).result()); | 274                                           Manifest::TYPE_UNKNOWN, | 
| 243   EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest( | 275                                           Feature::UNSPECIFIED_LOCATION, | 
| 244       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 276                                           -1, | 
| 245       Feature::UNSPECIFIED_PLATFORM).result()); | 277                                           Feature::CHROMEOS_PLATFORM).result()); | 
|  | 278   EXPECT_EQ( | 
|  | 279       Feature::INVALID_PLATFORM, | 
|  | 280       feature.IsAvailableToManifest(std::string(), | 
|  | 281                                     Manifest::TYPE_UNKNOWN, | 
|  | 282                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 283                                     -1, | 
|  | 284                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 246 } | 285 } | 
| 247 | 286 | 
| 248 TEST_F(ExtensionSimpleFeatureTest, Version) { | 287 TEST_F(ExtensionSimpleFeatureTest, Version) { | 
| 249   SimpleFeature feature; | 288   SimpleFeature feature; | 
| 250   feature.set_min_manifest_version(5); | 289   feature.set_min_manifest_version(5); | 
| 251 | 290 | 
| 252   EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, | 291   EXPECT_EQ( | 
| 253             feature.IsAvailableToManifest( | 292       Feature::INVALID_MIN_MANIFEST_VERSION, | 
| 254                 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 293       feature.IsAvailableToManifest(std::string(), | 
| 255                 0, Feature::UNSPECIFIED_PLATFORM).result()); | 294                                     Manifest::TYPE_UNKNOWN, | 
| 256   EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, | 295                                     Feature::UNSPECIFIED_LOCATION, | 
| 257             feature.IsAvailableToManifest( | 296                                     0, | 
| 258                 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 297                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 259                 4, Feature::UNSPECIFIED_PLATFORM).result()); | 298   EXPECT_EQ( | 
|  | 299       Feature::INVALID_MIN_MANIFEST_VERSION, | 
|  | 300       feature.IsAvailableToManifest(std::string(), | 
|  | 301                                     Manifest::TYPE_UNKNOWN, | 
|  | 302                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 303                                     4, | 
|  | 304                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 260 | 305 | 
| 261   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 306   EXPECT_EQ( | 
| 262       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 307       Feature::IS_AVAILABLE, | 
| 263       5, Feature::UNSPECIFIED_PLATFORM).result()); | 308       feature.IsAvailableToManifest(std::string(), | 
| 264   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 309                                     Manifest::TYPE_UNKNOWN, | 
| 265       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 310                                     Feature::UNSPECIFIED_LOCATION, | 
| 266       10, Feature::UNSPECIFIED_PLATFORM).result()); | 311                                     5, | 
|  | 312                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
|  | 313   EXPECT_EQ( | 
|  | 314       Feature::IS_AVAILABLE, | 
|  | 315       feature.IsAvailableToManifest(std::string(), | 
|  | 316                                     Manifest::TYPE_UNKNOWN, | 
|  | 317                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 318                                     10, | 
|  | 319                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 267 | 320 | 
| 268   feature.set_max_manifest_version(8); | 321   feature.set_max_manifest_version(8); | 
| 269 | 322 | 
| 270   EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, | 323   EXPECT_EQ( | 
| 271             feature.IsAvailableToManifest( | 324       Feature::INVALID_MAX_MANIFEST_VERSION, | 
| 272                 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 325       feature.IsAvailableToManifest(std::string(), | 
| 273                 10, Feature::UNSPECIFIED_PLATFORM).result()); | 326                                     Manifest::TYPE_UNKNOWN, | 
| 274   EXPECT_EQ(Feature::IS_AVAILABLE, | 327                                     Feature::UNSPECIFIED_LOCATION, | 
| 275             feature.IsAvailableToManifest( | 328                                     10, | 
| 276                 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 329                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 277                 8, Feature::UNSPECIFIED_PLATFORM).result()); | 330   EXPECT_EQ( | 
| 278   EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 331       Feature::IS_AVAILABLE, | 
| 279       "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 332       feature.IsAvailableToManifest(std::string(), | 
| 280       7, Feature::UNSPECIFIED_PLATFORM).result()); | 333                                     Manifest::TYPE_UNKNOWN, | 
|  | 334                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 335                                     8, | 
|  | 336                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
|  | 337   EXPECT_EQ( | 
|  | 338       Feature::IS_AVAILABLE, | 
|  | 339       feature.IsAvailableToManifest(std::string(), | 
|  | 340                                     Manifest::TYPE_UNKNOWN, | 
|  | 341                                     Feature::UNSPECIFIED_LOCATION, | 
|  | 342                                     7, | 
|  | 343                                     Feature::UNSPECIFIED_PLATFORM).result()); | 
| 281 } | 344 } | 
| 282 | 345 | 
| 283 TEST_F(ExtensionSimpleFeatureTest, ParseNull) { | 346 TEST_F(ExtensionSimpleFeatureTest, ParseNull) { | 
| 284   scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); | 347   scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); | 
| 285   scoped_ptr<SimpleFeature> feature(new SimpleFeature()); | 348   scoped_ptr<SimpleFeature> feature(new SimpleFeature()); | 
| 286   feature->Parse(value.get()); | 349   feature->Parse(value.get()); | 
| 287   EXPECT_TRUE(feature->whitelist()->empty()); | 350   EXPECT_TRUE(feature->whitelist()->empty()); | 
| 288   EXPECT_TRUE(feature->extension_types()->empty()); | 351   EXPECT_TRUE(feature->extension_types()->empty()); | 
| 289   EXPECT_TRUE(feature->GetContexts()->empty()); | 352   EXPECT_TRUE(feature->GetContexts()->empty()); | 
| 290   EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location()); | 353   EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location()); | 
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 542       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_CANARY)); | 605       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_CANARY)); | 
| 543   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 606   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 544       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_DEV)); | 607       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_DEV)); | 
| 545   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 608   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 546       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_BETA)); | 609       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_BETA)); | 
| 547   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 610   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 548       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_STABLE)); | 611       IsAvailableInChannel("trunk", VersionInfo::CHANNEL_STABLE)); | 
| 549 | 612 | 
| 550   // Default supported channel (trunk). | 613   // Default supported channel (trunk). | 
| 551   EXPECT_EQ(Feature::IS_AVAILABLE, | 614   EXPECT_EQ(Feature::IS_AVAILABLE, | 
| 552       IsAvailableInChannel("", VersionInfo::CHANNEL_UNKNOWN)); | 615             IsAvailableInChannel(std::string(), VersionInfo::CHANNEL_UNKNOWN)); | 
| 553   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 616   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 554       IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); | 617             IsAvailableInChannel(std::string(), VersionInfo::CHANNEL_CANARY)); | 
| 555   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 618   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 556       IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); | 619             IsAvailableInChannel(std::string(), VersionInfo::CHANNEL_DEV)); | 
| 557   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 620   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 558       IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); | 621             IsAvailableInChannel(std::string(), VersionInfo::CHANNEL_BETA)); | 
| 559   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 622   EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 
| 560       IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); | 623             IsAvailableInChannel(std::string(), VersionInfo::CHANNEL_STABLE)); | 
| 561 } | 624 } | 
| 562 | 625 | 
| 563 }  // namespace | 626 }  // namespace | 
| OLD | NEW | 
|---|