diff options
Diffstat (limited to 'net/url_request/url_request_data_job.cc')
-rw-r--r-- | net/url_request/url_request_data_job.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/net/url_request/url_request_data_job.cc b/net/url_request/url_request_data_job.cc new file mode 100644 index 0000000..ff52bb3 --- /dev/null +++ b/net/url_request/url_request_data_job.cc @@ -0,0 +1,33 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Simple implementation of a data: protocol handler. + +#include "net/url_request/url_request_data_job.h" + +#include "net/base/data_url.h" +#include "net/url_request/url_request.h" + +// static +URLRequestJob* URLRequestDataJob::Factory(URLRequest* request, + const std::string& scheme) { + return new URLRequestDataJob(request); +} + +URLRequestDataJob::URLRequestDataJob(URLRequest* request) + : URLRequestSimpleJob(request) { +} + + +bool URLRequestDataJob::GetData(std::string* mime_type, + std::string* charset, + std::string* data) const { + // Check if data URL is valid. If not, don't bother to try to extract data. + // Otherwise, parse the data from the data URL. + const GURL& url = request_->url(); + if (!url.is_valid()) + return false; + return net::DataURL::Parse(url, mime_type, charset, data); +} + |