| Index: chrome/browser/extensions/error_console/error_console.h
|
| diff --git a/chrome/browser/extensions/error_console/error_console.h b/chrome/browser/extensions/error_console/error_console.h
|
| index 80b2f96dbb75d129dc8b3ff6cc62cf268343573d..c60bda94db502d894f274e7dc310265feee52073 100644
|
| --- a/chrome/browser/extensions/error_console/error_console.h
|
| +++ b/chrome/browser/extensions/error_console/error_console.h
|
| @@ -5,16 +5,17 @@
|
| #ifndef CHROME_BROWSER_EXTENSIONS_ERROR_CONSOLE_ERROR_CONSOLE_H_
|
| #define CHROME_BROWSER_EXTENSIONS_ERROR_CONSOLE_ERROR_CONSOLE_H_
|
|
|
| -#include <vector>
|
| +#include <deque>
|
| +#include <map>
|
|
|
| #include "base/gtest_prod_util.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/scoped_vector.h"
|
| #include "base/observer_list.h"
|
| #include "base/strings/string16.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "content/public/browser/notification_observer.h"
|
| #include "content/public/browser/notification_registrar.h"
|
| +#include "extensions/browser/extension_error.h"
|
|
|
| namespace content {
|
| class NotificationDetails;
|
| @@ -26,17 +27,16 @@ class Profile;
|
|
|
| namespace extensions {
|
| class ErrorConsoleUnitTest;
|
| -class ExtensionError;
|
|
|
| // The ErrorConsole is a central object to which all extension errors are
|
| // reported. This includes errors detected in extensions core, as well as
|
| // runtime Javascript errors.
|
| // This class is owned by ExtensionSystem, making it, in effect, a
|
| // BrowserContext-keyed service.
|
| -class ErrorConsole : content::NotificationObserver {
|
| +class ErrorConsole : public content::NotificationObserver {
|
| public:
|
| - typedef ScopedVector<ExtensionError> ErrorList;
|
| - typedef std::vector<const ExtensionError*> WeakErrorList;
|
| + typedef std::deque<const ExtensionError*> ErrorList;
|
| + typedef std::map<std::string, ErrorList> ErrorMap;
|
|
|
| class Observer {
|
| public:
|
| @@ -55,24 +55,18 @@ class ErrorConsole : content::NotificationObserver {
|
| static ErrorConsole* Get(Profile* profile);
|
|
|
| // Report an extension error, and add it to the list.
|
| - void ReportError(scoped_ptr<ExtensionError> error);
|
| + void ReportError(scoped_ptr<const ExtensionError> error);
|
|
|
| // Get a collection of weak pointers to all errors relating to the extension
|
| // with the given |extension_id|.
|
| - WeakErrorList GetErrorsForExtension(const std::string& extension_id) const;
|
| -
|
| - // Remove an error from the list of observed errors.
|
| - void RemoveError(const ExtensionError* error);
|
| -
|
| - // Remove all errors from the list of observed errors.
|
| - void RemoveAllErrors();
|
| + const ErrorList& GetErrorsForExtension(const std::string& extension_id) const;
|
|
|
| // Add or remove observers of the ErrorConsole to be notified of any errors
|
| // added.
|
| void AddObserver(Observer* observer);
|
| void RemoveObserver(Observer* observer);
|
|
|
| - const ErrorList& errors() { return errors_; }
|
| + const ErrorMap& errors() { return errors_; }
|
|
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(ErrorConsoleUnitTest, AddAndRemoveErrors);
|
| @@ -81,6 +75,12 @@ class ErrorConsole : content::NotificationObserver {
|
| // the incognito profile is destroyed.
|
| void RemoveIncognitoErrors();
|
|
|
| + // Remove all errors relating to a particular |extension_id|.
|
| + void RemoveErrorsForExtension(const std::string& extension_id);
|
| +
|
| + // Remove all errors for all extensions.
|
| + void RemoveAllErrors();
|
| +
|
| // content::NotificationObserver implementation.
|
| virtual void Observe(int type,
|
| const content::NotificationSource& source,
|
| @@ -93,7 +93,7 @@ class ErrorConsole : content::NotificationObserver {
|
| ObserverList<Observer> observers_;
|
|
|
| // The errors which we have received so far.
|
| - ErrorList errors_;
|
| + ErrorMap errors_;
|
|
|
| // The profile with which the ErrorConsole is associated. Only collect errors
|
| // from extensions and RenderViews associated with this Profile (and it's
|
|
|