1# Copyright 2012 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.
4
5from telemetry.internal.browser import extension_to_load
6
7
8class ExtensionDict(object):
9  """Dictionary of ExtensionPage instances, with extension_id as key."""
10
11  def __init__(self, extension_backend):
12    self._extension_backend = extension_backend
13
14  def __getitem__(self, load_extension):
15    """Given an ExtensionToLoad instance, returns the corresponding
16    ExtensionPage instance."""
17    if not isinstance(load_extension, extension_to_load.ExtensionToLoad):
18      raise TypeError("Input param must be of type ExtensionToLoad")
19    return self.GetByExtensionId(load_extension.extension_id)[0]
20
21  def __contains__(self, load_extension):
22    """Checks if this ExtensionToLoad instance has been loaded"""
23    if not isinstance(load_extension, extension_to_load.ExtensionToLoad):
24      raise TypeError("Input param must be of type ExtensionToLoad")
25    return load_extension.extension_id in self._extension_backend
26
27  def keys(self):
28    return self._extension_backend.keys()
29
30  def GetByExtensionId(self, extension_id):
31    """Returns a list of extensions given an extension id. This is useful for
32    connecting to built-in apps and component extensions."""
33    return self._extension_backend[extension_id]
34