Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: chrome/browser/search_engines/template_url_fetcher.cc

Issue 6322001: Remove wstring from TemplateURL and friends.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "chrome/browser/search_engines/template_url_fetcher.h" 7 #include "chrome/browser/search_engines/template_url_fetcher.h"
8 8
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/search_engines/template_url.h" 12 #include "chrome/browser/search_engines/template_url.h"
13 #include "chrome/browser/search_engines/template_url_fetcher_callbacks.h" 13 #include "chrome/browser/search_engines/template_url_fetcher_callbacks.h"
14 #include "chrome/browser/search_engines/template_url_model.h" 14 #include "chrome/browser/search_engines/template_url_model.h"
15 #include "chrome/browser/search_engines/template_url_parser.h" 15 #include "chrome/browser/search_engines/template_url_parser.h"
16 #include "chrome/common/net/url_fetcher.h" 16 #include "chrome/common/net/url_fetcher.h"
17 #include "chrome/common/notification_observer.h" 17 #include "chrome/common/notification_observer.h"
18 #include "chrome/common/notification_registrar.h" 18 #include "chrome/common/notification_registrar.h"
19 #include "chrome/common/notification_source.h" 19 #include "chrome/common/notification_source.h"
20 #include "chrome/common/notification_type.h" 20 #include "chrome/common/notification_type.h"
21 #include "net/url_request/url_request_status.h" 21 #include "net/url_request/url_request_status.h"
22 22
23 // RequestDelegate ------------------------------------------------------------ 23 // RequestDelegate ------------------------------------------------------------
24 class TemplateURLFetcher::RequestDelegate : public URLFetcher::Delegate, 24 class TemplateURLFetcher::RequestDelegate : public URLFetcher::Delegate,
25 public NotificationObserver { 25 public NotificationObserver {
26 public: 26 public:
27 // Takes ownership of |callbacks|. 27 // Takes ownership of |callbacks|.
28 RequestDelegate(TemplateURLFetcher* fetcher, 28 RequestDelegate(TemplateURLFetcher* fetcher,
29 const std::wstring& keyword, 29 const string16& keyword,
30 const GURL& osdd_url, 30 const GURL& osdd_url,
31 const GURL& favicon_url, 31 const GURL& favicon_url,
32 TemplateURLFetcherCallbacks* callbacks, 32 TemplateURLFetcherCallbacks* callbacks,
33 ProviderType provider_type); 33 ProviderType provider_type);
34 34
35 // NotificationObserver: 35 // NotificationObserver:
36 virtual void Observe(NotificationType type, 36 virtual void Observe(NotificationType type,
37 const NotificationSource& source, 37 const NotificationSource& source,
38 const NotificationDetails& details); 38 const NotificationDetails& details);
39 39
40 // URLFetcher::Delegate: 40 // URLFetcher::Delegate:
41 // If data contains a valid OSDD, a TemplateURL is created and added to 41 // If data contains a valid OSDD, a TemplateURL is created and added to
42 // the TemplateURLModel. 42 // the TemplateURLModel.
43 virtual void OnURLFetchComplete(const URLFetcher* source, 43 virtual void OnURLFetchComplete(const URLFetcher* source,
44 const GURL& url, 44 const GURL& url,
45 const URLRequestStatus& status, 45 const URLRequestStatus& status,
46 int response_code, 46 int response_code,
47 const ResponseCookies& cookies, 47 const ResponseCookies& cookies,
48 const std::string& data); 48 const std::string& data);
49 49
50 // URL of the OSDD. 50 // URL of the OSDD.
51 const GURL& url() const { return osdd_url_; } 51 GURL url() const { return osdd_url_; }
52 52
53 // Keyword to use. 53 // Keyword to use.
54 const std::wstring keyword() const { return keyword_; } 54 string16 keyword() const { return keyword_; }
55 55
56 // The type of search provider being fetched. 56 // The type of search provider being fetched.
57 ProviderType provider_type() const { return provider_type_; } 57 ProviderType provider_type() const { return provider_type_; }
58 58
59 private: 59 private:
60 void AddSearchProvider(); 60 void AddSearchProvider();
61 61
62 URLFetcher url_fetcher_; 62 URLFetcher url_fetcher_;
63 TemplateURLFetcher* fetcher_; 63 TemplateURLFetcher* fetcher_;
64 scoped_ptr<TemplateURL> template_url_; 64 scoped_ptr<TemplateURL> template_url_;
65 std::wstring keyword_; 65 string16 keyword_;
66 const GURL osdd_url_; 66 const GURL osdd_url_;
67 const GURL favicon_url_; 67 const GURL favicon_url_;
68 const ProviderType provider_type_; 68 const ProviderType provider_type_;
69 scoped_ptr<TemplateURLFetcherCallbacks> callbacks_; 69 scoped_ptr<TemplateURLFetcherCallbacks> callbacks_;
70 70
71 // Handles registering for our notifications. 71 // Handles registering for our notifications.
72 NotificationRegistrar registrar_; 72 NotificationRegistrar registrar_;
73 73
74 DISALLOW_COPY_AND_ASSIGN(RequestDelegate); 74 DISALLOW_COPY_AND_ASSIGN(RequestDelegate);
75 }; 75 };
76 76
77 TemplateURLFetcher::RequestDelegate::RequestDelegate( 77 TemplateURLFetcher::RequestDelegate::RequestDelegate(
78 TemplateURLFetcher* fetcher, 78 TemplateURLFetcher* fetcher,
79 const std::wstring& keyword, 79 const string16& keyword,
80 const GURL& osdd_url, 80 const GURL& osdd_url,
81 const GURL& favicon_url, 81 const GURL& favicon_url,
82 TemplateURLFetcherCallbacks* callbacks, 82 TemplateURLFetcherCallbacks* callbacks,
83 ProviderType provider_type) 83 ProviderType provider_type)
84 : ALLOW_THIS_IN_INITIALIZER_LIST(url_fetcher_(osdd_url, 84 : ALLOW_THIS_IN_INITIALIZER_LIST(url_fetcher_(osdd_url,
85 URLFetcher::GET, this)), 85 URLFetcher::GET, this)),
86 fetcher_(fetcher), 86 fetcher_(fetcher),
87 keyword_(keyword), 87 keyword_(keyword),
88 osdd_url_(osdd_url), 88 osdd_url_(osdd_url),
89 favicon_url_(favicon_url), 89 favicon_url_(favicon_url),
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 154
155 void TemplateURLFetcher::RequestDelegate::AddSearchProvider() { 155 void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
156 DCHECK(template_url_.get()); 156 DCHECK(template_url_.get());
157 if (provider_type_ != AUTODETECTED_PROVIDER || keyword_.empty()) { 157 if (provider_type_ != AUTODETECTED_PROVIDER || keyword_.empty()) {
158 // Generate new keyword from URL in OSDD for none autodetected case. 158 // Generate new keyword from URL in OSDD for none autodetected case.
159 // Previous keyword was generated from URL where OSDD was placed and 159 // Previous keyword was generated from URL where OSDD was placed and
160 // it gives wrong result when OSDD is located on third party site that 160 // it gives wrong result when OSDD is located on third party site that
161 // has nothing in common with search engine in OSDD. 161 // has nothing in common with search engine in OSDD.
162 GURL keyword_url(template_url_->url()->url()); 162 GURL keyword_url(template_url_->url()->url());
163 std::wstring new_keyword = TemplateURLModel::GenerateKeyword( 163 string16 new_keyword = TemplateURLModel::GenerateKeyword(
164 keyword_url, false); 164 keyword_url, false);
165 if (!new_keyword.empty()) 165 if (!new_keyword.empty())
166 keyword_ = new_keyword; 166 keyword_ = new_keyword;
167 } 167 }
168 TemplateURLModel* model = fetcher_->profile()->GetTemplateURLModel(); 168 TemplateURLModel* model = fetcher_->profile()->GetTemplateURLModel();
169 const TemplateURL* existing_url; 169 const TemplateURL* existing_url;
170 if (keyword_.empty() || 170 if (keyword_.empty() ||
171 !model || !model->loaded() || 171 !model || !model->loaded() ||
172 !model->CanReplaceKeyword(keyword_, GURL(template_url_->url()->url()), 172 !model->CanReplaceKeyword(keyword_, GURL(template_url_->url()->url()),
173 &existing_url)) { 173 &existing_url)) {
174 if (provider_type_ == AUTODETECTED_PROVIDER || !model || !model->loaded()) { 174 if (provider_type_ == AUTODETECTED_PROVIDER || !model || !model->loaded()) {
175 fetcher_->RequestCompleted(this); 175 fetcher_->RequestCompleted(this);
176 // WARNING: RequestCompleted deletes us. 176 // WARNING: RequestCompleted deletes us.
177 return; 177 return;
178 } 178 }
179 179
180 existing_url = NULL; 180 existing_url = NULL;
181 181
182 // Try to generate a keyword automatically when we are setting the default 182 // Try to generate a keyword automatically when we are setting the default
183 // provider. The keyword isn't as important in this case. 183 // provider. The keyword isn't as important in this case.
184 if (provider_type_ == EXPLICIT_DEFAULT_PROVIDER) { 184 if (provider_type_ == EXPLICIT_DEFAULT_PROVIDER) {
185 // The loop numbers are arbitrary and are simply a strong effort. 185 // The loop numbers are arbitrary and are simply a strong effort.
186 std::wstring new_keyword; 186 string16 new_keyword;
187 for (int i = 0; i < 100; ++i) { 187 for (int i = 0; i < 100; ++i) {
188 // Concatenate a number at end of the keyword and try that. 188 // Concatenate a number at end of the keyword and try that.
189 new_keyword = keyword_; 189 new_keyword = keyword_;
190 // Try the keyword alone the first time 190 // Try the keyword alone the first time
191 if (i > 0) 191 if (i > 0)
192 new_keyword.append(UTF16ToWide(base::IntToString16(i))); 192 new_keyword.append(base::IntToString16(i));
193 if (!model->GetTemplateURLForKeyword(new_keyword) || 193 if (!model->GetTemplateURLForKeyword(new_keyword) ||
194 model->CanReplaceKeyword(new_keyword, 194 model->CanReplaceKeyword(new_keyword,
195 GURL(template_url_->url()->url()), 195 GURL(template_url_->url()->url()),
196 &existing_url)) { 196 &existing_url)) {
197 break; 197 break;
198 } 198 }
199 new_keyword.clear(); 199 new_keyword.clear();
200 existing_url = NULL; 200 existing_url = NULL;
201 } 201 }
202 202
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 // TemplateURLFetcher --------------------------------------------------------- 261 // TemplateURLFetcher ---------------------------------------------------------
262 262
263 TemplateURLFetcher::TemplateURLFetcher(Profile* profile) : profile_(profile) { 263 TemplateURLFetcher::TemplateURLFetcher(Profile* profile) : profile_(profile) {
264 DCHECK(profile_); 264 DCHECK(profile_);
265 } 265 }
266 266
267 TemplateURLFetcher::~TemplateURLFetcher() { 267 TemplateURLFetcher::~TemplateURLFetcher() {
268 } 268 }
269 269
270 void TemplateURLFetcher::ScheduleDownload( 270 void TemplateURLFetcher::ScheduleDownload(
271 const std::wstring& keyword, 271 const string16& keyword,
272 const GURL& osdd_url, 272 const GURL& osdd_url,
273 const GURL& favicon_url, 273 const GURL& favicon_url,
274 TemplateURLFetcherCallbacks* callbacks, 274 TemplateURLFetcherCallbacks* callbacks,
275 ProviderType provider_type) { 275 ProviderType provider_type) {
276 DCHECK(osdd_url.is_valid()); 276 DCHECK(osdd_url.is_valid());
277 scoped_ptr<TemplateURLFetcherCallbacks> owned_callbacks(callbacks); 277 scoped_ptr<TemplateURLFetcherCallbacks> owned_callbacks(callbacks);
278 278
279 // For JS added OSDD empty keyword is OK because we will generate keyword 279 // For JS added OSDD empty keyword is OK because we will generate keyword
280 // later from OSDD content. 280 // later from OSDD content.
281 if (provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER && 281 if (provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER &&
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 new RequestDelegate(this, keyword, osdd_url, favicon_url, 319 new RequestDelegate(this, keyword, osdd_url, favicon_url,
320 owned_callbacks.release(), provider_type)); 320 owned_callbacks.release(), provider_type));
321 } 321 }
322 322
323 void TemplateURLFetcher::RequestCompleted(RequestDelegate* request) { 323 void TemplateURLFetcher::RequestCompleted(RequestDelegate* request) {
324 DCHECK(find(requests_->begin(), requests_->end(), request) != 324 DCHECK(find(requests_->begin(), requests_->end(), request) !=
325 requests_->end()); 325 requests_->end());
326 requests_->erase(find(requests_->begin(), requests_->end(), request)); 326 requests_->erase(find(requests_->begin(), requests_->end(), request));
327 delete request; 327 delete request;
328 } 328 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_fetcher.h ('k') | chrome/browser/search_engines/template_url_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698