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 3 // found in the LICENSE file. 4 5 #ifndef NET_URL_REQUEST_URL_REQUEST_SIMPLE_JOB_H_ 6 #define NET_URL_REQUEST_URL_REQUEST_SIMPLE_JOB_H_ 7 8 #include <string> 9 10 #include "base/memory/weak_ptr.h" 11 #include "net/base/completion_callback.h" 12 #include "net/base/net_export.h" 13 #include "net/url_request/url_request_job.h" 14 15 namespace net { 16 17 class URLRequest; 18 19 class NET_EXPORT URLRequestSimpleJob : public URLRequestJob { 20 public: 21 URLRequestSimpleJob(URLRequest* request, NetworkDelegate* network_delegate); 22 23 virtual void Start() OVERRIDE; 24 virtual bool ReadRawData(IOBuffer* buf, 25 int buf_size, 26 int *bytes_read) OVERRIDE; 27 virtual bool GetMimeType(std::string* mime_type) const OVERRIDE; 28 virtual bool GetCharset(std::string* charset) OVERRIDE; 29 30 protected: 31 virtual ~URLRequestSimpleJob(); 32 33 // Subclasses must override the way response data is determined. 34 // The return value should be: 35 // - OK if data is obtained; 36 // - ERR_IO_PENDING if async processing is needed to finish obtaining data. 37 // This is the only case when |callback| should be called after 38 // completion of the operation. In other situations |callback| should 39 // never be called; 40 // - any other ERR_* code to indicate an error. This code will be used 41 // as the error code in the URLRequestStatus when the URLRequest 42 // is finished. 43 virtual int GetData(std::string* mime_type, 44 std::string* charset, 45 std::string* data, 46 const CompletionCallback& callback) const = 0; 47 48 protected: 49 void StartAsync(); 50 51 private: 52 void OnGetDataCompleted(int result); 53 54 std::string mime_type_; 55 std::string charset_; 56 std::string data_; 57 int data_offset_; 58 base::WeakPtrFactory<URLRequestSimpleJob> weak_factory_; 59 }; 60 61 } // namespace net 62 63 #endif // NET_URL_REQUEST_URL_REQUEST_SIMPLE_JOB_H_ 64