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/instant/instant_controller.h" | 5 #include "chrome/browser/instant/instant_controller.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "chrome/browser/autocomplete/autocomplete_match.h" | 11 #include "chrome/browser/autocomplete/autocomplete_match.h" |
12 #include "chrome/browser/instant/instant_delegate.h" | 12 #include "chrome/browser/instant/instant_delegate.h" |
| 13 #include "chrome/browser/instant/instant_field_trial.h" |
13 #include "chrome/browser/instant/instant_loader.h" | 14 #include "chrome/browser/instant/instant_loader.h" |
14 #include "chrome/browser/instant/instant_loader_manager.h" | 15 #include "chrome/browser/instant/instant_loader_manager.h" |
15 #include "chrome/browser/instant/promo_counter.h" | 16 #include "chrome/browser/instant/promo_counter.h" |
16 #include "chrome/browser/platform_util.h" | 17 #include "chrome/browser/platform_util.h" |
17 #include "chrome/browser/prefs/pref_service.h" | 18 #include "chrome/browser/prefs/pref_service.h" |
18 #include "chrome/browser/prerender/prerender_manager.h" | 19 #include "chrome/browser/prerender/prerender_manager.h" |
19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/browser/search_engines/template_url.h" | 21 #include "chrome/browser/search_engines/template_url.h" |
21 #include "chrome/browser/search_engines/template_url_service.h" | 22 #include "chrome/browser/search_engines/template_url_service.h" |
22 #include "chrome/browser/search_engines/template_url_service_factory.h" | 23 #include "chrome/browser/search_engines/template_url_service_factory.h" |
(...skipping 19 matching lines...) Expand all Loading... |
42 InstantController::InstantController(Profile* profile, | 43 InstantController::InstantController(Profile* profile, |
43 InstantDelegate* delegate) | 44 InstantDelegate* delegate) |
44 : delegate_(delegate), | 45 : delegate_(delegate), |
45 tab_contents_(NULL), | 46 tab_contents_(NULL), |
46 is_active_(false), | 47 is_active_(false), |
47 displayable_loader_(NULL), | 48 displayable_loader_(NULL), |
48 commit_on_mouse_up_(false), | 49 commit_on_mouse_up_(false), |
49 last_transition_type_(PageTransition::LINK), | 50 last_transition_type_(PageTransition::LINK), |
50 ALLOW_THIS_IN_INITIALIZER_LIST(destroy_factory_(this)) { | 51 ALLOW_THIS_IN_INITIALIZER_LIST(destroy_factory_(this)) { |
51 PrefService* service = profile->GetPrefs(); | 52 PrefService* service = profile->GetPrefs(); |
52 if (service) { | 53 if (service && !instant_field_trial::IsExperiment(profile)) { |
53 // kInstantWasEnabledOnce was added after instant, set it now to make sure | 54 // kInstantEnabledOnce was added after instant, set it now to make sure it |
54 // it is correctly set. | 55 // is correctly set. |
55 service->SetBoolean(prefs::kInstantEnabledOnce, true); | 56 service->SetBoolean(prefs::kInstantEnabledOnce, true); |
56 } | 57 } |
57 } | 58 } |
58 | 59 |
59 InstantController::~InstantController() { | 60 InstantController::~InstantController() { |
60 } | 61 } |
61 | 62 |
62 // static | 63 // static |
63 void InstantController::RegisterUserPrefs(PrefService* prefs) { | 64 void InstantController::RegisterUserPrefs(PrefService* prefs) { |
64 prefs->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, | 65 prefs->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, |
(...skipping 28 matching lines...) Expand all Loading... |
93 // Histogram from 1 hour to 30 days. | 94 // Histogram from 1 hour to 30 days. |
94 UMA_HISTOGRAM_CUSTOM_COUNTS("Instant.EnabledTime.Predictive", | 95 UMA_HISTOGRAM_CUSTOM_COUNTS("Instant.EnabledTime.Predictive", |
95 delta.InHours(), 1, 30 * 24, 50); | 96 delta.InHours(), 1, 30 * 24, 50); |
96 } | 97 } |
97 } | 98 } |
98 } | 99 } |
99 | 100 |
100 // static | 101 // static |
101 bool InstantController::IsEnabled(Profile* profile) { | 102 bool InstantController::IsEnabled(Profile* profile) { |
102 PrefService* prefs = profile->GetPrefs(); | 103 PrefService* prefs = profile->GetPrefs(); |
103 return prefs->GetBoolean(prefs::kInstantEnabled); | 104 return prefs->GetBoolean(prefs::kInstantEnabled) || |
| 105 instant_field_trial::IsExperiment(profile); |
104 } | 106 } |
105 | 107 |
106 // static | 108 // static |
107 void InstantController::Enable(Profile* profile) { | 109 void InstantController::Enable(Profile* profile) { |
108 PromoCounter* promo_counter = profile->GetInstantPromoCounter(); | 110 PromoCounter* promo_counter = profile->GetInstantPromoCounter(); |
109 if (promo_counter) | 111 if (promo_counter) |
110 promo_counter->Hide(); | 112 promo_counter->Hide(); |
111 | 113 |
112 PrefService* service = profile->GetPrefs(); | 114 PrefService* service = profile->GetPrefs(); |
113 if (!service) | 115 if (!service) |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 | 699 |
698 // Extension keywords don't have a real destination URL. | 700 // Extension keywords don't have a real destination URL. |
699 if (match.template_url && match.template_url->IsExtensionKeyword()) | 701 if (match.template_url && match.template_url->IsExtensionKeyword()) |
700 return PREVIEW_CONDITION_EXTENSION_KEYWORD; | 702 return PREVIEW_CONDITION_EXTENSION_KEYWORD; |
701 | 703 |
702 // Was the host blacklisted? | 704 // Was the host blacklisted? |
703 if (host_blacklist_ && host_blacklist_->count(match.destination_url.host())) | 705 if (host_blacklist_ && host_blacklist_->count(match.destination_url.host())) |
704 return PREVIEW_CONDITION_BLACKLISTED; | 706 return PREVIEW_CONDITION_BLACKLISTED; |
705 | 707 |
706 const CommandLine* cl = CommandLine::ForCurrentProcess(); | 708 const CommandLine* cl = CommandLine::ForCurrentProcess(); |
707 if (cl->HasSwitch(switches::kRestrictInstantToSearch) && | 709 if ((cl->HasSwitch(switches::kRestrictInstantToSearch) || |
| 710 instant_field_trial::IsExperiment(tab_contents_->profile())) && |
708 match.type != AutocompleteMatch::SEARCH_WHAT_YOU_TYPED && | 711 match.type != AutocompleteMatch::SEARCH_WHAT_YOU_TYPED && |
709 match.type != AutocompleteMatch::SEARCH_HISTORY && | 712 match.type != AutocompleteMatch::SEARCH_HISTORY && |
710 match.type != AutocompleteMatch::SEARCH_SUGGEST && | 713 match.type != AutocompleteMatch::SEARCH_SUGGEST && |
711 match.type != AutocompleteMatch::SEARCH_OTHER_ENGINE) { | 714 match.type != AutocompleteMatch::SEARCH_OTHER_ENGINE) { |
712 return PREVIEW_CONDITION_INSTANT_SEARCH_ONLY; | 715 return PREVIEW_CONDITION_INSTANT_SEARCH_ONLY; |
713 } | 716 } |
714 | 717 |
715 return PREVIEW_CONDITION_SUCCESS; | 718 return PREVIEW_CONDITION_SUCCESS; |
716 } | 719 } |
717 | 720 |
(...skipping 14 matching lines...) Expand all Loading... |
732 if (destroy_factory_.empty()) { | 735 if (destroy_factory_.empty()) { |
733 MessageLoop::current()->PostTask( | 736 MessageLoop::current()->PostTask( |
734 FROM_HERE, destroy_factory_.NewRunnableMethod( | 737 FROM_HERE, destroy_factory_.NewRunnableMethod( |
735 &InstantController::DestroyLoaders)); | 738 &InstantController::DestroyLoaders)); |
736 } | 739 } |
737 } | 740 } |
738 | 741 |
739 void InstantController::DestroyLoaders() { | 742 void InstantController::DestroyLoaders() { |
740 loaders_to_destroy_.reset(); | 743 loaders_to_destroy_.reset(); |
741 } | 744 } |
OLD | NEW |