OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/search/instant_controller.h" | 5 #include "chrome/browser/ui/search/instant_controller.h" |
6 | 6 |
7 #include <iterator> | 7 #include <iterator> |
8 | 8 |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1584 GURL(instant_url))) | 1584 GURL(instant_url))) |
1585 return false; | 1585 return false; |
1586 | 1586 |
1587 return page->supports_instant(); | 1587 return page->supports_instant(); |
1588 } | 1588 } |
1589 | 1589 |
1590 void InstantController::ResetNTP(const std::string& instant_url) { | 1590 void InstantController::ResetNTP(const std::string& instant_url) { |
1591 // Instant NTP is only used in extended mode so we should always have a | 1591 // Instant NTP is only used in extended mode so we should always have a |
1592 // non-empty URL to use. | 1592 // non-empty URL to use. |
1593 DCHECK(!instant_url.empty()); | 1593 DCHECK(!instant_url.empty()); |
1594 ntp_.reset(new InstantNTP(this, instant_url)); | 1594 ntp_.reset(new InstantNTP(this, instant_url, |
| 1595 browser_->profile()->IsOffTheRecord())); |
1595 ntp_->InitContents(profile(), browser_->GetActiveWebContents(), | 1596 ntp_->InitContents(profile(), browser_->GetActiveWebContents(), |
1596 base::Bind(&InstantController::ReloadStaleNTP, | 1597 base::Bind(&InstantController::ReloadStaleNTP, |
1597 base::Unretained(this))); | 1598 base::Unretained(this))); |
1598 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( | 1599 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( |
1599 "ResetNTP: instant_url='%s'", instant_url.c_str())); | 1600 "ResetNTP: instant_url='%s'", instant_url.c_str())); |
1600 } | 1601 } |
1601 | 1602 |
1602 void InstantController::ReloadStaleNTP() { | 1603 void InstantController::ReloadStaleNTP() { |
1603 ResetNTP(GetInstantURL()); | 1604 ResetNTP(GetInstantURL()); |
1604 } | 1605 } |
(...skipping 20 matching lines...) Expand all Loading... |
1625 return !(InStartup() && chrome::ShouldPreferRemoteNTPOnStartup()); | 1626 return !(InStartup() && chrome::ShouldPreferRemoteNTPOnStartup()); |
1626 } | 1627 } |
1627 | 1628 |
1628 void InstantController::ResetOverlay(const std::string& instant_url) { | 1629 void InstantController::ResetOverlay(const std::string& instant_url) { |
1629 HideInternal(); | 1630 HideInternal(); |
1630 // If there's no active tab, the browser is opening or closing. | 1631 // If there's no active tab, the browser is opening or closing. |
1631 const content::WebContents* active_tab = browser_->GetActiveWebContents(); | 1632 const content::WebContents* active_tab = browser_->GetActiveWebContents(); |
1632 if (!active_tab || instant_url.empty()) { | 1633 if (!active_tab || instant_url.empty()) { |
1633 overlay_.reset(); | 1634 overlay_.reset(); |
1634 } else { | 1635 } else { |
1635 overlay_.reset(new InstantOverlay(this, instant_url)); | 1636 overlay_.reset(new InstantOverlay(this, instant_url, |
| 1637 browser_->profile()->IsOffTheRecord())); |
1636 overlay_->InitContents(browser_->profile(), active_tab); | 1638 overlay_->InitContents(browser_->profile(), active_tab); |
1637 } | 1639 } |
1638 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( | 1640 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( |
1639 "ResetOverlay: instant_url='%s'", instant_url.c_str())); | 1641 "ResetOverlay: instant_url='%s'", instant_url.c_str())); |
1640 } | 1642 } |
1641 | 1643 |
1642 InstantController::InstantFallbackReason | 1644 InstantController::InstantFallbackReason |
1643 InstantController::ShouldSwitchToLocalOverlay() const { | 1645 InstantController::ShouldSwitchToLocalOverlay() const { |
1644 if (!extended_enabled()) | 1646 if (!extended_enabled()) |
1645 return INSTANT_FALLBACK_NONE; | 1647 return INSTANT_FALLBACK_NONE; |
1646 | 1648 |
1647 if (!overlay()) | 1649 if (!overlay()) |
1648 return DetermineFallbackReason(NULL, std::string()); | 1650 return DetermineFallbackReason(NULL, std::string()); |
1649 | 1651 |
1650 // Assume users with Javascript disabled do not want the online experience. | 1652 // Assume users with Javascript disabled do not want the online experience. |
1651 if (!IsJavascriptEnabled()) | 1653 if (!IsJavascriptEnabled()) |
1652 return INSTANT_FALLBACK_JAVASCRIPT_DISABLED; | 1654 return INSTANT_FALLBACK_JAVASCRIPT_DISABLED; |
1653 | 1655 |
1654 if (overlay()->IsLocal()) | 1656 if (overlay()->IsLocal()) |
1655 return INSTANT_FALLBACK_NONE; | 1657 return INSTANT_FALLBACK_NONE; |
1656 | 1658 |
1657 bool page_is_current = PageIsCurrent(overlay()); | 1659 bool page_is_current = PageIsCurrent(overlay()); |
1658 if (!page_is_current) | 1660 if (!page_is_current) |
1659 return DetermineFallbackReason(overlay(), GetInstantURL()); | 1661 return DetermineFallbackReason(overlay(), GetInstantURL()); |
1660 | 1662 |
1661 return INSTANT_FALLBACK_NONE; | 1663 return INSTANT_FALLBACK_NONE; |
1662 } | 1664 } |
1663 | 1665 |
1664 void InstantController::ResetInstantTab() { | 1666 void InstantController::ResetInstantTab() { |
1665 // Do not wire up the InstantTab in Incognito, to prevent it from sending data | 1667 if (!search_mode_.is_origin_default()) { |
1666 // to the page. | |
1667 if (!search_mode_.is_origin_default() && | |
1668 !browser_->profile()->IsOffTheRecord()) { | |
1669 content::WebContents* active_tab = browser_->GetActiveWebContents(); | 1668 content::WebContents* active_tab = browser_->GetActiveWebContents(); |
1670 if (!instant_tab_ || active_tab != instant_tab_->contents()) { | 1669 if (!instant_tab_ || active_tab != instant_tab_->contents()) { |
1671 instant_tab_.reset(new InstantTab(this)); | 1670 instant_tab_.reset( |
| 1671 new InstantTab(this, browser_->profile()->IsOffTheRecord())); |
1672 instant_tab_->Init(active_tab); | 1672 instant_tab_->Init(active_tab); |
1673 UpdateInfoForInstantTab(); | 1673 UpdateInfoForInstantTab(); |
1674 use_tab_for_suggestions_ = true; | 1674 use_tab_for_suggestions_ = true; |
1675 } | 1675 } |
1676 | 1676 |
1677 // Hide the |overlay_| since we are now using |instant_tab_| instead. | 1677 // Hide the |overlay_| since we are now using |instant_tab_| instead. |
1678 HideOverlay(); | 1678 HideOverlay(); |
1679 } else { | 1679 } else { |
1680 instant_tab_.reset(); | 1680 instant_tab_.reset(); |
1681 } | 1681 } |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1911 bool js_webkit_enabled = profile()->GetPrefs()->GetBoolean( | 1911 bool js_webkit_enabled = profile()->GetPrefs()->GetBoolean( |
1912 prefs::kWebKitJavascriptEnabled); | 1912 prefs::kWebKitJavascriptEnabled); |
1913 return js_content_enabled && js_webkit_enabled; | 1913 return js_content_enabled && js_webkit_enabled; |
1914 } | 1914 } |
1915 | 1915 |
1916 bool InstantController::InStartup() const { | 1916 bool InstantController::InStartup() const { |
1917 // TODO(shishir): This is not completely reliable. Find a better way to detect | 1917 // TODO(shishir): This is not completely reliable. Find a better way to detect |
1918 // startup time. | 1918 // startup time. |
1919 return !browser_->GetActiveWebContents(); | 1919 return !browser_->GetActiveWebContents(); |
1920 } | 1920 } |
OLD | NEW |