Chromium Code Reviews| Index: chrome/browser/extensions/extension_tab_util.cc |
| diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc |
| index 1ebe3af4a2e779be5ce682219100f6967218cd0e..d0682ba49e128322e62082d51f8bd6db41c9b180 100644 |
| --- a/chrome/browser/extensions/extension_tab_util.cc |
| +++ b/chrome/browser/extensions/extension_tab_util.cc |
| @@ -64,14 +64,9 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue( |
| TabStripModel* tab_strip, |
| int tab_index, |
| const Extension* extension) { |
| - // Only add privacy-sensitive data if the requesting extension has the tabs |
| - // permission. |
| - bool has_permission = extension && extension->HasAPIPermissionForTab( |
| - GetTabId(contents), APIPermission::kTab); |
| - |
| - return CreateTabValue(contents, tab_strip, tab_index, |
| - has_permission ? INCLUDE_PRIVACY_SENSITIVE_FIELDS : |
| - OMIT_PRIVACY_SENSITIVE_FIELDS); |
| + DictionaryValue *result = CreateTabValue(contents, tab_strip, tab_index); |
| + ScrubTabValueForExtension(contents, extension, result); |
| + return result; |
| } |
| ListValue* ExtensionTabUtil::CreateTabList( |
| @@ -92,8 +87,7 @@ ListValue* ExtensionTabUtil::CreateTabList( |
| DictionaryValue* ExtensionTabUtil::CreateTabValue( |
| const WebContents* contents, |
| TabStripModel* tab_strip, |
| - int tab_index, |
| - IncludePrivacySensitiveFields include_privacy_sensitive_fields) { |
| + int tab_index) { |
| if (!tab_strip) |
| ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index); |
| @@ -114,14 +108,14 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue( |
| result->SetBoolean(keys::kIncognitoKey, |
| contents->GetBrowserContext()->IsOffTheRecord()); |
| - 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) { |
| - NavigationEntry* entry = contents->GetController().GetActiveEntry(); |
| - if (entry && entry->GetFavicon().valid) |
| - result->SetString(keys::kFaviconUrlKey, entry->GetFavicon().url.spec()); |
| - } |
| + // Privacy-sensitive fields: these should be stripped off by |
| + // ScrubTabValueForExtension if the extension should not see them. |
| + result->SetString(keys::kUrlKey, contents->GetURL().spec()); |
| + result->SetString(keys::kTitleKey, contents->GetTitle()); |
| + if (!is_loading) { |
| + NavigationEntry* entry = contents->GetController().GetActiveEntry(); |
| + if (entry && entry->GetFavicon().valid) |
| + result->SetString(keys::kFaviconUrlKey, entry->GetFavicon().url.spec()); |
| } |
| if (tab_strip) { |
| @@ -133,6 +127,22 @@ DictionaryValue* ExtensionTabUtil::CreateTabValue( |
| return result; |
| } |
| +DictionaryValue* ExtensionTabUtil::ScrubTabValueForExtension( |
| + const WebContents* contents, |
| + const Extension* extension, |
| + DictionaryValue* tab_info) { |
| + bool has_permission = extension && extension->HasAPIPermissionForTab( |
| + GetTabId(contents), APIPermission::kTab); |
| + |
| + if (!has_permission) { |
| + tab_info->Remove(keys::kUrlKey, NULL); |
| + tab_info->Remove(keys::kTitleKey, NULL); |
| + tab_info->Remove(keys::kFaviconUrlKey, NULL); |
| + } |
| + |
| + return tab_info; |
|
not at google - send to devlin
2013/01/09 02:04:29
returning something here is unnecessary
mvrable
2013/01/09 19:25:35
Done.
|
| +} |
| + |
| bool ExtensionTabUtil::GetTabStripModel(const WebContents* web_contents, |
| TabStripModel** tab_strip_model, |
| int* tab_index) { |