diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-22 23:18:50 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-22 23:18:50 +0000 |
commit | fc4facd5d143da6ccb96619981d12e9b9fc6467c (patch) | |
tree | 93cc7217ccde59452946120e03c6532c9f534620 /chrome/browser/extensions/extension_tab_id_map.h | |
parent | 2862086530e94dab7ab55e842601661aabd8a408 (diff) | |
download | chromium_src-fc4facd5d143da6ccb96619981d12e9b9fc6467c.zip chromium_src-fc4facd5d143da6ccb96619981d12e9b9fc6467c.tar.gz chromium_src-fc4facd5d143da6ccb96619981d12e9b9fc6467c.tar.bz2 |
Add tabId, type, and timeStamp parameters to extension webRequest events.
Also added support for filtering based on resource type, tabId, and windowId.
BUG=60101
TEST=covered by apitests
Review URL: http://codereview.chromium.org/6685010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79066 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_tab_id_map.h')
-rwxr-xr-x | chrome/browser/extensions/extension_tab_id_map.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_tab_id_map.h b/chrome/browser/extensions/extension_tab_id_map.h new file mode 100755 index 0000000..1fce693 --- /dev/null +++ b/chrome/browser/extensions/extension_tab_id_map.h @@ -0,0 +1,56 @@ +// Copyright (c) 2011 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. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_TAB_ID_MAP_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_TAB_ID_MAP_H_ +#pragma once + +#include <map> +#include <utility> + +#include "base/basictypes.h" +#include "base/singleton.h" + +// This class keeps track of a map between renderer IDs and tab/window IDs, for +// use on the IO thread. All methods should be called on the IO thread except +// for Init and Shutdown. +class ExtensionTabIdMap { + public: + static ExtensionTabIdMap* GetInstance(); + + // These are called on the UI thread to start and stop listening to tab + // notifications. + void Init(); + void Shutdown(); + + // Looks up the tab and window ID for a given render view. Returns true + // if we have the IDs in our map. Called on the IO thread. + bool GetTabAndWindowId( + int render_process_host_id, int routing_id, int* tab_id, int* window_id); + + private: + class TabObserver; + friend class TabObserver; + friend struct DefaultSingletonTraits<ExtensionTabIdMap>; + + typedef std::pair<int, int> RenderId; + typedef std::pair<int, int> TabAndWindowId; + typedef std::map<RenderId, TabAndWindowId> TabAndWindowIdMap; + + ExtensionTabIdMap(); + ~ExtensionTabIdMap(); + + // Adds or removes a render view from our map. + void SetTabAndWindowId( + int render_process_host_id, int routing_id, int tab_id, int window_id); + void ClearTabAndWindowId( + int render_process_host_id, int routing_id); + + TabObserver* observer_; + TabAndWindowIdMap map_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionTabIdMap); +}; + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_TAB_ID_MAP_H_ |