Commit a91527a6 authored by achuith's avatar achuith Committed by Commit bot

Add __contains__ implementation to avoid a race in __get_item__.

__get_item__ enumerates ExtensionBackendList, and when it discovers
a matching index, it access ExtensionBackendList at that index. However,
ExtensionBackendList.__get_item__ calls Update, which can invalidate index.

BUG=411612
TEST=extension_unittest

Review URL: https://codereview.chromium.org/555823002

Cr-Commit-Position: refs/heads/master@{#293944}
parent 3625753b
......@@ -25,6 +25,11 @@ class ExtensionBackendDict(collections.Mapping):
def __init__(self, browser_backend):
self._extension_backend_list = ExtensionBackendList(browser_backend)
def __contains__(self, extension_id):
return (extension_id in
(self.ContextIdToExtensionId(context_id)
for context_id in self._extension_backend_list))
def __getitem__(self, extension_id):
extensions = []
for i, context_id in enumerate(self._extension_backend_list):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment