| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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.h" | 5 #include "chrome/browser/ui/search/search.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
| 8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" | 
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" | 
| 10 #include "base/string_split.h" | 10 #include "base/string_split.h" | 
| 11 #include "base/string_util.h" | 11 #include "base/string_util.h" | 
| 12 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" | 
|  | 13 #include "chrome/browser/search_engines/template_url_service.h" | 
|  | 14 #include "chrome/browser/search_engines/template_url_service_factory.h" | 
| 13 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" | 
| 14 #include "chrome/common/chrome_version_info.h" | 16 #include "chrome/common/chrome_version_info.h" | 
| 15 | 17 | 
| 16 #if !defined(OS_ANDROID) | 18 #if !defined(OS_ANDROID) | 
| 17 #include "chrome/browser/themes/theme_service.h" | 19 #include "chrome/browser/themes/theme_service.h" | 
| 18 #include "chrome/browser/themes/theme_service_factory.h" | 20 #include "chrome/browser/themes/theme_service_factory.h" | 
| 19 #endif | 21 #endif | 
| 20 | 22 | 
| 21 namespace chrome { | 23 namespace chrome { | 
| 22 namespace search { | 24 namespace search { | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 107 // Determine what embedded search page version to request from the user's | 109 // Determine what embedded search page version to request from the user's | 
| 108 // default search provider.  If 0, the embedded search UI should not be enabled. | 110 // default search provider.  If 0, the embedded search UI should not be enabled. | 
| 109 // Note that the profile object here isn't const because we need to determine | 111 // Note that the profile object here isn't const because we need to determine | 
| 110 // whether or not the user has a theme installed as part of this check, and | 112 // whether or not the user has a theme installed as part of this check, and | 
| 111 // that logic requires a non-const profile for whatever reason. | 113 // that logic requires a non-const profile for whatever reason. | 
| 112 uint64 EmbeddedSearchPageVersion(Profile* profile) { | 114 uint64 EmbeddedSearchPageVersion(Profile* profile) { | 
| 113   // Incognito windows do not currently use the embedded search API. | 115   // Incognito windows do not currently use the embedded search API. | 
| 114   if (!profile || profile->IsOffTheRecord()) | 116   if (!profile || profile->IsOffTheRecord()) | 
| 115     return 0; | 117     return 0; | 
| 116 | 118 | 
|  | 119   // Some users may have their search provider TemplateURL pinned to an | 
|  | 120   // obsolete value which does not support enabling InstantExtended on the | 
|  | 121   // server side. Bail out of InstantExtended if we detect that. | 
|  | 122   const TemplateURL* template_url = | 
|  | 123       TemplateURLServiceFactory::GetForProfile(profile)-> | 
|  | 124       GetDefaultSearchProvider(); | 
|  | 125   if (!template_url || !template_url->SupportsInstantExtendedParam()) | 
|  | 126     return 0; | 
|  | 127 | 
| 117   // Check Finch field trials. | 128   // Check Finch field trials. | 
| 118   FieldTrialFlags flags; | 129   FieldTrialFlags flags; | 
| 119   uint64 group_number = 0; | 130   uint64 group_number = 0; | 
| 120   base::FieldTrial* trial = | 131   base::FieldTrial* trial = | 
| 121       base::FieldTrialList::Find(kInstantExtendedFieldTrialName); | 132       base::FieldTrialList::Find(kInstantExtendedFieldTrialName); | 
| 122   if (trial) { | 133   if (trial) { | 
| 123     std::string group_name = trial->group_name(); | 134     std::string group_name = trial->group_name(); | 
| 124     GetFieldTrialInfo(group_name, &flags, &group_number); | 135     GetFieldTrialInfo(group_name, &flags, &group_number); | 
| 125   } | 136   } | 
| 126 | 137 | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 144     if (!has_theme || enable_for_themes) | 155     if (!has_theme || enable_for_themes) | 
| 145       return espv; | 156       return espv; | 
| 146   } | 157   } | 
| 147 | 158 | 
| 148   if (CommandLine::ForCurrentProcess()->HasSwitch( | 159   if (CommandLine::ForCurrentProcess()->HasSwitch( | 
| 149           switches::kEnableInstantExtendedAPI)) { | 160           switches::kEnableInstantExtendedAPI)) { | 
| 150     // The user has manually flipped the about:flags switch - give the default | 161     // The user has manually flipped the about:flags switch - give the default | 
| 151     // UI version. | 162     // UI version. | 
| 152     return kEmbeddedPageVersionDefault; | 163     return kEmbeddedPageVersionDefault; | 
| 153   } | 164   } | 
|  | 165 | 
| 154   return 0; | 166   return 0; | 
| 155 } | 167 } | 
| 156 | 168 | 
| 157 void EnableInstantExtendedAPIForTesting() { | 169 void EnableInstantExtendedAPIForTesting() { | 
| 158   CommandLine::ForCurrentProcess()->AppendSwitch( | 170   CommandLine::ForCurrentProcess()->AppendSwitch( | 
| 159       switches::kEnableInstantExtendedAPI); | 171       switches::kEnableInstantExtendedAPI); | 
| 160 } | 172 } | 
| 161 | 173 | 
| 162 bool IsQueryExtractionEnabled(Profile* profile) { | 174 bool IsQueryExtractionEnabled(Profile* profile) { | 
| 163 #if defined(OS_IOS) | 175 #if defined(OS_IOS) | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 184 #else | 196 #else | 
| 185   // On desktop, query extraction is controlled by the instant-extended-api | 197   // On desktop, query extraction is controlled by the instant-extended-api | 
| 186   // flag. | 198   // flag. | 
| 187   CommandLine::ForCurrentProcess()->AppendSwitch( | 199   CommandLine::ForCurrentProcess()->AppendSwitch( | 
| 188       switches::kEnableInstantExtendedAPI); | 200       switches::kEnableInstantExtendedAPI); | 
| 189 #endif | 201 #endif | 
| 190 } | 202 } | 
| 191 | 203 | 
| 192 }  // namespace search | 204 }  // namespace search | 
| 193 }  // namespace chrome | 205 }  // namespace chrome | 
| OLD | NEW | 
|---|