summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_tab_util.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-17 05:59:06 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-17 05:59:06 +0000
commit0c9f326176095aacc0de142746bc485d62082407 (patch)
treec12fbd1a2b4a32fa1d64282c62cd8d44b86e5380 /chrome/browser/extensions/extension_tab_util.cc
parent61161fdc716423ae44471cb08893977a8ed995ae (diff)
downloadchromium_src-0c9f326176095aacc0de142746bc485d62082407.zip
chromium_src-0c9f326176095aacc0de142746bc485d62082407.tar.gz
chromium_src-0c9f326176095aacc0de142746bc485d62082407.tar.bz2
Always send the full tab object in ExtensionAction click event.
Along the way, decompose a few swiss army knife functions to simplify and generalize code. BUG=149020 Review URL: https://codereview.chromium.org/10909256 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157082 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_tab_util.cc')
-rw-r--r--chrome/browser/extensions/extension_tab_util.cc53
1 files changed, 14 insertions, 39 deletions
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index 09d20e0..416a07b 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -62,19 +62,17 @@ int ExtensionTabUtil::GetWindowIdOfTab(const WebContents* web_contents) {
DictionaryValue* ExtensionTabUtil::CreateTabValue(
const WebContents* contents,
+ TabStripModel* tab_strip,
+ int tab_index,
const Extension* extension) {
- // Find the tab strip and index of this guy.
- TabStripModel* tab_strip = NULL;
- int tab_index;
- if (ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index)) {
- return ExtensionTabUtil::CreateTabValue(contents,
- tab_strip,
- tab_index,
- extension);
- }
+ // Only add privacy-sensitive data if the requesting extension has the tabs
+ // permission.
+ bool has_permission = extension && extension->HasAPIPermissionForTab(
+ GetTabId(contents), APIPermission::kTab);
- // Couldn't find it. This can happen if the tab is being dragged.
- return ExtensionTabUtil::CreateTabValue(contents, NULL, -1, extension);
+ return CreateTabValue(contents, tab_strip, tab_index,
+ has_permission ? INCLUDE_PRIVACY_SENSITIVE_FIELDS :
+ OMIT_PRIVACY_SENSITIVE_FIELDS);
}
ListValue* ExtensionTabUtil::CreateTabList(
@@ -97,7 +95,10 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue(
const WebContents* contents,
TabStripModel* tab_strip,
int tab_index,
- const Extension* extension) {
+ IncludePrivacySensitiveFields include_privacy_sensitive_fields) {
+ if (!tab_strip)
+ ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index);
+
DictionaryValue* result = new DictionaryValue();
bool is_loading = contents->IsLoading();
result->SetInteger(keys::kIdKey, GetTabId(contents));
@@ -115,24 +116,7 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue(
result->SetBoolean(keys::kIncognitoKey,
contents->GetBrowserContext()->IsOffTheRecord());
- // Only add privacy-sensitive data if the requesting extension has the tabs
- // permission.
- bool has_permission = false;
- if (extension) {
- if (tab_index >= 0) {
- has_permission =
- extension->HasAPIPermissionForTab(
- tab_index, APIPermission::kTab) ||
- extension->HasAPIPermissionForTab(
- tab_index, APIPermission::kWebNavigation);
- } else {
- has_permission =
- extension->HasAPIPermission(APIPermission::kTab) ||
- extension->HasAPIPermission(APIPermission::kWebNavigation);
- }
- }
-
- if (has_permission) {
+ if (include_privacy_sensitive_fields == INCLUDE_PRIVACY_SENSITIVE_FIELDS) {
result->SetString(keys::kUrlKey, contents->GetURL().spec());
result->SetString(keys::kTitleKey, contents->GetTitle());
if (!is_loading) {
@@ -154,15 +138,6 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue(
return result;
}
-DictionaryValue* ExtensionTabUtil::CreateTabValueActive(
- const WebContents* contents,
- bool active,
- const extensions::Extension* extension) {
- DictionaryValue* result = CreateTabValue(contents, extension);
- result->SetBoolean(keys::kSelectedKey, active);
- return result;
-}
-
bool ExtensionTabUtil::GetTabStripModel(const WebContents* web_contents,
TabStripModel** tab_strip_model,
int* tab_index) {