Make sure that a given app/extension requests only its own resources.
commit0942685d61d6a040a82bffd24728b5ac12b94e27
authormiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Tue, 11 Sep 2012 22:39:07 +0000 (11 22:39 +0000)
committermiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Tue, 11 Sep 2012 22:39:07 +0000 (11 22:39 +0000)
tree582becb1a972155217e5d08e4afde171e3e3992f
parent26dae7de0ce12e5ada8bdc2c956e46de9c13d80a
Make sure that a given app/extension requests only its own resources.

All ApiResources of a given type live in a single pool. Until now, one
app could send arbitrary resource IDs in and get another app's resources
if it were lucky. Now we check that an app is getting back only its own
resources.

Note that this CL could have been shorter if I hadn't decided to break
out the owner_extension_id in ApiResource's constructor. I decided to
do this anyway because the other way to get that information (asking
ApiResourceEventNotifier) violated the Law of Demeter, or even if it
was a technical non-violation, I didn't feel good about relying on
the incidental fact that AREN knew the extension ID.

Ben for OWNERS
TBR=ben@chromium.org

BUG=142521
TEST=added

Review URL: https://chromiumcodereview.appspot.com/10919201

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156149 0039d316-1c4b-4281-b951-d872f2087c98
27 files changed:
chrome/browser/extensions/api/api_resource.cc
chrome/browser/extensions/api/api_resource.h
chrome/browser/extensions/api/api_resource_event_notifier.h
chrome/browser/extensions/api/api_resource_manager.h
chrome/browser/extensions/api/api_resource_manager_unittest.cc [new file with mode: 0644]
chrome/browser/extensions/api/serial/serial_api.cc
chrome/browser/extensions/api/serial/serial_api.h
chrome/browser/extensions/api/serial/serial_apitest.cc
chrome/browser/extensions/api/serial/serial_connection.cc
chrome/browser/extensions/api/serial/serial_connection.h
chrome/browser/extensions/api/socket/socket.cc
chrome/browser/extensions/api/socket/socket.h
chrome/browser/extensions/api/socket/socket_api.cc
chrome/browser/extensions/api/socket/socket_api.h
chrome/browser/extensions/api/socket/tcp_socket.cc
chrome/browser/extensions/api/socket/tcp_socket.h
chrome/browser/extensions/api/socket/tcp_socket_unittest.cc
chrome/browser/extensions/api/socket/udp_socket.cc
chrome/browser/extensions/api/socket/udp_socket.h
chrome/browser/extensions/api/socket/udp_socket_unittest.cc
chrome/browser/extensions/api/usb/usb_api.cc
chrome/browser/extensions/api/usb/usb_api.h
chrome/browser/extensions/api/usb/usb_device_resource.cc
chrome/browser/extensions/api/usb/usb_device_resource.h
chrome/browser/extensions/extension_function_test_utils.cc
chrome/browser/extensions/extension_function_test_utils.h
chrome/chrome_tests.gypi