error_console_unittest.cc revision e5d81f57cb97b3b6b7fccc9c5610d21eb81db09d
1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// found in the LICENSE file. 4558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/browser/extensions/error_console/error_console.h" 6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/logging.h" 8558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/memory/scoped_ptr.h" 9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "base/prefs/pref_service.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/strings/string_number_conversions.h" 11e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chrome/common/extensions/features/feature_channel.h" 12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chrome/common/pref_names.h" 13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/test/base/testing_profile.h" 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "extensions/browser/extension_error.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_error_test_util.h" 16e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "extensions/browser/extension_registry.h" 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "extensions/common/constants.h" 18e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "extensions/common/extension_builder.h" 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/feature_switch.h" 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "extensions/common/id_util.h" 21e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "extensions/common/value_builder.h" 22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace extensions { 25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using error_test_util::CreateNewManifestError; 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using error_test_util::CreateNewRuntimeError; 28558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass ErrorConsoleUnitTest : public testing::Test { 30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public: 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ErrorConsoleUnitTest() : error_console_(NULL) { } 32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ~ErrorConsoleUnitTest() { } 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SetUp() OVERRIDE { 35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) testing::Test::SetUp(); 36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Errors are only kept if we have the FeatureSwitch and have Developer Mode 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // enabled. 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FeatureSwitch::error_console()->SetOverrideValue( 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FeatureSwitch::OVERRIDE_ENABLED); 41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) profile_.reset(new TestingProfile); 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true); 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) error_console_ = ErrorConsole::Get(profile_.get()); 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 46558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch protected: 47558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch scoped_ptr<TestingProfile> profile_; 48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ErrorConsole* error_console_; 49558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}; 50558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 51e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Test that the error console is enabled/disabled appropriately. 52e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochTEST_F(ErrorConsoleUnitTest, EnableAndDisableErrorConsole) { 53e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Start in Dev Channel, without the feature switch. 54e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch scoped_ptr<ScopedCurrentChannel> channel_override( 55e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch new ScopedCurrentChannel(chrome::VersionInfo::CHANNEL_DEV)); 56e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_EQ(chrome::VersionInfo::CHANNEL_DEV, GetCurrentChannel()); 57e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::error_console()->SetOverrideValue( 58e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::OVERRIDE_DISABLED); 59e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 60e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // At the start, the error console should be enabled, and specifically 61e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // enabled for the chrome:extensions page. 62e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->enabled()); 63e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->IsEnabledForChromeExtensionsPage()); 64e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools()); 65e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 66e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // If we disable developer mode, we should disable error console. 67e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, false); 68e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->enabled()); 69e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage()); 70e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools()); 71e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 72e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Similarly, if we change the current to less fun than Dev, ErrorConsole 73e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // should be disabled. 74e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch channel_override.reset(); 75e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch channel_override.reset( 76e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch new ScopedCurrentChannel(chrome::VersionInfo::CHANNEL_BETA)); 77e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true); 78e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->enabled()); 79e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage()); 80e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools()); 81e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 82e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // But if we add the feature switch, that should override the channel. 83e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::error_console()->SetOverrideValue( 84e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::OVERRIDE_ENABLED); 85e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ASSERT_TRUE(FeatureSwitch::error_console()->IsEnabled()); 86e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // We use a pref mod to "poke" the ErrorConsole, because it needs an 87e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // indication that something changed (FeatureSwitches don't change in a real 88e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // environment, so ErrorConsole doesn't listen for them). 89e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, false); 90e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true); 91e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->enabled()); 92e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->IsEnabledForChromeExtensionsPage()); 93e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools()); 94e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 95e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Next, remove the feature switch (turning error console off), and install 96e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // the Apps Developer Tools. If we have Apps Developer Tools, Error Console 97e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // should be enabled by default. 98e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::error_console()->SetOverrideValue( 99e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch FeatureSwitch::OVERRIDE_DISABLED); 100e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const char kAppsDeveloperToolsExtensionId[] = 101e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch "ohmmkhmmmpcnpikjeljgnaoabkaalbgc"; 102e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch scoped_refptr<Extension> adt = 103e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ExtensionBuilder() 104e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .SetManifest( 105e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DictionaryBuilder().Set("name", "apps dev tools") 106e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .Set("version", "0.2.0") 107e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .Set("manifest_version", 2) 108e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .Build()) 109e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .SetID(kAppsDeveloperToolsExtensionId) 110e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch .Build(); 111e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get()); 112e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch registry->AddEnabled(adt); 113e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch registry->TriggerOnLoaded(adt); 114e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->enabled()); 115e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage()); 116e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_TRUE(error_console_->IsEnabledForAppsDeveloperTools()); 117e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 118e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Unloading the Apps Developer Tools should disable error console. 119e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch registry->RemoveEnabled(adt->id()); 120e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch registry->TriggerOnUnloaded(adt); 121e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->enabled()); 122e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage()); 123e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools()); 124e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 125e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Test that errors are successfully reported. This is a simple test, since it 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// is tested more thoroughly in extensions/browser/error_map_unittest.cc 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(ErrorConsoleUnitTest, ReportErrors) { 129558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const size_t kNumTotalErrors = 6; 130424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string kId = id_util::GenerateId("id"); 131ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ASSERT_EQ(0u, error_console_->GetErrorsForExtension(kId).size()); 132ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kNumTotalErrors; ++i) { 134ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_console_->ReportError( 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CreateNewManifestError(kId, base::UintToString(i))); 136ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 137ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(kNumTotalErrors, error_console_->GetErrorsForExtension(kId).size()); 139424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 140424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(ErrorConsoleUnitTest, DontStoreErrorsWithoutEnablingType) { 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Disable default runtime error reporting. 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->set_default_reporting_for_test(ExtensionError::RUNTIME_ERROR, 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) false); 145424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 146424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const std::string kId = id_util::GenerateId("id"); 147424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Try to report a runtime error - it should be ignored. 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewRuntimeError(kId, "a")); 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(0u, error_console_->GetErrorsForExtension(kId).size()); 151424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check that manifest errors are reported successfully. 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewManifestError(kId, "b")); 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(1u, error_console_->GetErrorsForExtension(kId).size()); 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // We should still ignore runtime errors. 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewRuntimeError(kId, "c")); 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(1u, error_console_->GetErrorsForExtension(kId).size()); 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Enable runtime errors specifically for this extension, and disable the use 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // of the default mask. 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->SetReportingForExtension( 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kId, ExtensionError::RUNTIME_ERROR, true); 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // We should now accept runtime and manifest errors. 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewManifestError(kId, "d")); 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(2u, error_console_->GetErrorsForExtension(kId).size()); 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewRuntimeError(kId, "e")); 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(3u, error_console_->GetErrorsForExtension(kId).size()); 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // All other extensions should still use the default mask, and ignore runtime 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // errors but report manifest errors. 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string kId2 = id_util::GenerateId("id2"); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewRuntimeError(kId2, "f")); 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(0u, error_console_->GetErrorsForExtension(kId2).size()); 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewManifestError(kId2, "g")); 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(1u, error_console_->GetErrorsForExtension(kId2).size()); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // By reverting to default reporting, we should again allow manifest errors, 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // but not runtime errors. 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->UseDefaultReportingForExtension(kId); 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewManifestError(kId, "h")); 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(4u, error_console_->GetErrorsForExtension(kId).size()); 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) error_console_->ReportError(CreateNewRuntimeError(kId, "i")); 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(4u, error_console_->GetErrorsForExtension(kId).size()); 186558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 187558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 188558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} // namespace extensions 189