// Copyright (c) 2012 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. #include "chrome_frame/plugin_url_request.h" #include "chrome/common/automation_messages.h" PluginUrlRequest::PluginUrlRequest() : delegate_(NULL), remote_request_id_(-1), post_data_len_(0), enable_frame_busting_(false), resource_type_(ResourceType::MAIN_FRAME), load_flags_(0), is_chunked_upload_(false) { } PluginUrlRequest::~PluginUrlRequest() { } bool PluginUrlRequest::Initialize(PluginUrlRequestDelegate* delegate, int remote_request_id, const std::string& url, const std::string& method, const std::string& referrer, const std::string& extra_headers, net::UploadData* upload_data, ResourceType::Type resource_type, bool enable_frame_busting, int load_flags) { delegate_ = delegate; remote_request_id_ = remote_request_id; url_ = url; method_ = method; referrer_ = referrer; extra_headers_ = extra_headers; resource_type_ = resource_type; load_flags_ = load_flags; enable_frame_busting_ = enable_frame_busting; if (upload_data) { // We store a pointer to UrlmonUploadDataStream and not net::UploadData // since UrlmonUploadDataStream implements thread safe ref counting and // UploadData does not. CComObject<UrlmonUploadDataStream>* upload_stream = NULL; HRESULT hr = CComObject<UrlmonUploadDataStream>::CreateInstance( &upload_stream); if (FAILED(hr)) { NOTREACHED(); } else { upload_stream->AddRef(); if (!upload_stream->Initialize(upload_data)) { upload_stream->Release(); return true; } upload_data_.Attach(upload_stream); is_chunked_upload_ = upload_data->is_chunked(); STATSTG stat; upload_stream->Stat(&stat, STATFLAG_NONAME); post_data_len_ = stat.cbSize.QuadPart; } } return true; }