summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_error_controller.h
diff options
context:
space:
mode:
authorrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 01:50:44 +0000
committerrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-10 01:50:44 +0000
commit373daf970e47a31cd49f516fa9a1ce9978140999 (patch)
treefc9f1fa4f719acb17551c07db3c3621b1e57636a /chrome/browser/extensions/extension_error_controller.h
parent6683e1b251eb78a569fefcc15d1a64ca22a4421a (diff)
downloadchromium_src-373daf970e47a31cd49f516fa9a1ce9978140999.zip
chromium_src-373daf970e47a31cd49f516fa9a1ce9978140999.tar.gz
chromium_src-373daf970e47a31cd49f516fa9a1ce9978140999.tar.bz2
Refactor ExtensionErrorUI to remove ExtensionService's work
Create an ExtensionErrorController to be in charge of ExtensionErrorUI so that ExtensionService doens't have to know as much about it. And, of course, add a few tests for otherwise untested behavior. BUG=351891 Review URL: https://codereview.chromium.org/227373007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262893 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_error_controller.h')
-rw-r--r--chrome/browser/extensions/extension_error_controller.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_error_controller.h b/chrome/browser/extensions/extension_error_controller.h
new file mode 100644
index 0000000..a86e8f6
--- /dev/null
+++ b/chrome/browser/extensions/extension_error_controller.h
@@ -0,0 +1,68 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_CONTROLLER_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_CONTROLLER_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/extensions/extension_error_ui.h"
+#include "extensions/common/extension_set.h"
+
+namespace content {
+class BrowserContext;
+}
+
+namespace extensions {
+
+// The controller for the ExtensionErrorUI. This examines extensions for any
+// blacklisted or external extensions in order to notify the user with an error.
+// On acceptance, this will acknowledge the extensions.
+class ExtensionErrorController : public ExtensionErrorUI::Delegate {
+ public:
+ typedef ExtensionErrorUI* (*UICreateMethod)(ExtensionErrorUI::Delegate*);
+
+ ExtensionErrorController(content::BrowserContext* context, bool is_first_run);
+ virtual ~ExtensionErrorController();
+
+ void ShowErrorIfNeeded();
+
+ // Set the factory method for creating a new ExtensionErrorUI.
+ static void SetUICreateMethodForTesting(UICreateMethod method);
+
+ private:
+ // ExtensionErrorUI::Delegate implementation:
+ virtual content::BrowserContext* GetContext() OVERRIDE;
+ virtual const ExtensionSet& GetExternalExtensions() OVERRIDE;
+ virtual const ExtensionSet& GetBlacklistedExtensions() OVERRIDE;
+ virtual void OnAlertDetails() OVERRIDE;
+ virtual void OnAlertAccept() OVERRIDE;
+ virtual void OnAlertClosed() OVERRIDE;
+
+ // Find any extensions that the user should be alerted about (like blacklisted
+ // extensions).
+ void IdentifyAlertableExtensions();
+
+ // TODO(rdevlin.cronin): We never seem to use |external_extensions_| here,
+ // but we do warn about them. Investigate more.
+ ExtensionSet external_extensions_;
+
+ // The extensions that are blacklisted and need user approval.
+ ExtensionSet blacklisted_extensions_;
+
+ // The UI component of this controller.
+ scoped_ptr<ExtensionErrorUI> error_ui_;
+
+ // The BrowserContext with which we are associated.
+ content::BrowserContext* browser_context_;
+
+ // Whether or not this is the first run. If it is, we avoid noisy errors, and
+ // silently acknowledge blacklisted extensions.
+ bool is_first_run_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionErrorController);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_ERROR_CONTROLLER_H_