summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_tab_id_map.h
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-22 23:18:50 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-22 23:18:50 +0000
commitfc4facd5d143da6ccb96619981d12e9b9fc6467c (patch)
tree93cc7217ccde59452946120e03c6532c9f534620 /chrome/browser/extensions/extension_tab_id_map.h
parent2862086530e94dab7ab55e842601661aabd8a408 (diff)
downloadchromium_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-xchrome/browser/extensions/extension_tab_id_map.h56
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_