Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 77 | 77 |
| 78 int tab_id() { | 78 int tab_id() { |
| 79 return SessionID::IdForTab(web_contents()); | 79 return SessionID::IdForTab(web_contents()); |
| 80 } | 80 } |
| 81 | 81 |
| 82 ActiveTabPermissionGranter* active_tab_permission_granter() { | 82 ActiveTabPermissionGranter* active_tab_permission_granter() { |
| 83 return extensions::TabHelper::FromWebContents(web_contents())-> | 83 return extensions::TabHelper::FromWebContents(web_contents())-> |
| 84 active_tab_permission_granter(); | 84 active_tab_permission_granter(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 bool IsAllowed(const scoped_refptr<const Extension>& extension, | 87 bool IsScriptAllowed(const scoped_refptr<const Extension>& extension, |
| 88 const GURL& url) { | 88 const GURL& url) { |
| 89 return IsAllowed(extension, url, tab_id()); | 89 return IsScriptAllowed(extension, url, tab_id()); |
| 90 } | 90 } |
| 91 | 91 |
| 92 bool IsAllowed(const scoped_refptr<const Extension>& extension, | 92 bool IsScriptAllowed(const scoped_refptr<const Extension>& extension, |
| 93 const GURL& url, | 93 const GURL& url, |
| 94 int tab_id) { | 94 int tab_id) { |
| 95 return PermissionsData::CanExecuteScriptOnPage( | 95 return PermissionsData::CanExecuteScriptOnPage( |
| 96 extension.get(), url, url, tab_id, NULL, -1, NULL) && | 96 extension.get(), url, url, tab_id, NULL, -1, NULL); |
| 97 PermissionsData::CanCaptureVisiblePage( | |
| 98 extension.get(), url, tab_id, NULL) && | |
| 99 HasTabsPermission(extension, tab_id); | |
| 100 } | 97 } |
| 101 | 98 |
| 102 bool IsBlocked(const scoped_refptr<const Extension>& extension, | 99 bool IsCaptureAllowed(const scoped_refptr<const Extension>& extension) { |
| 103 const GURL& url) { | 100 return HasTabsPermission(extension, tab_id()) && |
| 104 return IsBlocked(extension, url, tab_id()); | 101 PermissionsData::CanCaptureVisiblePage(extension.get(), tab_id(), NULL); |
| 105 } | 102 } |
| 106 | 103 |
| 107 bool IsBlocked(const scoped_refptr<const Extension>& extension, | 104 bool IsBothBlocked(const scoped_refptr<const Extension>& extension, |
| 108 const GURL& url, | 105 const GURL& url) { |
| 109 int tab_id) { | 106 return IsBothBlocked(extension, url, tab_id()); |
|
not at google - send to devlin
2014/01/16 17:48:26
why do you need to separate these checks?
| |
| 107 } | |
| 108 | |
| 109 bool IsBothBlocked(const scoped_refptr<const Extension>& extension, | |
| 110 const GURL& url, | |
| 111 int tab_id) { | |
| 110 // Note: can't check HasTabsPermission because it isn't URL specific. | 112 // Note: can't check HasTabsPermission because it isn't URL specific. |
| 111 return !PermissionsData::CanExecuteScriptOnPage( | 113 return !PermissionsData::CanExecuteScriptOnPage( |
| 112 extension.get(), url, url, tab_id, NULL, -1, NULL) && | 114 extension.get(), url, url, tab_id, NULL, -1, NULL) && |
| 113 !PermissionsData::CanCaptureVisiblePage( | 115 !PermissionsData::CanCaptureVisiblePage( |
| 114 extension.get(), url, tab_id, NULL); | 116 extension.get(), tab_id, NULL); |
| 115 } | 117 } |
| 116 | 118 |
| 117 bool HasTabsPermission(const scoped_refptr<const Extension>& extension) { | 119 bool HasTabsPermission(const scoped_refptr<const Extension>& extension) { |
| 118 return HasTabsPermission(extension, tab_id()); | 120 return HasTabsPermission(extension, tab_id()); |
| 119 } | 121 } |
| 120 | 122 |
| 121 bool HasTabsPermission(const scoped_refptr<const Extension>& extension, | 123 bool HasTabsPermission(const scoped_refptr<const Extension>& extension, |
| 122 int tab_id) { | 124 int tab_id) { |
| 123 return PermissionsData::HasAPIPermissionForTab( | 125 return PermissionsData::HasAPIPermissionForTab( |
| 124 extension.get(), tab_id, APIPermission::kTab); | 126 extension.get(), tab_id, APIPermission::kTab); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 146 | 148 |
| 147 // An extension with both the activeTab and tabCapture permission. | 149 // An extension with both the activeTab and tabCapture permission. |
| 148 scoped_refptr<const Extension> extension_with_tab_capture; | 150 scoped_refptr<const Extension> extension_with_tab_capture; |
| 149 }; | 151 }; |
| 150 | 152 |
| 151 TEST_F(ActiveTabTest, GrantToSinglePage) { | 153 TEST_F(ActiveTabTest, GrantToSinglePage) { |
| 152 GURL google("http://www.google.com"); | 154 GURL google("http://www.google.com"); |
| 153 NavigateAndCommit(google); | 155 NavigateAndCommit(google); |
| 154 | 156 |
| 155 // No access unless it's been granted. | 157 // No access unless it's been granted. |
| 156 EXPECT_TRUE(IsBlocked(extension, google)); | 158 EXPECT_TRUE(IsBothBlocked(extension, google)); |
| 157 EXPECT_TRUE(IsBlocked(another_extension, google)); | 159 EXPECT_TRUE(IsBothBlocked(another_extension, google)); |
| 158 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 160 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 159 | 161 |
| 160 EXPECT_FALSE(HasTabsPermission(extension)); | 162 EXPECT_FALSE(HasTabsPermission(extension)); |
| 161 EXPECT_FALSE(HasTabsPermission(another_extension)); | 163 EXPECT_FALSE(HasTabsPermission(another_extension)); |
| 162 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); | 164 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); |
| 163 | 165 |
| 164 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 166 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 165 active_tab_permission_granter()->GrantIfRequested( | 167 active_tab_permission_granter()->GrantIfRequested( |
| 166 extension_without_active_tab.get()); | 168 extension_without_active_tab.get()); |
| 167 | 169 |
| 170 EXPECT_TRUE(IsCaptureAllowed(extension)); | |
| 171 EXPECT_FALSE(IsCaptureAllowed(another_extension)); | |
| 172 EXPECT_FALSE(IsCaptureAllowed(extension_without_active_tab)); | |
| 173 | |
| 168 // Granted to extension and extension_without_active_tab, but the latter | 174 // Granted to extension and extension_without_active_tab, but the latter |
| 169 // doesn't have the activeTab permission so not granted. | 175 // doesn't have the activeTab permission so not granted. |
| 170 EXPECT_TRUE(IsAllowed(extension, google)); | 176 EXPECT_TRUE(IsScriptAllowed(extension, google)); |
| 171 EXPECT_TRUE(IsBlocked(another_extension, google)); | 177 EXPECT_TRUE(IsBothBlocked(another_extension, google)); |
| 172 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 178 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 173 | 179 |
| 174 // Other subdomains shouldn't be given access. | 180 // Other subdomains shouldn't be given access. |
| 175 GURL mail_google("http://mail.google.com"); | 181 GURL mail_google("http://mail.google.com"); |
| 176 EXPECT_TRUE(IsBlocked(extension, mail_google)); | 182 EXPECT_FALSE(IsScriptAllowed(extension, mail_google)); |
| 177 EXPECT_TRUE(IsBlocked(another_extension, mail_google)); | 183 EXPECT_FALSE(IsScriptAllowed(another_extension, mail_google)); |
| 178 EXPECT_TRUE(IsBlocked(extension_without_active_tab, mail_google)); | 184 EXPECT_FALSE(IsScriptAllowed(extension_without_active_tab, mail_google)); |
| 179 | 185 |
| 180 // Reloading the page should clear the active permissions. | 186 // Reloading the page should clear the active permissions. |
| 181 Reload(); | 187 Reload(); |
| 182 | 188 |
| 183 EXPECT_TRUE(IsBlocked(extension, google)); | 189 EXPECT_TRUE(IsBothBlocked(extension, google)); |
| 184 EXPECT_TRUE(IsBlocked(another_extension, google)); | 190 EXPECT_TRUE(IsBothBlocked(another_extension, google)); |
| 185 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 191 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 186 | 192 |
| 187 EXPECT_FALSE(HasTabsPermission(extension)); | 193 EXPECT_FALSE(HasTabsPermission(extension)); |
| 188 EXPECT_FALSE(HasTabsPermission(another_extension)); | 194 EXPECT_FALSE(HasTabsPermission(another_extension)); |
| 189 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); | 195 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); |
| 190 | 196 |
| 191 // But they should still be able to be granted again. | 197 // But they should still be able to be granted again. |
| 192 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 198 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 193 | 199 |
| 194 EXPECT_TRUE(IsAllowed(extension, google)); | 200 EXPECT_TRUE(IsCaptureAllowed(extension)); |
| 195 EXPECT_TRUE(IsBlocked(another_extension, google)); | 201 |
| 196 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 202 EXPECT_TRUE(IsScriptAllowed(extension, google)); |
| 203 EXPECT_TRUE(IsBothBlocked(another_extension, google)); | |
| 204 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); | |
| 197 | 205 |
| 198 // And grant a few more times redundantly for good measure. | 206 // And grant a few more times redundantly for good measure. |
| 199 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 207 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 200 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 208 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 201 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 209 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 202 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 210 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 203 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 211 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 204 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 212 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 205 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 213 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 206 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 214 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 207 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 215 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 208 | 216 |
| 209 EXPECT_TRUE(IsAllowed(extension, google)); | 217 EXPECT_TRUE(IsCaptureAllowed(extension)); |
| 210 EXPECT_TRUE(IsAllowed(another_extension, google)); | 218 EXPECT_TRUE(IsCaptureAllowed(another_extension)); |
| 211 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 219 |
| 220 EXPECT_TRUE(IsScriptAllowed(extension, google)); | |
| 221 EXPECT_TRUE(IsScriptAllowed(another_extension, google)); | |
| 222 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); | |
| 212 | 223 |
| 213 // Navigating to a new URL should clear the active permissions. | 224 // Navigating to a new URL should clear the active permissions. |
| 214 GURL chromium("http://www.chromium.org"); | 225 GURL chromium("http://www.chromium.org"); |
| 215 NavigateAndCommit(chromium); | 226 NavigateAndCommit(chromium); |
| 216 | 227 |
| 217 EXPECT_TRUE(IsBlocked(extension, google)); | 228 EXPECT_TRUE(IsBothBlocked(extension, google)); |
| 218 EXPECT_TRUE(IsBlocked(another_extension, google)); | 229 EXPECT_TRUE(IsBothBlocked(another_extension, google)); |
| 219 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | 230 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 220 | 231 |
| 221 EXPECT_TRUE(IsBlocked(extension, chromium)); | 232 EXPECT_TRUE(IsBothBlocked(extension, chromium)); |
| 222 EXPECT_TRUE(IsBlocked(another_extension, chromium)); | 233 EXPECT_TRUE(IsBothBlocked(another_extension, chromium)); |
| 223 EXPECT_TRUE(IsBlocked(extension_without_active_tab, chromium)); | 234 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, chromium)); |
| 224 | 235 |
| 225 EXPECT_FALSE(HasTabsPermission(extension)); | 236 EXPECT_FALSE(HasTabsPermission(extension)); |
| 226 EXPECT_FALSE(HasTabsPermission(another_extension)); | 237 EXPECT_FALSE(HasTabsPermission(another_extension)); |
| 227 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); | 238 EXPECT_FALSE(HasTabsPermission(extension_without_active_tab)); |
| 228 | 239 |
| 229 // Should be able to grant to multiple extensions at the same time (if they | 240 // Should be able to grant to multiple extensions at the same time (if they |
| 230 // have the activeTab permission, of course). | 241 // have the activeTab permission, of course). |
| 231 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 242 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 232 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 243 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 233 active_tab_permission_granter()->GrantIfRequested( | 244 active_tab_permission_granter()->GrantIfRequested( |
| 234 extension_without_active_tab.get()); | 245 extension_without_active_tab.get()); |
| 235 | 246 |
| 236 EXPECT_TRUE(IsBlocked(extension, google)); | 247 EXPECT_TRUE(IsCaptureAllowed(extension)); |
| 237 EXPECT_TRUE(IsBlocked(another_extension, google)); | 248 EXPECT_TRUE(IsCaptureAllowed(another_extension)); |
| 238 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | |
| 239 | 249 |
| 240 EXPECT_TRUE(IsAllowed(extension, chromium)); | 250 EXPECT_FALSE(IsScriptAllowed(extension, google)); |
| 241 EXPECT_TRUE(IsAllowed(another_extension, chromium)); | 251 EXPECT_FALSE(IsScriptAllowed(another_extension, google)); |
| 242 EXPECT_TRUE(IsBlocked(extension_without_active_tab, chromium)); | 252 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 253 | |
| 254 EXPECT_TRUE(IsScriptAllowed(extension, chromium)); | |
| 255 EXPECT_TRUE(IsScriptAllowed(another_extension, chromium)); | |
| 256 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, chromium)); | |
| 243 | 257 |
| 244 // Should be able to go back to URLs that were previously cleared. | 258 // Should be able to go back to URLs that were previously cleared. |
| 245 NavigateAndCommit(google); | 259 NavigateAndCommit(google); |
| 246 | 260 |
| 247 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 261 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 248 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); | 262 active_tab_permission_granter()->GrantIfRequested(another_extension.get()); |
| 249 active_tab_permission_granter()->GrantIfRequested( | 263 active_tab_permission_granter()->GrantIfRequested( |
| 250 extension_without_active_tab.get()); | 264 extension_without_active_tab.get()); |
| 251 | 265 |
| 252 EXPECT_TRUE(IsAllowed(extension, google)); | 266 EXPECT_TRUE(IsCaptureAllowed(extension)); |
| 253 EXPECT_TRUE(IsAllowed(another_extension, google)); | 267 EXPECT_TRUE(IsCaptureAllowed(another_extension)); |
| 254 EXPECT_TRUE(IsBlocked(extension_without_active_tab, google)); | |
| 255 | 268 |
| 256 EXPECT_TRUE(IsBlocked(extension, chromium)); | 269 EXPECT_TRUE(IsScriptAllowed(extension, google)); |
| 257 EXPECT_TRUE(IsBlocked(another_extension, chromium)); | 270 EXPECT_TRUE(IsScriptAllowed(another_extension, google)); |
| 258 EXPECT_TRUE(IsBlocked(extension_without_active_tab, chromium)); | 271 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, google)); |
| 272 | |
| 273 EXPECT_FALSE(IsScriptAllowed(extension, chromium)); | |
| 274 EXPECT_FALSE(IsScriptAllowed(another_extension, chromium)); | |
| 275 EXPECT_TRUE(IsBothBlocked(extension_without_active_tab, chromium)); | |
| 259 }; | 276 }; |
| 260 | 277 |
| 261 TEST_F(ActiveTabTest, Uninstalling) { | 278 TEST_F(ActiveTabTest, Uninstalling) { |
| 262 // Some semi-arbitrary setup. | 279 // Some semi-arbitrary setup. |
| 263 GURL google("http://www.google.com"); | 280 GURL google("http://www.google.com"); |
| 264 NavigateAndCommit(google); | 281 NavigateAndCommit(google); |
| 265 | 282 |
| 266 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 283 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 267 | 284 |
| 268 EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents())); | 285 EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents())); |
| 269 EXPECT_TRUE(IsAllowed(extension, google)); | 286 EXPECT_TRUE(IsScriptAllowed(extension, google)); |
| 270 | 287 |
| 271 // Uninstalling the extension should clear its tab permissions. | 288 // Uninstalling the extension should clear its tab permissions. |
| 272 UnloadedExtensionInfo details(extension.get(), | 289 UnloadedExtensionInfo details(extension.get(), |
| 273 UnloadedExtensionInfo::REASON_DISABLE); | 290 UnloadedExtensionInfo::REASON_DISABLE); |
| 274 content::NotificationService::current()->Notify( | 291 content::NotificationService::current()->Notify( |
| 275 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 292 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
| 276 content::Source<Profile>(Profile::FromBrowserContext( | 293 content::Source<Profile>(Profile::FromBrowserContext( |
| 277 web_contents()->GetBrowserContext())), | 294 web_contents()->GetBrowserContext())), |
| 278 content::Details<UnloadedExtensionInfo>(&details)); | 295 content::Details<UnloadedExtensionInfo>(&details)); |
| 279 | 296 |
| 280 // Note: can't EXPECT_FALSE(IsAllowed) here because uninstalled extensions | 297 // Note: can't EXPECT_FALSE(IsScriptAllowed) here because uninstalled |
| 281 // are just that... considered to be uninstalled, and the manager might | 298 // extensions are just that... considered to be uninstalled, and the manager |
| 282 // just ignore them from here on. | 299 // might just ignore them from here on. |
| 283 | 300 |
| 284 // Granting the extension again should give them back. | 301 // Granting the extension again should give them back. |
| 285 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 302 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 286 | 303 |
| 287 EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents())); | 304 EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents())); |
| 288 EXPECT_TRUE(IsAllowed(extension, google)); | 305 EXPECT_TRUE(IsScriptAllowed(extension, google)); |
| 289 } | 306 } |
| 290 | 307 |
| 291 TEST_F(ActiveTabTest, OnlyActiveTab) { | 308 TEST_F(ActiveTabTest, OnlyActiveTab) { |
| 292 GURL google("http://www.google.com"); | 309 GURL google("http://www.google.com"); |
| 293 NavigateAndCommit(google); | 310 NavigateAndCommit(google); |
| 294 | 311 |
| 295 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 312 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 296 | 313 |
| 297 EXPECT_TRUE(IsAllowed(extension, google, tab_id())); | 314 EXPECT_TRUE(IsScriptAllowed(extension, google, tab_id())); |
| 298 EXPECT_TRUE(IsBlocked(extension, google, tab_id() + 1)); | 315 EXPECT_TRUE(IsBothBlocked(extension, google, tab_id() + 1)); |
| 299 EXPECT_FALSE(HasTabsPermission(extension, tab_id() + 1)); | 316 EXPECT_FALSE(HasTabsPermission(extension, tab_id() + 1)); |
| 300 } | 317 } |
| 301 | 318 |
| 302 TEST_F(ActiveTabTest, NavigateInPage) { | 319 TEST_F(ActiveTabTest, NavigateInPage) { |
| 303 GURL google("http://www.google.com"); | 320 GURL google("http://www.google.com"); |
| 304 NavigateAndCommit(google); | 321 NavigateAndCommit(google); |
| 305 | 322 |
| 306 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 323 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 307 | 324 |
| 308 // Perform an in-page navigation. The extension should not lose the temporary | 325 // Perform an in-page navigation. The extension should not lose the temporary |
| 309 // permission. | 326 // permission. |
| 310 GURL google_h1("http://www.google.com#h1"); | 327 GURL google_h1("http://www.google.com#h1"); |
| 311 NavigateAndCommit(google_h1); | 328 NavigateAndCommit(google_h1); |
| 312 | 329 |
| 313 EXPECT_TRUE(IsAllowed(extension, google, tab_id())); | 330 EXPECT_TRUE(IsScriptAllowed(extension, google, tab_id())); |
| 314 EXPECT_TRUE(IsAllowed(extension, google_h1, tab_id())); | 331 EXPECT_TRUE(IsScriptAllowed(extension, google_h1, tab_id())); |
| 315 | 332 |
| 316 GURL chromium("http://www.chromium.org"); | 333 GURL chromium("http://www.chromium.org"); |
| 317 NavigateAndCommit(chromium); | 334 NavigateAndCommit(chromium); |
| 318 | 335 |
| 319 EXPECT_FALSE(IsAllowed(extension, google, tab_id())); | 336 EXPECT_FALSE(IsScriptAllowed(extension, google, tab_id())); |
| 320 EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id())); | 337 EXPECT_FALSE(IsScriptAllowed(extension, google_h1, tab_id())); |
| 321 EXPECT_FALSE(IsAllowed(extension, chromium, tab_id())); | 338 EXPECT_FALSE(IsScriptAllowed(extension, chromium, tab_id())); |
| 322 | 339 |
| 323 active_tab_permission_granter()->GrantIfRequested(extension.get()); | 340 active_tab_permission_granter()->GrantIfRequested(extension.get()); |
| 324 | 341 |
| 325 EXPECT_FALSE(IsAllowed(extension, google, tab_id())); | 342 EXPECT_FALSE(IsScriptAllowed(extension, google, tab_id())); |
| 326 EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id())); | 343 EXPECT_FALSE(IsScriptAllowed(extension, google_h1, tab_id())); |
| 327 EXPECT_TRUE(IsAllowed(extension, chromium, tab_id())); | 344 EXPECT_TRUE(IsScriptAllowed(extension, chromium, tab_id())); |
| 328 | 345 |
| 329 GURL chromium_h1("http://www.chromium.org#h1"); | 346 GURL chromium_h1("http://www.chromium.org#h1"); |
| 330 NavigateAndCommit(chromium_h1); | 347 NavigateAndCommit(chromium_h1); |
| 331 | 348 |
| 332 EXPECT_FALSE(IsAllowed(extension, google, tab_id())); | 349 EXPECT_FALSE(IsScriptAllowed(extension, google, tab_id())); |
| 333 EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id())); | 350 EXPECT_FALSE(IsScriptAllowed(extension, google_h1, tab_id())); |
| 334 EXPECT_TRUE(IsAllowed(extension, chromium, tab_id())); | 351 EXPECT_TRUE(IsScriptAllowed(extension, chromium, tab_id())); |
| 335 EXPECT_TRUE(IsAllowed(extension, chromium_h1, tab_id())); | 352 EXPECT_TRUE(IsScriptAllowed(extension, chromium_h1, tab_id())); |
| 336 | 353 |
| 337 Reload(); | 354 Reload(); |
| 338 | 355 |
| 339 EXPECT_FALSE(IsAllowed(extension, google, tab_id())); | 356 EXPECT_FALSE(IsScriptAllowed(extension, google, tab_id())); |
| 340 EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id())); | 357 EXPECT_FALSE(IsScriptAllowed(extension, google_h1, tab_id())); |
| 341 EXPECT_FALSE(IsAllowed(extension, chromium, tab_id())); | 358 EXPECT_FALSE(IsScriptAllowed(extension, chromium, tab_id())); |
| 342 EXPECT_FALSE(IsAllowed(extension, chromium_h1, tab_id())); | 359 EXPECT_FALSE(IsScriptAllowed(extension, chromium_h1, tab_id())); |
| 343 } | 360 } |
| 344 | 361 |
| 345 TEST_F(ActiveTabTest, ChromeUrlGrants) { | 362 TEST_F(ActiveTabTest, ChromeUrlGrants) { |
| 346 GURL internal("chrome://version"); | 363 GURL internal("chrome://version"); |
| 347 NavigateAndCommit(internal); | 364 NavigateAndCommit(internal); |
| 348 active_tab_permission_granter()->GrantIfRequested( | 365 active_tab_permission_granter()->GrantIfRequested( |
| 349 extension_with_tab_capture.get()); | 366 extension_with_tab_capture.get()); |
| 350 // Do not grant tabs/hosts permissions for tab. | 367 // Do not grant tabs/hosts permissions for tab. |
| 351 EXPECT_TRUE(IsBlocked(extension_with_tab_capture, internal, tab_id())); | 368 EXPECT_TRUE(IsCaptureAllowed(extension_with_tab_capture)); |
| 369 EXPECT_FALSE(IsScriptAllowed(extension_with_tab_capture, internal, tab_id())); | |
| 352 EXPECT_TRUE(PermissionsData::HasAPIPermissionForTab( | 370 EXPECT_TRUE(PermissionsData::HasAPIPermissionForTab( |
| 353 extension_with_tab_capture.get(), | 371 extension_with_tab_capture.get(), |
| 354 tab_id(), | 372 tab_id(), |
| 355 APIPermission::kTabCaptureForTab)); | 373 APIPermission::kTabCaptureForTab)); |
| 356 | 374 |
| 357 EXPECT_TRUE(IsBlocked(extension_with_tab_capture, internal, tab_id() + 1)); | 375 EXPECT_TRUE( |
| 376 IsBothBlocked(extension_with_tab_capture, internal, tab_id() + 1)); | |
| 358 EXPECT_FALSE(PermissionsData::HasAPIPermissionForTab( | 377 EXPECT_FALSE(PermissionsData::HasAPIPermissionForTab( |
| 359 extension_with_tab_capture.get(), | 378 extension_with_tab_capture.get(), |
| 360 tab_id() + 1, | 379 tab_id() + 1, |
| 361 APIPermission::kTabCaptureForTab)); | 380 APIPermission::kTabCaptureForTab)); |
| 362 } | 381 } |
| 363 | 382 |
| 364 } // namespace | 383 } // namespace |
| 365 } // namespace extensions | 384 } // namespace extensions |
| OLD | NEW |