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/omnibox/omnibox_edit_model.h" | 5 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/format_macros.h" | 10 #include "base/format_macros.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 #include "chrome/browser/ui/omnibox/omnibox_navigation_observer.h" | 49 #include "chrome/browser/ui/omnibox/omnibox_navigation_observer.h" |
50 #include "chrome/browser/ui/omnibox/omnibox_popup_model.h" | 50 #include "chrome/browser/ui/omnibox/omnibox_popup_model.h" |
51 #include "chrome/browser/ui/omnibox/omnibox_popup_view.h" | 51 #include "chrome/browser/ui/omnibox/omnibox_popup_view.h" |
52 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 52 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
53 #include "chrome/browser/ui/search/instant_search_prerenderer.h" | 53 #include "chrome/browser/ui/search/instant_search_prerenderer.h" |
54 #include "chrome/browser/ui/search/search_tab_helper.h" | 54 #include "chrome/browser/ui/search/search_tab_helper.h" |
55 #include "chrome/browser/ui/toolbar/toolbar_model.h" | 55 #include "chrome/browser/ui/toolbar/toolbar_model.h" |
56 #include "chrome/common/chrome_switches.h" | 56 #include "chrome/common/chrome_switches.h" |
57 #include "chrome/common/pref_names.h" | 57 #include "chrome/common/pref_names.h" |
58 #include "chrome/common/url_constants.h" | 58 #include "chrome/common/url_constants.h" |
| 59 #include "components/metrics/proto/omnibox_event.pb.h" |
59 #include "components/google/core/browser/google_url_tracker.h" | 60 #include "components/google/core/browser/google_url_tracker.h" |
60 #include "components/url_fixer/url_fixer.h" | 61 #include "components/url_fixer/url_fixer.h" |
61 #include "content/public/browser/navigation_controller.h" | 62 #include "content/public/browser/navigation_controller.h" |
62 #include "content/public/browser/navigation_entry.h" | 63 #include "content/public/browser/navigation_entry.h" |
63 #include "content/public/browser/notification_service.h" | 64 #include "content/public/browser/notification_service.h" |
64 #include "content/public/browser/render_view_host.h" | 65 #include "content/public/browser/render_view_host.h" |
65 #include "content/public/browser/user_metrics.h" | 66 #include "content/public/browser/user_metrics.h" |
66 #include "extensions/common/constants.h" | 67 #include "extensions/common/constants.h" |
67 #include "ui/gfx/image/image.h" | 68 #include "ui/gfx/image/image.h" |
68 #include "url/url_util.h" | 69 #include "url/url_util.h" |
69 | 70 |
| 71 using metrics::OmniboxEventProto; |
70 using predictors::AutocompleteActionPredictor; | 72 using predictors::AutocompleteActionPredictor; |
71 | 73 |
72 | 74 |
73 // Helpers -------------------------------------------------------------------- | 75 // Helpers -------------------------------------------------------------------- |
74 | 76 |
75 namespace { | 77 namespace { |
76 | 78 |
77 // Histogram name which counts the number of times that the user text is | 79 // Histogram name which counts the number of times that the user text is |
78 // cleared. IME users are sometimes in the situation that IME was | 80 // cleared. IME users are sometimes in the situation that IME was |
79 // unintentionally turned on and failed to input latin alphabets (ASCII | 81 // unintentionally turned on and failed to input latin alphabets (ASCII |
(...skipping 1339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1419 bool OmniboxEditModel::IsSpaceCharForAcceptingKeyword(wchar_t c) { | 1421 bool OmniboxEditModel::IsSpaceCharForAcceptingKeyword(wchar_t c) { |
1420 switch (c) { | 1422 switch (c) { |
1421 case 0x0020: // Space | 1423 case 0x0020: // Space |
1422 case 0x3000: // Ideographic Space | 1424 case 0x3000: // Ideographic Space |
1423 return true; | 1425 return true; |
1424 default: | 1426 default: |
1425 return false; | 1427 return false; |
1426 } | 1428 } |
1427 } | 1429 } |
1428 | 1430 |
1429 AutocompleteInput::PageClassification OmniboxEditModel::ClassifyPage() const { | 1431 OmniboxEventProto::PageClassification OmniboxEditModel::ClassifyPage() const { |
1430 if (!delegate_->CurrentPageExists()) | 1432 if (!delegate_->CurrentPageExists()) |
1431 return AutocompleteInput::OTHER; | 1433 return OmniboxEventProto::OTHER; |
1432 if (delegate_->IsInstantNTP()) { | 1434 if (delegate_->IsInstantNTP()) { |
1433 // Note that we treat OMNIBOX as the source if focus_source_ is INVALID, | 1435 // Note that we treat OMNIBOX as the source if focus_source_ is INVALID, |
1434 // i.e., if input isn't actually in progress. | 1436 // i.e., if input isn't actually in progress. |
1435 return (focus_source_ == FAKEBOX) ? | 1437 return (focus_source_ == FAKEBOX) ? |
1436 AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS : | 1438 OmniboxEventProto::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS : |
1437 AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS; | 1439 OmniboxEventProto::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS; |
1438 } | 1440 } |
1439 const GURL& gurl = delegate_->GetURL(); | 1441 const GURL& gurl = delegate_->GetURL(); |
1440 if (!gurl.is_valid()) | 1442 if (!gurl.is_valid()) |
1441 return AutocompleteInput::INVALID_SPEC; | 1443 return OmniboxEventProto::INVALID_SPEC; |
1442 const std::string& url = gurl.spec(); | 1444 const std::string& url = gurl.spec(); |
1443 if (url == chrome::kChromeUINewTabURL) | 1445 if (url == chrome::kChromeUINewTabURL) |
1444 return AutocompleteInput::NTP; | 1446 return OmniboxEventProto::NTP; |
1445 if (url == url::kAboutBlankURL) | 1447 if (url == url::kAboutBlankURL) |
1446 return AutocompleteInput::BLANK; | 1448 return OmniboxEventProto::BLANK; |
1447 if (url == profile()->GetPrefs()->GetString(prefs::kHomePage)) | 1449 if (url == profile()->GetPrefs()->GetString(prefs::kHomePage)) |
1448 return AutocompleteInput::HOME_PAGE; | 1450 return OmniboxEventProto::HOME_PAGE; |
1449 if (controller_->GetToolbarModel()->WouldPerformSearchTermReplacement(true)) | 1451 if (controller_->GetToolbarModel()->WouldPerformSearchTermReplacement(true)) |
1450 return AutocompleteInput::SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT; | 1452 return OmniboxEventProto::SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT; |
1451 if (delegate_->IsSearchResultsPage()) | 1453 if (delegate_->IsSearchResultsPage()) |
1452 return AutocompleteInput::SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT; | 1454 return OmniboxEventProto::SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT; |
1453 return AutocompleteInput::OTHER; | 1455 return OmniboxEventProto::OTHER; |
1454 } | 1456 } |
1455 | 1457 |
1456 void OmniboxEditModel::ClassifyStringForPasteAndGo( | 1458 void OmniboxEditModel::ClassifyStringForPasteAndGo( |
1457 const base::string16& text, | 1459 const base::string16& text, |
1458 AutocompleteMatch* match, | 1460 AutocompleteMatch* match, |
1459 GURL* alternate_nav_url) const { | 1461 GURL* alternate_nav_url) const { |
1460 DCHECK(match); | 1462 DCHECK(match); |
1461 AutocompleteClassifierFactory::GetForProfile(profile_)->Classify( | 1463 AutocompleteClassifierFactory::GetForProfile(profile_)->Classify( |
1462 text, false, false, ClassifyPage(), match, alternate_nav_url); | 1464 text, false, false, ClassifyPage(), match, alternate_nav_url); |
1463 } | 1465 } |
1464 | 1466 |
1465 void OmniboxEditModel::SetFocusState(OmniboxFocusState state, | 1467 void OmniboxEditModel::SetFocusState(OmniboxFocusState state, |
1466 OmniboxFocusChangeReason reason) { | 1468 OmniboxFocusChangeReason reason) { |
1467 if (state == focus_state_) | 1469 if (state == focus_state_) |
1468 return; | 1470 return; |
1469 | 1471 |
1470 // Update state and notify view if the omnibox has focus and the caret | 1472 // Update state and notify view if the omnibox has focus and the caret |
1471 // visibility changed. | 1473 // visibility changed. |
1472 const bool was_caret_visible = is_caret_visible(); | 1474 const bool was_caret_visible = is_caret_visible(); |
1473 focus_state_ = state; | 1475 focus_state_ = state; |
1474 if (focus_state_ != OMNIBOX_FOCUS_NONE && | 1476 if (focus_state_ != OMNIBOX_FOCUS_NONE && |
1475 is_caret_visible() != was_caret_visible) | 1477 is_caret_visible() != was_caret_visible) |
1476 view_->ApplyCaretVisibility(); | 1478 view_->ApplyCaretVisibility(); |
1477 | 1479 |
1478 delegate_->OnFocusChanged(focus_state_, reason); | 1480 delegate_->OnFocusChanged(focus_state_, reason); |
1479 } | 1481 } |
OLD | NEW |