1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef EXTENSIONS_BROWSER_ERROR_MAP_H_
6 #define EXTENSIONS_BROWSER_ERROR_MAP_H_
12 #include "base/basictypes.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "extensions/browser/extension_error.h"
16 namespace extensions
{
18 typedef std::deque
<const ExtensionError
*> ErrorList
;
20 // An ErrorMap is responsible for storing Extension-related errors, keyed by
21 // Extension ID. The errors are owned by the ErrorMap, and are deleted upon
28 // Return the list of all errors associated with the given extension.
29 const ErrorList
& GetErrorsForExtension(const std::string
& extension_id
) const;
31 // Add the |error| to the ErrorMap.
32 const ExtensionError
* AddError(scoped_ptr
<ExtensionError
> error
);
34 // Remove an extension from the ErrorMap, deleting all associated errors.
35 void Remove(const std::string
& extension_id
);
36 // Remove all errors of a given type for an extension.
37 void RemoveErrorsForExtensionOfType(const std::string
& extension_id
,
38 ExtensionError::Type type
);
39 // Remove all incognito errors for all extensions.
40 void RemoveIncognitoErrors();
41 // Remove all errors for all extensions, and clear the map.
42 void RemoveAllErrors();
44 size_t size() const { return map_
.size(); }
47 // An Entry is created for each Extension ID, and stores the errors related to
49 class ExtensionEntry
{
51 explicit ExtensionEntry();
54 // Delete all errors associated with this extension.
55 void DeleteAllErrors();
56 // Delete all incognito errors associated with this extension.
57 void DeleteIncognitoErrors();
58 // Delete all errors of the given |type| associated with this extension.
59 void DeleteErrorsOfType(ExtensionError::Type type
);
61 // Add the error to the list, and return a weak reference.
62 const ExtensionError
* AddError(scoped_ptr
<ExtensionError
> error
);
64 const ErrorList
* list() const { return &list_
; }
67 // The list of all errors associated with the extension. The errors are
68 // owned by the Entry (in turn owned by the ErrorMap) and are deleted upon
72 DISALLOW_COPY_AND_ASSIGN(ExtensionEntry
);
74 typedef std::map
<std::string
, ExtensionEntry
*> EntryMap
;
76 // The mapping between Extension IDs and their corresponding Entries.
79 DISALLOW_COPY_AND_ASSIGN(ErrorMap
);
82 } // namespace extensions
84 #endif // EXTENSIONS_BROWSER_ERROR_MAP_H_