| 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/search_tab_helper.h" | 5 #include "chrome/browser/ui/search/search_tab_helper.h" |
| 6 | 6 |
| 7 #include "chrome/browser/profiles/profile.h" | 7 #include "chrome/browser/profiles/profile.h" |
| 8 #include "chrome/browser/search/search.h" | 8 #include "chrome/browser/search/search.h" |
| 9 #include "chrome/common/render_messages.h" | 9 #include "chrome/common/render_messages.h" |
| 10 #include "chrome/common/url_constants.h" | 10 #include "chrome/common/url_constants.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 UpdateMode(); | 84 UpdateMode(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void SearchTabHelper::NavigationEntryUpdated() { | 87 void SearchTabHelper::NavigationEntryUpdated() { |
| 88 if (!is_search_enabled_) | 88 if (!is_search_enabled_) |
| 89 return; | 89 return; |
| 90 | 90 |
| 91 UpdateMode(); | 91 UpdateMode(); |
| 92 } | 92 } |
| 93 | 93 |
| 94 bool SearchTabHelper::UpdateLastKnownMostVisitedItems( | |
| 95 const std::vector<InstantMostVisitedItem>& items) { | |
| 96 if (chrome::AreMostVisitedItemsEqual(items, last_known_most_visited_items_)) | |
| 97 return false; | |
| 98 | |
| 99 last_known_most_visited_items_ = items; | |
| 100 return true; | |
| 101 } | |
| 102 | |
| 103 void SearchTabHelper::InstantSupportChanged(bool instant_support) { | 94 void SearchTabHelper::InstantSupportChanged(bool instant_support) { |
| 104 if (!is_search_enabled_) | 95 if (!is_search_enabled_) |
| 105 return; | 96 return; |
| 106 | 97 |
| 107 model_.SetInstantSupportState(instant_support ? INSTANT_SUPPORT_YES : | 98 model_.SetInstantSupportState(instant_support ? INSTANT_SUPPORT_YES : |
| 108 INSTANT_SUPPORT_NO); | 99 INSTANT_SUPPORT_NO); |
| 109 } | 100 } |
| 110 | 101 |
| 111 bool SearchTabHelper::SupportsInstant() const { | 102 bool SearchTabHelper::SupportsInstant() const { |
| 112 return model_.instant_support() == INSTANT_SUPPORT_YES; | 103 return model_.instant_support() == INSTANT_SUPPORT_YES; |
| 113 } | 104 } |
| 114 | 105 |
| 115 void SearchTabHelper::Observe( | 106 void SearchTabHelper::Observe( |
| 116 int type, | 107 int type, |
| 117 const content::NotificationSource& source, | 108 const content::NotificationSource& source, |
| 118 const content::NotificationDetails& details) { | 109 const content::NotificationDetails& details) { |
| 119 DCHECK_EQ(content::NOTIFICATION_NAV_ENTRY_COMMITTED, type); | 110 DCHECK_EQ(content::NOTIFICATION_NAV_ENTRY_COMMITTED, type); |
| 120 content::LoadCommittedDetails* load_details = | 111 content::LoadCommittedDetails* load_details = |
| 121 content::Details<content::LoadCommittedDetails>(details).ptr(); | 112 content::Details<content::LoadCommittedDetails>(details).ptr(); |
| 122 if (!load_details->is_main_frame) | 113 if (!load_details->is_main_frame) |
| 123 return; | 114 return; |
| 124 | 115 |
| 125 UpdateMode(); | 116 UpdateMode(); |
| 126 last_known_most_visited_items_.clear(); | |
| 127 | 117 |
| 128 // Already determined the instant support state for this page, do not reset | 118 // Already determined the instant support state for this page, do not reset |
| 129 // the instant support state. | 119 // the instant support state. |
| 130 // | 120 // |
| 131 // When we get a navigation entry committed event, there seem to be two ways | 121 // When we get a navigation entry committed event, there seem to be two ways |
| 132 // to tell whether the navigation was "in-page". Ideally, when | 122 // to tell whether the navigation was "in-page". Ideally, when |
| 133 // LoadCommittedDetails::is_in_page is true, we should have | 123 // LoadCommittedDetails::is_in_page is true, we should have |
| 134 // LoadCommittedDetails::type to be NAVIGATION_TYPE_IN_PAGE. Unfortunately, | 124 // LoadCommittedDetails::type to be NAVIGATION_TYPE_IN_PAGE. Unfortunately, |
| 135 // they are different in some cases. To workaround this bug, we are checking | 125 // they are different in some cases. To workaround this bug, we are checking |
| 136 // (is_in_page || type == NAVIGATION_TYPE_IN_PAGE). Please refer to | 126 // (is_in_page || type == NAVIGATION_TYPE_IN_PAGE). Please refer to |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 if (web_contents()->IsActiveEntry(page_id)) | 215 if (web_contents()->IsActiveEntry(page_id)) |
| 226 model_.SetTopBarsVisible(true); | 216 model_.SetTopBarsVisible(true); |
| 227 } | 217 } |
| 228 | 218 |
| 229 void SearchTabHelper::OnSearchBoxHideBars(int page_id) { | 219 void SearchTabHelper::OnSearchBoxHideBars(int page_id) { |
| 230 if (web_contents()->IsActiveEntry(page_id)) { | 220 if (web_contents()->IsActiveEntry(page_id)) { |
| 231 model_.SetTopBarsVisible(false); | 221 model_.SetTopBarsVisible(false); |
| 232 Send(new ChromeViewMsg_SearchBoxBarsHidden(routing_id())); | 222 Send(new ChromeViewMsg_SearchBoxBarsHidden(routing_id())); |
| 233 } | 223 } |
| 234 } | 224 } |
| OLD | NEW |