Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: chrome/browser/extensions/error_console/error_console_unittest.cc

Issue 215623002: Enable Error Console for ADT and <= Dev Channel (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/error_console/error_console_unittest.cc
diff --git a/chrome/browser/extensions/error_console/error_console_unittest.cc b/chrome/browser/extensions/error_console/error_console_unittest.cc
index 981a0ffcb3808f677e66fa1f32a538988ac5f04d..e8afc580a6a3b79e921eada21233850702dbd509 100644
--- a/chrome/browser/extensions/error_console/error_console_unittest.cc
+++ b/chrome/browser/extensions/error_console/error_console_unittest.cc
@@ -8,13 +8,17 @@
#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_service.h"
#include "base/strings/string_number_conversions.h"
+#include "chrome/common/extensions/features/feature_channel.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_profile.h"
#include "extensions/browser/extension_error.h"
#include "extensions/browser/extension_error_test_util.h"
+#include "extensions/browser/extension_registry.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension_builder.h"
#include "extensions/common/feature_switch.h"
#include "extensions/common/id_util.h"
+#include "extensions/common/value_builder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace extensions {
@@ -44,6 +48,81 @@ class ErrorConsoleUnitTest : public testing::Test {
ErrorConsole* error_console_;
};
+// Test that the error console is enabled/disabled appropriately.
+TEST_F(ErrorConsoleUnitTest, EnableAndDisableErrorConsole) {
+ // Start in Dev Channel, without the feature switch.
+ scoped_ptr<ScopedCurrentChannel> channel_override(
+ new ScopedCurrentChannel(chrome::VersionInfo::CHANNEL_DEV));
+ ASSERT_EQ(chrome::VersionInfo::CHANNEL_DEV, GetCurrentChannel());
+ FeatureSwitch::error_console()->SetOverrideValue(
+ FeatureSwitch::OVERRIDE_DISABLED);
+
+ // At the start, the error console should be enabled, and specifically
+ // enabled for the chrome:extensions page.
+ EXPECT_TRUE(error_console_->enabled());
+ EXPECT_TRUE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
+
+ // If we disable developer mode, we should disable error console.
+ profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, false);
+ EXPECT_FALSE(error_console_->enabled());
+ EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
+
+ // Similarly, if we change the current to less fun than Dev, ErrorConsole
+ // should be disabled.
+ channel_override.reset();
+ channel_override.reset(
+ new ScopedCurrentChannel(chrome::VersionInfo::CHANNEL_BETA));
+ profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true);
+ EXPECT_FALSE(error_console_->enabled());
+ EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
+
+ // But if we add the feature switch, that should override the channel.
+ FeatureSwitch::error_console()->SetOverrideValue(
+ FeatureSwitch::OVERRIDE_ENABLED);
+ ASSERT_TRUE(FeatureSwitch::error_console()->IsEnabled());
+ // We use a pref mod to "poke" the ErrorConsole, because it needs an
+ // indication that something changed (FeatureSwitches don't change in a real
+ // environment, so ErrorConsole doesn't listen for them).
+ profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, false);
+ profile_->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true);
+ EXPECT_TRUE(error_console_->enabled());
+ EXPECT_TRUE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
+
+ // Next, remove the feature switch (turning error console off), and install
+ // the Apps Developer Tools. If we have Apps Developer Tools, Error Console
+ // should be enabled by default.
+ FeatureSwitch::error_console()->SetOverrideValue(
+ FeatureSwitch::OVERRIDE_DISABLED);
+ const char kAppsDeveloperToolsExtensionId[] =
+ "ohmmkhmmmpcnpikjeljgnaoabkaalbgc";
+ scoped_refptr<Extension> adt =
+ ExtensionBuilder()
+ .SetManifest(
+ DictionaryBuilder().Set("name", "apps dev tools")
+ .Set("version", "0.2.0")
+ .Set("manifest_version", 2)
+ .Build())
+ .SetID(kAppsDeveloperToolsExtensionId)
+ .Build();
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get());
+ registry->AddEnabled(adt);
+ registry->TriggerOnLoaded(adt);
+ EXPECT_TRUE(error_console_->enabled());
+ EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_TRUE(error_console_->IsEnabledForAppsDeveloperTools());
+
+ // Unloading the Apps Developer Tools should disable error console.
+ registry->RemoveEnabled(adt->id());
+ registry->TriggerOnUnloaded(adt);
+ EXPECT_FALSE(error_console_->enabled());
+ EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage());
+ EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
+}
+
// Test that errors are successfully reported. This is a simple test, since it
// is tested more thoroughly in extensions/browser/error_map_unittest.cc
TEST_F(ErrorConsoleUnitTest, ReportErrors) {

Powered by Google App Engine
This is Rietveld 408576698