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 "chrome/browser/ui/exclusive_access/fullscreen_controller.h" | 5 #include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "chrome/browser/app_mode/app_mode_utils.h" | 10 #include "chrome/browser/app_mode/app_mode_utils.h" |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 333 // embedder. Thus, even if a requesting origin has been previously approved | 333 // embedder. Thus, even if a requesting origin has been previously approved |
| 334 // for embedder A, it will not be approved when embedded in a different | 334 // for embedder A, it will not be approved when embedded in a different |
| 335 // origin B. | 335 // origin B. |
| 336 // | 336 // |
| 337 // However, an exception is made when a requester and an embedder are the | 337 // However, an exception is made when a requester and an embedder are the |
| 338 // same origin. In other words, if the requester is the top-level frame. If | 338 // same origin. In other words, if the requester is the top-level frame. If |
| 339 // that combination is ALLOWED, then future requests from that origin will | 339 // that combination is ALLOWED, then future requests from that origin will |
| 340 // succeed no matter what the embedder is. For example, if youtube.com | 340 // succeed no matter what the embedder is. For example, if youtube.com |
| 341 // is visited and user selects ALLOW. Later user visits example.com which | 341 // is visited and user selects ALLOW. Later user visits example.com which |
| 342 // embeds youtube.com in an iframe, which is then ALLOWED to go fullscreen. | 342 // embeds youtube.com in an iframe, which is then ALLOWED to go fullscreen. |
| 343 GURL requester = GetRequestingOrigin(); | |
| 344 GURL embedder = GetEmbeddingOrigin(); | |
| 343 ContentSettingsPattern primary_pattern = | 345 ContentSettingsPattern primary_pattern = |
| 344 ContentSettingsPattern::FromURLNoWildcard(GetRequestingOrigin()); | 346 ContentSettingsPattern::FromURLNoWildcard(requester); |
| 345 ContentSettingsPattern secondary_pattern = | 347 ContentSettingsPattern secondary_pattern = |
| 346 ContentSettingsPattern::FromURLNoWildcard(GetEmbeddingOrigin()); | 348 ContentSettingsPattern::FromURLNoWildcard(embedder); |
| 347 | 349 |
| 348 // ContentSettings requires valid patterns and the patterns might be invalid | 350 // ContentSettings requires valid patterns and the patterns might be invalid |
| 349 // in some edge cases like if the current frame is about:blank. | 351 // in some edge cases like if the current frame is about:blank. |
| 350 if (primary_pattern.IsValid() && secondary_pattern.IsValid()) { | 352 if (!requester.SchemeIsFile() && !embedder.SchemeIsFile() && |
|
scheib
2015/02/11 16:48:34
Add comment along lines of:
"Do not store preferen
estark
2015/02/11 21:21:58
Done.
| |
| 353 primary_pattern.IsValid() && secondary_pattern.IsValid()) { | |
| 351 HostContentSettingsMap* settings_map = | 354 HostContentSettingsMap* settings_map = |
| 352 profile()->GetHostContentSettingsMap(); | 355 profile()->GetHostContentSettingsMap(); |
| 353 settings_map->SetContentSetting( | 356 settings_map->SetContentSetting( |
| 354 primary_pattern, secondary_pattern, CONTENT_SETTINGS_TYPE_FULLSCREEN, | 357 primary_pattern, secondary_pattern, CONTENT_SETTINGS_TYPE_FULLSCREEN, |
| 355 std::string(), CONTENT_SETTING_ALLOW); | 358 std::string(), CONTENT_SETTING_ALLOW); |
| 356 } | 359 } |
| 357 tab_fullscreen_accepted_ = true; | 360 tab_fullscreen_accepted_ = true; |
| 358 return true; | 361 return true; |
| 359 } | 362 } |
| 360 | 363 |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 495 extension_caused_fullscreen_ = GURL(); | 498 extension_caused_fullscreen_ = GURL(); |
| 496 | 499 |
| 497 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent(); | 500 exclusive_access_manager()->UpdateExclusiveAccessExitBubbleContent(); |
| 498 } | 501 } |
| 499 | 502 |
| 500 ContentSetting FullscreenController::GetFullscreenSetting() const { | 503 ContentSetting FullscreenController::GetFullscreenSetting() const { |
| 501 DCHECK(exclusive_access_tab()); | 504 DCHECK(exclusive_access_tab()); |
| 502 | 505 |
| 503 GURL url = GetRequestingOrigin(); | 506 GURL url = GetRequestingOrigin(); |
| 504 | 507 |
| 505 if (IsPrivilegedFullscreenForTab() || url.SchemeIsFile()) | 508 // Always ask on file:// URLs, since we can't meaningfully make the |
| 509 // decision stick for a particular origin. | |
| 510 // TODO(estark): Revisit this when crbug.com/455882 is fixed. | |
| 511 if (url.SchemeIsFile()) | |
| 512 return CONTENT_SETTING_ASK; | |
| 513 | |
| 514 if (IsPrivilegedFullscreenForTab()) | |
| 506 return CONTENT_SETTING_ALLOW; | 515 return CONTENT_SETTING_ALLOW; |
| 507 | 516 |
| 508 // If the permission was granted to the website with no embedder, it should | 517 // If the permission was granted to the website with no embedder, it should |
| 509 // always be allowed, even if embedded. | 518 // always be allowed, even if embedded. |
| 510 if (profile()->GetHostContentSettingsMap()->GetContentSetting( | 519 if (profile()->GetHostContentSettingsMap()->GetContentSetting( |
| 511 url, url, CONTENT_SETTINGS_TYPE_FULLSCREEN, std::string()) == | 520 url, url, CONTENT_SETTINGS_TYPE_FULLSCREEN, std::string()) == |
| 512 CONTENT_SETTING_ALLOW) { | 521 CONTENT_SETTING_ALLOW) { |
| 513 return CONTENT_SETTING_ALLOW; | 522 return CONTENT_SETTING_ALLOW; |
| 514 } | 523 } |
| 515 | 524 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 573 return fullscreened_origin_; | 582 return fullscreened_origin_; |
| 574 | 583 |
| 575 return exclusive_access_tab()->GetLastCommittedURL(); | 584 return exclusive_access_tab()->GetLastCommittedURL(); |
| 576 } | 585 } |
| 577 | 586 |
| 578 GURL FullscreenController::GetEmbeddingOrigin() const { | 587 GURL FullscreenController::GetEmbeddingOrigin() const { |
| 579 DCHECK(exclusive_access_tab()); | 588 DCHECK(exclusive_access_tab()); |
| 580 | 589 |
| 581 return exclusive_access_tab()->GetLastCommittedURL(); | 590 return exclusive_access_tab()->GetLastCommittedURL(); |
| 582 } | 591 } |
| OLD | NEW |