Home | History | Annotate | Download | only in chrome_frame
      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 #include "chrome_frame/plugin_url_request.h"
      6 
      7 #include "chrome/common/automation_messages.h"
      8 
      9 PluginUrlRequest::PluginUrlRequest()
     10     : delegate_(NULL),
     11       remote_request_id_(-1),
     12       post_data_len_(0),
     13       enable_frame_busting_(false),
     14       resource_type_(ResourceType::MAIN_FRAME),
     15       load_flags_(0),
     16       is_chunked_upload_(false) {
     17 }
     18 
     19 PluginUrlRequest::~PluginUrlRequest() {
     20 }
     21 
     22 bool PluginUrlRequest::Initialize(PluginUrlRequestDelegate* delegate,
     23     int remote_request_id, const std::string& url, const std::string& method,
     24     const std::string& referrer, const std::string& extra_headers,
     25     net::UploadData* upload_data, ResourceType::Type resource_type,
     26     bool enable_frame_busting, int load_flags) {
     27   delegate_ = delegate;
     28   remote_request_id_ = remote_request_id;
     29   url_ = url;
     30   method_ = method;
     31   referrer_ = referrer;
     32   extra_headers_ = extra_headers;
     33   resource_type_ = resource_type;
     34   load_flags_ = load_flags;
     35   enable_frame_busting_ = enable_frame_busting;
     36 
     37   if (upload_data) {
     38     // We store a pointer to UrlmonUploadDataStream and not net::UploadData
     39     // since UrlmonUploadDataStream implements thread safe ref counting and
     40     // UploadData does not.
     41     CComObject<UrlmonUploadDataStream>* upload_stream = NULL;
     42     HRESULT hr = CComObject<UrlmonUploadDataStream>::CreateInstance(
     43         &upload_stream);
     44     if (FAILED(hr)) {
     45       NOTREACHED();
     46     } else {
     47       upload_stream->AddRef();
     48       if (!upload_stream->Initialize(upload_data)) {
     49         upload_stream->Release();
     50         return true;
     51       }
     52 
     53       upload_data_.Attach(upload_stream);
     54       is_chunked_upload_ = upload_data->is_chunked();
     55       STATSTG stat;
     56       upload_stream->Stat(&stat, STATFLAG_NONAME);
     57       post_data_len_ = stat.cbSize.QuadPart;
     58     }
     59   }
     60 
     61   return true;
     62 }
     63