| Index: tools/telemetry/telemetry/core/backends/chrome/extension_backend.py
|
| diff --git a/tools/telemetry/telemetry/core/backends/chrome/extension_backend.py b/tools/telemetry/telemetry/core/backends/chrome/extension_backend.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8e1535ae14c8685171736f9052c96118b8a40085
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/core/backends/chrome/extension_backend.py
|
| @@ -0,0 +1,43 @@
|
| +# Copyright 2013 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.
|
| +
|
| +import collections
|
| +
|
| +from telemetry.core import extension_page
|
| +from telemetry.core.backends.chrome import inspector_backend_list
|
| +
|
| +
|
| +class ExtensionBackendList(inspector_backend_list.InspectorBackendList):
|
| + """A dynamic sequence of extension_page.ExtensionPages."""
|
| +
|
| + def __init__(self, browser_backend):
|
| + super(ExtensionBackendList, self).__init__(
|
| + browser_backend, backend_wrapper=extension_page.ExtensionPage)
|
| +
|
| + def ShouldIncludeContext(self, context):
|
| + return context['url'].startswith('chrome-extension://')
|
| +
|
| +
|
| +class ExtensionBackendDict(collections.Mapping):
|
| + """A dynamic mapping of extension_id to extension_page.ExtensionPages."""
|
| +
|
| + def __init__(self, browser_backend):
|
| + self._extension_backend_list = ExtensionBackendList(browser_backend)
|
| +
|
| + def __getitem__(self, extension_id):
|
| + for i, context_id in enumerate(self._extension_backend_list):
|
| + if self.ContextIdToExtensionId(context_id) == extension_id:
|
| + return self._extension_backend_list[i]
|
| + raise KeyError('Cannot find an extension with id=%s' % extension_id)
|
| +
|
| + def __iter__(self):
|
| + for context_id in self._extension_backend_list:
|
| + yield self.ContextIdToExtensionId(context_id)
|
| +
|
| + def __len__(self):
|
| + return len(self._extension_backend_list)
|
| +
|
| + def ContextIdToExtensionId(self, context_id):
|
| + context = self._extension_backend_list.GetContextInfo(context_id)
|
| + return extension_page.UrlToExtensionId(context['url'])
|
|
|