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

Side by Side Diff: chrome/browser/dom_ui/chrome_url_data_manager.cc

Issue 5519016: Add a new GetInstance() method for singleton classes used in chrome/browser files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 10 years 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
« no previous file with comments | « chrome/browser/dom_ui/chrome_url_data_manager.h ('k') | chrome/browser/dom_ui/conflicts_ui.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/dom_ui/chrome_url_data_manager.h" 5 #include "chrome/browser/dom_ui/chrome_url_data_manager.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/i18n/rtl.h" 9 #include "base/i18n/rtl.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 89
90 private: 90 private:
91 virtual ~URLRequestChromeFileJob(); 91 virtual ~URLRequestChromeFileJob();
92 92
93 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeFileJob); 93 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeFileJob);
94 }; 94 };
95 95
96 void RegisterURLRequestChromeJob() { 96 void RegisterURLRequestChromeJob() {
97 FilePath inspector_dir; 97 FilePath inspector_dir;
98 if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) { 98 if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) {
99 Singleton<ChromeURLDataManager>()->AddFileSource( 99 ChromeURLDataManager::GetInstance()->AddFileSource(
100 chrome::kChromeUIDevToolsHost, inspector_dir); 100 chrome::kChromeUIDevToolsHost, inspector_dir);
101 } 101 }
102 102
103 SharedResourcesDataSource::Register(); 103 SharedResourcesDataSource::Register();
104 net::URLRequest::RegisterProtocolFactory(chrome::kChromeDevToolsScheme, 104 net::URLRequest::RegisterProtocolFactory(chrome::kChromeDevToolsScheme,
105 &ChromeURLDataManager::Factory); 105 &ChromeURLDataManager::Factory);
106 net::URLRequest::RegisterProtocolFactory(chrome::kChromeUIScheme, 106 net::URLRequest::RegisterProtocolFactory(chrome::kChromeUIScheme,
107 &ChromeURLDataManager::Factory); 107 &ChromeURLDataManager::Factory);
108 } 108 }
109 109
110 void UnregisterURLRequestChromeJob() { 110 void UnregisterURLRequestChromeJob() {
111 FilePath inspector_dir; 111 FilePath inspector_dir;
112 if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) { 112 if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) {
113 Singleton<ChromeURLDataManager>()->RemoveFileSource( 113 ChromeURLDataManager::GetInstance()->RemoveFileSource(
114 chrome::kChromeUIDevToolsHost); 114 chrome::kChromeUIDevToolsHost);
115 } 115 }
116 } 116 }
117 117
118 // static 118 // static
119 void ChromeURLDataManager::URLToRequest(const GURL& url, 119 void ChromeURLDataManager::URLToRequest(const GURL& url,
120 std::string* source_name, 120 std::string* source_name,
121 std::string* path) { 121 std::string* path) {
122 DCHECK(url.SchemeIs(chrome::kChromeDevToolsScheme) || 122 DCHECK(url.SchemeIs(chrome::kChromeDevToolsScheme) ||
123 url.SchemeIs(chrome::kChromeUIScheme)); 123 url.SchemeIs(chrome::kChromeUIScheme));
(...skipping 27 matching lines...) Expand all
151 // Remove Query and Ref from URL. 151 // Remove Query and Ref from URL.
152 GURL stripped_url; 152 GURL stripped_url;
153 GURL::Replacements replacements; 153 GURL::Replacements replacements;
154 replacements.ClearQuery(); 154 replacements.ClearQuery();
155 replacements.ClearRef(); 155 replacements.ClearRef();
156 stripped_url = url.ReplaceComponents(replacements); 156 stripped_url = url.ReplaceComponents(replacements);
157 157
158 URLToRequest(stripped_url, &source_name, &relative_path); 158 URLToRequest(stripped_url, &source_name, &relative_path);
159 159
160 FileSourceMap::const_iterator i( 160 FileSourceMap::const_iterator i(
161 Singleton<ChromeURLDataManager>()->file_sources_.find(source_name)); 161 ChromeURLDataManager::GetInstance()->file_sources_.find(source_name));
162 if (i == Singleton<ChromeURLDataManager>()->file_sources_.end()) 162 if (i == ChromeURLDataManager::GetInstance()->file_sources_.end())
163 return false; 163 return false;
164 164
165 // Check that |relative_path| is not an absolute path (otherwise AppendASCII() 165 // Check that |relative_path| is not an absolute path (otherwise AppendASCII()
166 // will DCHECK). The awkward use of StringType is because on some systems 166 // will DCHECK). The awkward use of StringType is because on some systems
167 // FilePath expects a std::string, but on others a std::wstring. 167 // FilePath expects a std::string, but on others a std::wstring.
168 FilePath p(FilePath::StringType(relative_path.begin(), relative_path.end())); 168 FilePath p(FilePath::StringType(relative_path.begin(), relative_path.end()));
169 if (p.IsAbsolute()) 169 if (p.IsAbsolute())
170 return false; 170 return false;
171 171
172 *file_path = i->second.AppendASCII(relative_path); 172 *file_path = i->second.AppendASCII(relative_path);
173 173
174 return true; 174 return true;
175 } 175 }
176 176
177 ChromeURLDataManager::ChromeURLDataManager() : next_request_id_(0) { } 177 ChromeURLDataManager::ChromeURLDataManager() : next_request_id_(0) { }
178 178
179 ChromeURLDataManager::~ChromeURLDataManager() { } 179 ChromeURLDataManager::~ChromeURLDataManager() { }
180 180
181 // static
182 ChromeURLDataManager* ChromeURLDataManager::GetInstance() {
183 return Singleton<ChromeURLDataManager>::get();
184 }
185
181 void ChromeURLDataManager::AddDataSource(scoped_refptr<DataSource> source) { 186 void ChromeURLDataManager::AddDataSource(scoped_refptr<DataSource> source) {
182 // TODO(jackson): A new data source with same name should not clobber the 187 // TODO(jackson): A new data source with same name should not clobber the
183 // existing one. 188 // existing one.
184 data_sources_[source->source_name()] = source; 189 data_sources_[source->source_name()] = source;
185 } 190 }
186 191
187 void ChromeURLDataManager::AddFileSource(const std::string& source_name, 192 void ChromeURLDataManager::AddFileSource(const std::string& source_name,
188 const FilePath& file_path) { 193 const FilePath& file_path) {
189 DCHECK(file_sources_.count(source_name) == 0); 194 DCHECK(file_sources_.count(source_name) == 0);
190 file_sources_[source_name] = file_path; 195 file_sources_[source_name] = file_path;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 } 285 }
281 286
282 ChromeURLDataManager::DataSource::~DataSource() { 287 ChromeURLDataManager::DataSource::~DataSource() {
283 } 288 }
284 289
285 void ChromeURLDataManager::DataSource::SendResponse( 290 void ChromeURLDataManager::DataSource::SendResponse(
286 RequestID request_id, 291 RequestID request_id,
287 RefCountedMemory* bytes) { 292 RefCountedMemory* bytes) {
288 BrowserThread::PostTask( 293 BrowserThread::PostTask(
289 BrowserThread::IO, FROM_HERE, 294 BrowserThread::IO, FROM_HERE,
290 NewRunnableMethod(Singleton<ChromeURLDataManager>::get(), 295 NewRunnableMethod(ChromeURLDataManager::GetInstance(),
291 &ChromeURLDataManager::DataAvailable, 296 &ChromeURLDataManager::DataAvailable,
292 request_id, scoped_refptr<RefCountedMemory>(bytes))); 297 request_id, scoped_refptr<RefCountedMemory>(bytes)));
293 } 298 }
294 299
295 MessageLoop* ChromeURLDataManager::DataSource::MessageLoopForRequestPath( 300 MessageLoop* ChromeURLDataManager::DataSource::MessageLoopForRequestPath(
296 const std::string& path) const { 301 const std::string& path) const {
297 return message_loop_; 302 return message_loop_;
298 } 303 }
299 304
300 // static 305 // static
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 return new URLRequestChromeJob(request); 345 return new URLRequestChromeJob(request);
341 } 346 }
342 347
343 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request) 348 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request)
344 : URLRequestJob(request), 349 : URLRequestJob(request),
345 data_offset_(0), 350 data_offset_(0),
346 pending_buf_size_(0) { 351 pending_buf_size_(0) {
347 } 352 }
348 353
349 URLRequestChromeJob::~URLRequestChromeJob() { 354 URLRequestChromeJob::~URLRequestChromeJob() {
350 CHECK(!Singleton<ChromeURLDataManager>()->HasPendingJob(this)); 355 CHECK(!ChromeURLDataManager::GetInstance()->HasPendingJob(this));
351 } 356 }
352 357
353 void URLRequestChromeJob::Start() { 358 void URLRequestChromeJob::Start() {
354 // Start reading asynchronously so that all error reporting and data 359 // Start reading asynchronously so that all error reporting and data
355 // callbacks happen as they would for network requests. 360 // callbacks happen as they would for network requests.
356 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( 361 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod(
357 this, &URLRequestChromeJob::StartAsync)); 362 this, &URLRequestChromeJob::StartAsync));
358 } 363 }
359 364
360 void URLRequestChromeJob::Kill() { 365 void URLRequestChromeJob::Kill() {
361 Singleton<ChromeURLDataManager>()->RemoveRequest(this); 366 ChromeURLDataManager::GetInstance()->RemoveRequest(this);
362 } 367 }
363 368
364 bool URLRequestChromeJob::GetMimeType(std::string* mime_type) const { 369 bool URLRequestChromeJob::GetMimeType(std::string* mime_type) const {
365 *mime_type = mime_type_; 370 *mime_type = mime_type_;
366 return !mime_type_.empty(); 371 return !mime_type_.empty();
367 } 372 }
368 373
369 void URLRequestChromeJob::DataAvailable(RefCountedMemory* bytes) { 374 void URLRequestChromeJob::DataAvailable(RefCountedMemory* bytes) {
370 if (bytes) { 375 if (bytes) {
371 // The request completed, and we have all the data. 376 // The request completed, and we have all the data.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 memcpy(buf->data(), data_->front() + data_offset_, buf_size); 416 memcpy(buf->data(), data_->front() + data_offset_, buf_size);
412 data_offset_ += buf_size; 417 data_offset_ += buf_size;
413 } 418 }
414 *bytes_read = buf_size; 419 *bytes_read = buf_size;
415 } 420 }
416 421
417 void URLRequestChromeJob::StartAsync() { 422 void URLRequestChromeJob::StartAsync() {
418 if (!request_) 423 if (!request_)
419 return; 424 return;
420 425
421 if (Singleton<ChromeURLDataManager>()->StartRequest(request_->url(), this)) { 426 if (ChromeURLDataManager::GetInstance()->StartRequest(request_->url(),
427 this)) {
422 NotifyHeadersComplete(); 428 NotifyHeadersComplete();
423 } else { 429 } else {
424 NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, 430 NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED,
425 net::ERR_INVALID_URL)); 431 net::ERR_INVALID_URL));
426 } 432 }
427 } 433 }
428 434
429 URLRequestChromeFileJob::URLRequestChromeFileJob(net::URLRequest* request, 435 URLRequestChromeFileJob::URLRequestChromeFileJob(net::URLRequest* request,
430 const FilePath& path) 436 const FilePath& path)
431 : URLRequestFileJob(request, path) { 437 : URLRequestFileJob(request, path) {
432 } 438 }
433 439
434 URLRequestChromeFileJob::~URLRequestChromeFileJob() { } 440 URLRequestChromeFileJob::~URLRequestChromeFileJob() { }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/chrome_url_data_manager.h ('k') | chrome/browser/dom_ui/conflicts_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698