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
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#pragma once
8
9#include <string>
10
11#include "base/task.h"
12#include "net/url_request/url_request_job.h"
13
14namespace net {
15
16class URLRequest;
17
18class URLRequestSimpleJob : public URLRequestJob {
19 public:
20  explicit URLRequestSimpleJob(URLRequest* request);
21
22  virtual void Start();
23  virtual bool ReadRawData(IOBuffer* buf, int buf_size, int *bytes_read);
24  virtual bool GetMimeType(std::string* mime_type) const;
25  virtual bool GetCharset(std::string* charset);
26
27 protected:
28  ~URLRequestSimpleJob();
29
30  // subclasses must override the way response data is determined.
31  virtual bool GetData(std::string* mime_type,
32                       std::string* charset,
33                       std::string* data) const = 0;
34
35 protected:
36  void StartAsync();
37
38 private:
39  std::string mime_type_;
40  std::string charset_;
41  std::string data_;
42  int data_offset_;
43  ScopedRunnableMethodFactory<URLRequestSimpleJob> method_factory_;
44};
45
46}  // namespace net
47
48#endif  // NET_URL_REQUEST_URL_REQUEST_SIMPLE_JOB_H_
49