| OLD | NEW | 
|    1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2011 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/find_bar/find_bar_controller.h" |    5 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 
|    6  |    6  | 
|    7 #include <algorithm> |    7 #include <algorithm> | 
|    8  |    8  | 
|    9 #include "base/i18n/rtl.h" |    9 #include "base/i18n/rtl.h" | 
|   10 #include "build/build_config.h" |   10 #include "build/build_config.h" | 
|   11 #include "chrome/browser/ui/find_bar/find_bar.h" |   11 #include "chrome/browser/ui/find_bar/find_bar.h" | 
|   12 #include "chrome/browser/ui/find_bar/find_bar_state.h" |   12 #include "chrome/browser/ui/find_bar/find_bar_state.h" | 
|   13 #include "chrome/browser/ui/find_bar/find_tab_helper.h" |   13 #include "chrome/browser/ui/find_bar/find_tab_helper.h" | 
|   14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |   14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 
 |   15 #include "chrome/common/chrome_notification_types.h" | 
|   15 #include "content/browser/tab_contents/navigation_details.h" |   16 #include "content/browser/tab_contents/navigation_details.h" | 
|   16 #include "content/browser/tab_contents/navigation_entry.h" |   17 #include "content/browser/tab_contents/navigation_entry.h" | 
|   17 #include "content/common/notification_details.h" |   18 #include "content/common/notification_details.h" | 
|   18 #include "content/common/notification_source.h" |   19 #include "content/common/notification_source.h" | 
|   19 #include "ui/gfx/rect.h" |   20 #include "ui/gfx/rect.h" | 
|   20  |   21  | 
|   21 // The minimum space between the FindInPage window and the search result. |   22 // The minimum space between the FindInPage window and the search result. | 
|   22 static const int kMinFindWndDistanceFromSelection = 5; |   23 static const int kMinFindWndDistanceFromSelection = 5; | 
|   23  |   24  | 
|   24 FindBarController::FindBarController(FindBar* find_bar) |   25 FindBarController::FindBarController(FindBar* find_bar) | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   77   // Hide any visible find window from the previous tab if NULL |tab_contents| |   78   // Hide any visible find window from the previous tab if NULL |tab_contents| | 
|   78   // is passed in or if the find UI is not active in the new tab. |   79   // is passed in or if the find UI is not active in the new tab. | 
|   79   if (find_bar_->IsFindBarVisible() && |   80   if (find_bar_->IsFindBarVisible() && | 
|   80       (!tab_contents_ || !tab_contents_->find_tab_helper()->find_ui_active())) { |   81       (!tab_contents_ || !tab_contents_->find_tab_helper()->find_ui_active())) { | 
|   81     find_bar_->Hide(false); |   82     find_bar_->Hide(false); | 
|   82   } |   83   } | 
|   83  |   84  | 
|   84   if (!tab_contents_) |   85   if (!tab_contents_) | 
|   85     return; |   86     return; | 
|   86  |   87  | 
|   87   registrar_.Add(this, NotificationType::FIND_RESULT_AVAILABLE, |   88   registrar_.Add(this, chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, | 
|   88                  Source<TabContents>(tab_contents_->tab_contents())); |   89                  Source<TabContents>(tab_contents_->tab_contents())); | 
|   89   registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, |   90   registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 
|   90                  Source<NavigationController>(&tab_contents_->controller())); |   91                  Source<NavigationController>(&tab_contents_->controller())); | 
|   91  |   92  | 
|   92   MaybeSetPrepopulateText(); |   93   MaybeSetPrepopulateText(); | 
|   93  |   94  | 
|   94   if (tab_contents_->find_tab_helper()->find_ui_active()) { |   95   if (tab_contents_->find_tab_helper()->find_ui_active()) { | 
|   95     // A tab with a visible find bar just got selected and we need to show the |   96     // A tab with a visible find bar just got selected and we need to show the | 
|   96     // find bar but without animation since it was already animated into its |   97     // find bar but without animation since it was already animated into its | 
|   97     // visible state. We also want to reset the window location so that |   98     // visible state. We also want to reset the window location so that | 
|   98     // we don't surprise the user by popping up to the left for no apparent |   99     // we don't surprise the user by popping up to the left for no apparent | 
|   99     // reason. |  100     // reason. | 
|  100     find_bar_->Show(false); |  101     find_bar_->Show(false); | 
|  101   } |  102   } | 
|  102  |  103  | 
|  103   UpdateFindBarForCurrentResult(); |  104   UpdateFindBarForCurrentResult(); | 
|  104 } |  105 } | 
|  105  |  106  | 
|  106 //////////////////////////////////////////////////////////////////////////////// |  107 //////////////////////////////////////////////////////////////////////////////// | 
|  107 // FindBarHost, NotificationObserver implementation: |  108 // FindBarHost, NotificationObserver implementation: | 
|  108  |  109  | 
|  109 void FindBarController::Observe(NotificationType type, |  110 void FindBarController::Observe(int type, | 
|  110                                 const NotificationSource& source, |  111                                 const NotificationSource& source, | 
|  111                                 const NotificationDetails& details) { |  112                                 const NotificationDetails& details) { | 
|  112   FindTabHelper* find_tab_helper = tab_contents_->find_tab_helper(); |  113   FindTabHelper* find_tab_helper = tab_contents_->find_tab_helper(); | 
|  113   if (type == NotificationType::FIND_RESULT_AVAILABLE) { |  114   if (type == chrome::NOTIFICATION_FIND_RESULT_AVAILABLE) { | 
|  114     // Don't update for notifications from TabContentses other than the one we |  115     // Don't update for notifications from TabContentses other than the one we | 
|  115     // are actively tracking. |  116     // are actively tracking. | 
|  116     if (Source<TabContents>(source).ptr() == tab_contents_->tab_contents()) { |  117     if (Source<TabContents>(source).ptr() == tab_contents_->tab_contents()) { | 
|  117       UpdateFindBarForCurrentResult(); |  118       UpdateFindBarForCurrentResult(); | 
|  118       if (find_tab_helper->find_result().final_update() && |  119       if (find_tab_helper->find_result().final_update() && | 
|  119           find_tab_helper->find_result().number_of_matches() == 0) { |  120           find_tab_helper->find_result().number_of_matches() == 0) { | 
|  120         const string16& last_search = find_tab_helper->previous_find_text(); |  121         const string16& last_search = find_tab_helper->previous_find_text(); | 
|  121         const string16& current_search = find_tab_helper->find_text(); |  122         const string16& current_search = find_tab_helper->find_text(); | 
|  122         if (last_search.find(current_search) != 0) |  123         if (last_search.find(current_search) != 0) | 
|  123           find_bar_->AudibleAlert(); |  124           find_bar_->AudibleAlert(); | 
|  124       } |  125       } | 
|  125     } |  126     } | 
|  126   } else if (type == NotificationType::NAV_ENTRY_COMMITTED) { |  127   } else if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED) { | 
|  127     NavigationController* source_controller = |  128     NavigationController* source_controller = | 
|  128         Source<NavigationController>(source).ptr(); |  129         Source<NavigationController>(source).ptr(); | 
|  129     if (source_controller == &tab_contents_->controller()) { |  130     if (source_controller == &tab_contents_->controller()) { | 
|  130       content::LoadCommittedDetails* commit_details = |  131       content::LoadCommittedDetails* commit_details = | 
|  131           Details<content::LoadCommittedDetails>(details).ptr(); |  132           Details<content::LoadCommittedDetails>(details).ptr(); | 
|  132       PageTransition::Type transition_type = |  133       PageTransition::Type transition_type = | 
|  133           commit_details->entry->transition_type(); |  134           commit_details->entry->transition_type(); | 
|  134       // We hide the FindInPage window when the user navigates away, except on |  135       // We hide the FindInPage window when the user navigates away, except on | 
|  135       // reload. |  136       // reload. | 
|  136       if (find_bar_->IsFindBarVisible()) { |  137       if (find_bar_->IsFindBarVisible()) { | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  228   // shown it is showing the right state for this tab. We update the find text |  229   // shown it is showing the right state for this tab. We update the find text | 
|  229   // _first_ since the FindBarView checks its emptiness to see if it should |  230   // _first_ since the FindBarView checks its emptiness to see if it should | 
|  230   // clear the result count display when there's nothing in the box. |  231   // clear the result count display when there's nothing in the box. | 
|  231   find_bar_->SetFindText(find_string); |  232   find_bar_->SetFindText(find_string); | 
|  232 #else |  233 #else | 
|  233   // Having a per-tab find_string is not compatible with OS X's find pasteboard, |  234   // Having a per-tab find_string is not compatible with OS X's find pasteboard, | 
|  234   // so we always have the same find text in all find bars. This is done through |  235   // so we always have the same find text in all find bars. This is done through | 
|  235   // the find pasteboard mechanism, so don't set the text here. |  236   // the find pasteboard mechanism, so don't set the text here. | 
|  236 #endif |  237 #endif | 
|  237 } |  238 } | 
| OLD | NEW |