| OLD | NEW |
| 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 16 matching lines...) Expand all Loading... |
| 27 #include "chrome/common/ref_counted_util.h" | 27 #include "chrome/common/ref_counted_util.h" |
| 28 #include "chrome/common/url_constants.h" | 28 #include "chrome/common/url_constants.h" |
| 29 #include "googleurl/src/url_util.h" | 29 #include "googleurl/src/url_util.h" |
| 30 #include "grit/platform_locale_settings.h" | 30 #include "grit/platform_locale_settings.h" |
| 31 #include "net/base/io_buffer.h" | 31 #include "net/base/io_buffer.h" |
| 32 #include "net/base/net_errors.h" | 32 #include "net/base/net_errors.h" |
| 33 #include "net/url_request/url_request.h" | 33 #include "net/url_request/url_request.h" |
| 34 #include "net/url_request/url_request_file_job.h" | 34 #include "net/url_request/url_request_file_job.h" |
| 35 #include "net/url_request/url_request_job.h" | 35 #include "net/url_request/url_request_job.h" |
| 36 | 36 |
| 37 // URLRequestChromeJob is a URLRequestJob that manages running chrome-internal | 37 // URLRequestChromeJob is a net::URLRequestJob that manages running |
| 38 // resource requests asynchronously. | 38 // chrome-internal resource requests asynchronously. |
| 39 // It hands off URL requests to ChromeURLDataManager, which asynchronously | 39 // It hands off URL requests to ChromeURLDataManager, which asynchronously |
| 40 // calls back once the data is available. | 40 // calls back once the data is available. |
| 41 class URLRequestChromeJob : public net::URLRequestJob { | 41 class URLRequestChromeJob : public net::URLRequestJob { |
| 42 public: | 42 public: |
| 43 explicit URLRequestChromeJob(net::URLRequest* request); | 43 explicit URLRequestChromeJob(net::URLRequest* request); |
| 44 | 44 |
| 45 // URLRequestJob implementation. | 45 // net::URLRequestJob implementation. |
| 46 virtual void Start(); | 46 virtual void Start(); |
| 47 virtual void Kill(); | 47 virtual void Kill(); |
| 48 virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read); | 48 virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read); |
| 49 virtual bool GetMimeType(std::string* mime_type) const; | 49 virtual bool GetMimeType(std::string* mime_type) const; |
| 50 | 50 |
| 51 // Called by ChromeURLDataManager to notify us that the data blob is ready | 51 // Called by ChromeURLDataManager to notify us that the data blob is ready |
| 52 // for us. | 52 // for us. |
| 53 void DataAvailable(RefCountedMemory* bytes); | 53 void DataAvailable(RefCountedMemory* bytes); |
| 54 | 54 |
| 55 void SetMimeType(const std::string& mime_type) { | 55 void SetMimeType(const std::string& mime_type) { |
| 56 mime_type_ = mime_type; | 56 mime_type_ = mime_type; |
| 57 } | 57 } |
| 58 | 58 |
| 59 private: | 59 private: |
| 60 virtual ~URLRequestChromeJob(); | 60 virtual ~URLRequestChromeJob(); |
| 61 | 61 |
| 62 // Helper for Start(), to let us start asynchronously. | 62 // Helper for Start(), to let us start asynchronously. |
| 63 // (This pattern is shared by most URLRequestJob implementations.) | 63 // (This pattern is shared by most net::URLRequestJob implementations.) |
| 64 void StartAsync(); | 64 void StartAsync(); |
| 65 | 65 |
| 66 // Do the actual copy from data_ (the data we're serving) into |buf|. | 66 // Do the actual copy from data_ (the data we're serving) into |buf|. |
| 67 // Separate from ReadRawData so we can handle async I/O. | 67 // Separate from ReadRawData so we can handle async I/O. |
| 68 void CompleteRead(net::IOBuffer* buf, int buf_size, int* bytes_read); | 68 void CompleteRead(net::IOBuffer* buf, int buf_size, int* bytes_read); |
| 69 | 69 |
| 70 // The actual data we're serving. NULL until it's been fetched. | 70 // The actual data we're serving. NULL until it's been fetched. |
| 71 scoped_refptr<RefCountedMemory> data_; | 71 scoped_refptr<RefCountedMemory> data_; |
| 72 // The current offset into the data that we're handing off to our | 72 // The current offset into the data that we're handing off to our |
| 73 // callers via the Read interfaces. | 73 // callers via the Read interfaces. |
| 74 int data_offset_; | 74 int data_offset_; |
| 75 | 75 |
| 76 // For async reads, we keep around a pointer to the buffer that | 76 // For async reads, we keep around a pointer to the buffer that |
| 77 // we're reading into. | 77 // we're reading into. |
| 78 scoped_refptr<net::IOBuffer> pending_buf_; | 78 scoped_refptr<net::IOBuffer> pending_buf_; |
| 79 int pending_buf_size_; | 79 int pending_buf_size_; |
| 80 std::string mime_type_; | 80 std::string mime_type_; |
| 81 | 81 |
| 82 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeJob); | 82 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeJob); |
| 83 }; | 83 }; |
| 84 | 84 |
| 85 // URLRequestChromeFileJob is a URLRequestJob that acts like a file:// URL | 85 // URLRequestChromeFileJob is a net::URLRequestJob that acts like a file:// URL |
| 86 class URLRequestChromeFileJob : public URLRequestFileJob { | 86 class URLRequestChromeFileJob : public URLRequestFileJob { |
| 87 public: | 87 public: |
| 88 URLRequestChromeFileJob(net::URLRequest* request, const FilePath& path); | 88 URLRequestChromeFileJob(net::URLRequest* request, const FilePath& path); |
| 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 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 if (base::win::GetVersion() < base::win::VERSION_VISTA) | 315 if (base::win::GetVersion() < base::win::VERSION_VISTA) |
| 316 web_font_size_id = IDS_WEB_FONT_SIZE_XP; | 316 web_font_size_id = IDS_WEB_FONT_SIZE_XP; |
| 317 #endif | 317 #endif |
| 318 localized_strings->SetString("fontsize", | 318 localized_strings->SetString("fontsize", |
| 319 l10n_util::GetStringUTF16(web_font_size_id)); | 319 l10n_util::GetStringUTF16(web_font_size_id)); |
| 320 | 320 |
| 321 localized_strings->SetString("textdirection", | 321 localized_strings->SetString("textdirection", |
| 322 base::i18n::IsRTL() ? "rtl" : "ltr"); | 322 base::i18n::IsRTL() ? "rtl" : "ltr"); |
| 323 } | 323 } |
| 324 | 324 |
| 325 URLRequestJob* ChromeURLDataManager::Factory(net::URLRequest* request, | 325 net::URLRequestJob* ChromeURLDataManager::Factory(net::URLRequest* request, |
| 326 const std::string& scheme) { | 326 const std::string& scheme) { |
| 327 // Try first with a file handler | 327 // Try first with a file handler |
| 328 FilePath path; | 328 FilePath path; |
| 329 if (ChromeURLDataManager::URLToFilePath(request->url(), &path)) | 329 if (ChromeURLDataManager::URLToFilePath(request->url(), &path)) |
| 330 return new URLRequestChromeFileJob(request, path); | 330 return new URLRequestChromeFileJob(request, path); |
| 331 | 331 |
| 332 // Next check for chrome://view-http-cache/*, which uses its own job type. | 332 // Next check for chrome://view-http-cache/*, which uses its own job type. |
| 333 if (ViewHttpCacheJobFactory::IsSupportedURL(request->url())) | 333 if (ViewHttpCacheJobFactory::IsSupportedURL(request->url())) |
| 334 return ViewHttpCacheJobFactory::CreateJobForRequest(request); | 334 return ViewHttpCacheJobFactory::CreateJobForRequest(request); |
| 335 | 335 |
| 336 // Next check for chrome://appcache-internals/, which uses its own job type. | 336 // Next check for chrome://appcache-internals/, which uses its own job type. |
| 337 if (ViewAppCacheInternalsJobFactory::IsSupportedURL(request->url())) | 337 if (ViewAppCacheInternalsJobFactory::IsSupportedURL(request->url())) |
| 338 return ViewAppCacheInternalsJobFactory::CreateJobForRequest(request); | 338 return ViewAppCacheInternalsJobFactory::CreateJobForRequest(request); |
| 339 | 339 |
| 340 // Next check for chrome://blob-internals/, which uses its own job type. | 340 // Next check for chrome://blob-internals/, which uses its own job type. |
| 341 if (ViewBlobInternalsJobFactory::IsSupportedURL(request->url())) | 341 if (ViewBlobInternalsJobFactory::IsSupportedURL(request->url())) |
| 342 return ViewBlobInternalsJobFactory::CreateJobForRequest(request); | 342 return ViewBlobInternalsJobFactory::CreateJobForRequest(request); |
| 343 | 343 |
| 344 // Fall back to using a custom handler | 344 // Fall back to using a custom handler |
| 345 return new URLRequestChromeJob(request); | 345 return new URLRequestChromeJob(request); |
| 346 } | 346 } |
| 347 | 347 |
| 348 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request) | 348 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request) |
| 349 : URLRequestJob(request), | 349 : net::URLRequestJob(request), |
| 350 data_offset_(0), | 350 data_offset_(0), |
| 351 pending_buf_size_(0) { | 351 pending_buf_size_(0) { |
| 352 } | 352 } |
| 353 | 353 |
| 354 URLRequestChromeJob::~URLRequestChromeJob() { | 354 URLRequestChromeJob::~URLRequestChromeJob() { |
| 355 CHECK(!ChromeURLDataManager::GetInstance()->HasPendingJob(this)); | 355 CHECK(!ChromeURLDataManager::GetInstance()->HasPendingJob(this)); |
| 356 } | 356 } |
| 357 | 357 |
| 358 void URLRequestChromeJob::Start() { | 358 void URLRequestChromeJob::Start() { |
| 359 // Start reading asynchronously so that all error reporting and data | 359 // Start reading asynchronously so that all error reporting and data |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 net::ERR_INVALID_URL)); | 431 net::ERR_INVALID_URL)); |
| 432 } | 432 } |
| 433 } | 433 } |
| 434 | 434 |
| 435 URLRequestChromeFileJob::URLRequestChromeFileJob(net::URLRequest* request, | 435 URLRequestChromeFileJob::URLRequestChromeFileJob(net::URLRequest* request, |
| 436 const FilePath& path) | 436 const FilePath& path) |
| 437 : URLRequestFileJob(request, path) { | 437 : URLRequestFileJob(request, path) { |
| 438 } | 438 } |
| 439 | 439 |
| 440 URLRequestChromeFileJob::~URLRequestChromeFileJob() { } | 440 URLRequestChromeFileJob::~URLRequestChromeFileJob() { } |
| OLD | NEW |