OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/tab_contents/tab_contents.h" | 5 #include "chrome/browser/tab_contents/tab_contents.h" |
6 | 6 |
7 #include "app/gfx/text_elider.h" | 7 #include "app/gfx/text_elider.h" |
8 #include "app/l10n_util.h" | 8 #include "app/l10n_util.h" |
9 #include "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 bool TabContents::IsContentBlocked(ContentSettingsType content_type) const { | 596 bool TabContents::IsContentBlocked(ContentSettingsType content_type) const { |
597 if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) | 597 if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) |
598 return blocked_popups_ != NULL; | 598 return blocked_popups_ != NULL; |
599 | 599 |
600 if (content_type == CONTENT_SETTINGS_TYPE_IMAGES || | 600 if (content_type == CONTENT_SETTINGS_TYPE_IMAGES || |
601 content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT || | 601 content_type == CONTENT_SETTINGS_TYPE_JAVASCRIPT || |
602 content_type == CONTENT_SETTINGS_TYPE_PLUGINS || | 602 content_type == CONTENT_SETTINGS_TYPE_PLUGINS || |
603 content_type == CONTENT_SETTINGS_TYPE_COOKIES) | 603 content_type == CONTENT_SETTINGS_TYPE_COOKIES) |
604 return content_blocked_[content_type]; | 604 return content_blocked_[content_type]; |
605 | 605 |
| 606 if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { |
| 607 for (GeolocationContentSettings::const_iterator i = |
| 608 geolocation_content_settings_.begin(); |
| 609 i != geolocation_content_settings_.end(); ++i ) { |
| 610 if (i->second == CONTENT_SETTING_ALLOW) |
| 611 return false; |
| 612 } |
| 613 // Note: this does not necessarily mean that Geolocation is blocked, rather |
| 614 // that there are no frames currently using or allowed to use Geolocation. |
| 615 return true; |
| 616 } |
| 617 |
606 NOTREACHED(); | 618 NOTREACHED(); |
607 return false; | 619 return false; |
608 } | 620 } |
609 | 621 |
610 std::wstring TabContents::GetStatusText() const { | 622 std::wstring TabContents::GetStatusText() const { |
611 if (!is_loading() || load_state_ == net::LOAD_STATE_IDLE) | 623 if (!is_loading() || load_state_ == net::LOAD_STATE_IDLE) |
612 return std::wstring(); | 624 return std::wstring(); |
613 | 625 |
614 switch (load_state_) { | 626 switch (load_state_) { |
615 case net::LOAD_STATE_WAITING_FOR_CACHE: | 627 case net::LOAD_STATE_WAITING_FOR_CACHE: |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1278 | 1290 |
1279 return new_contents; | 1291 return new_contents; |
1280 } | 1292 } |
1281 | 1293 |
1282 // Resets the |content_blocked_| array. | 1294 // Resets the |content_blocked_| array. |
1283 void TabContents::ClearBlockedContentSettings() { | 1295 void TabContents::ClearBlockedContentSettings() { |
1284 for (size_t i = 0; i < arraysize(content_blocked_); ++i) | 1296 for (size_t i = 0; i < arraysize(content_blocked_); ++i) |
1285 content_blocked_[i] = false; | 1297 content_blocked_[i] = false; |
1286 } | 1298 } |
1287 | 1299 |
| 1300 // Resets the |geolocation_settings_| map. |
| 1301 void TabContents::ClearGeolocationContentSettings() { |
| 1302 geolocation_content_settings_.clear(); |
| 1303 } |
| 1304 |
1288 // Notifies the RenderWidgetHost instance about the fact that the page is | 1305 // Notifies the RenderWidgetHost instance about the fact that the page is |
1289 // loading, or done loading and calls the base implementation. | 1306 // loading, or done loading and calls the base implementation. |
1290 void TabContents::SetIsLoading(bool is_loading, | 1307 void TabContents::SetIsLoading(bool is_loading, |
1291 LoadNotificationDetails* details) { | 1308 LoadNotificationDetails* details) { |
1292 if (is_loading == is_loading_) | 1309 if (is_loading == is_loading_) |
1293 return; | 1310 return; |
1294 | 1311 |
1295 if (!is_loading) { | 1312 if (!is_loading) { |
1296 load_state_ = net::LOAD_STATE_IDLE; | 1313 load_state_ = net::LOAD_STATE_IDLE; |
1297 load_state_host_.clear(); | 1314 load_state_host_.clear(); |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 | 1482 |
1466 // Close blocked popups. | 1483 // Close blocked popups. |
1467 if (blocked_popups_) { | 1484 if (blocked_popups_) { |
1468 AutoReset auto_reset(&dont_notify_render_view_, true); | 1485 AutoReset auto_reset(&dont_notify_render_view_, true); |
1469 blocked_popups_->Destroy(); | 1486 blocked_popups_->Destroy(); |
1470 blocked_popups_ = NULL; | 1487 blocked_popups_ = NULL; |
1471 } | 1488 } |
1472 | 1489 |
1473 // Clear "blocked" flags. | 1490 // Clear "blocked" flags. |
1474 ClearBlockedContentSettings(); | 1491 ClearBlockedContentSettings(); |
| 1492 ClearGeolocationContentSettings(); |
1475 if (delegate_) | 1493 if (delegate_) |
1476 delegate_->OnBlockedContentChange(this); | 1494 delegate_->OnBlockedContentChange(this); |
1477 } | 1495 } |
1478 | 1496 |
1479 // Close constrained windows if necessary. | 1497 // Close constrained windows if necessary. |
1480 if (!net::RegistryControlledDomainService::SameDomainOrHost( | 1498 if (!net::RegistryControlledDomainService::SameDomainOrHost( |
1481 details.previous_url, details.entry->url())) | 1499 details.previous_url, details.entry->url())) |
1482 CloseConstrainedWindows(); | 1500 CloseConstrainedWindows(); |
1483 | 1501 |
1484 // Update the starred state. | 1502 // Update the starred state. |
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1999 void TabContents::DocumentLoadedInFrame() { | 2017 void TabContents::DocumentLoadedInFrame() { |
2000 controller_.DocumentLoadedInFrame(); | 2018 controller_.DocumentLoadedInFrame(); |
2001 } | 2019 } |
2002 | 2020 |
2003 void TabContents::OnContentBlocked(ContentSettingsType type) { | 2021 void TabContents::OnContentBlocked(ContentSettingsType type) { |
2004 content_blocked_[type] = true; | 2022 content_blocked_[type] = true; |
2005 if (delegate_) | 2023 if (delegate_) |
2006 delegate_->OnBlockedContentChange(this); | 2024 delegate_->OnBlockedContentChange(this); |
2007 } | 2025 } |
2008 | 2026 |
| 2027 void TabContents::OnGeolocationPermissionSet( |
| 2028 const std::string& host, bool allowed) { |
| 2029 geolocation_content_settings_[host] = |
| 2030 allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; |
| 2031 // TODO(bulach): rename OnBlockedContentChange to OnContentSettingsChange. |
| 2032 if (delegate_) |
| 2033 delegate_->OnBlockedContentChange(this); |
| 2034 } |
| 2035 |
2009 RenderViewHostDelegate::View* TabContents::GetViewDelegate() { | 2036 RenderViewHostDelegate::View* TabContents::GetViewDelegate() { |
2010 return view_.get(); | 2037 return view_.get(); |
2011 } | 2038 } |
2012 | 2039 |
2013 RenderViewHostDelegate::RendererManagement* | 2040 RenderViewHostDelegate::RendererManagement* |
2014 TabContents::GetRendererManagementDelegate() { | 2041 TabContents::GetRendererManagementDelegate() { |
2015 return &render_manager_; | 2042 return &render_manager_; |
2016 } | 2043 } |
2017 | 2044 |
2018 RenderViewHostDelegate::BrowserIntegration* | 2045 RenderViewHostDelegate::BrowserIntegration* |
(...skipping 844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2863 } | 2890 } |
2864 | 2891 |
2865 void TabContents::set_encoding(const std::string& encoding) { | 2892 void TabContents::set_encoding(const std::string& encoding) { |
2866 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); | 2893 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); |
2867 } | 2894 } |
2868 | 2895 |
2869 void TabContents::SetAppIcon(const SkBitmap& app_icon) { | 2896 void TabContents::SetAppIcon(const SkBitmap& app_icon) { |
2870 app_icon_ = app_icon; | 2897 app_icon_ = app_icon; |
2871 NotifyNavigationStateChanged(INVALIDATE_TITLE); | 2898 NotifyNavigationStateChanged(INVALIDATE_TITLE); |
2872 } | 2899 } |
OLD | NEW |