Home | History | Annotate | Download | only in url_request
      1 // Copyright (c) 2009 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_VIEW_NET_INTERNALS_JOB_H_
      6 #define NET_URL_REQUEST_URL_REQUEST_VIEW_NET_INTERNALS_JOB_H_
      7 
      8 #include "net/url_request/url_request.h"
      9 #include "net/url_request/url_request_simple_job.h"
     10 
     11 // A job subclass that implements a protocol to inspect the internal
     12 // state of the network stack. The exact format of the URLs is left up to
     13 // the caller, and is described by a URLFormat instance passed into
     14 // the constructor.
     15 class URLRequestViewNetInternalsJob : public URLRequestSimpleJob {
     16  public:
     17   class URLFormat;
     18 
     19   // |url_format| must remain valid for the duration |this|'s lifespan.
     20   URLRequestViewNetInternalsJob(URLRequest* request,
     21                                 URLFormat* url_format)
     22       : URLRequestSimpleJob(request), url_format_(url_format) {}
     23 
     24   // URLRequestSimpleJob methods:
     25   virtual bool GetData(std::string* mime_type,
     26                        std::string* charset,
     27                        std::string* data) const;
     28 
     29   // Overridden methods from URLRequestJob:
     30   virtual bool IsRedirectResponse(GURL* location, int* http_status_code);
     31 
     32  private:
     33   ~URLRequestViewNetInternalsJob() {}
     34 
     35   // Returns true if the current request is for a "view-cache" URL.
     36   // If it is, then |key| is assigned the particular cache URL of the request.
     37   bool GetViewCacheKeyForRequest(std::string* key) const;
     38 
     39   URLFormat* url_format_;
     40 };
     41 
     42 // Describes how to pack/unpack the filter string (details)
     43 // from a URL.
     44 class URLRequestViewNetInternalsJob::URLFormat {
     45  public:
     46   virtual ~URLFormat() {}
     47   virtual std::string GetDetails(const GURL& url) = 0;
     48   virtual GURL MakeURL(const std::string& details) = 0;
     49 };
     50 
     51 #endif  // NET_URL_REQUEST_URL_REQUEST_VIEW_NET_INTERNALS_JOB_H_
     52