| OLD | NEW | 
|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome_frame/urlmon_upload_data_stream.h" | 5 #include "chrome_frame/urlmon_upload_data_stream.h" | 
| 6 | 6 | 
| 7 #include "net/base/io_buffer.h" | 7 #include "net/base/io_buffer.h" | 
|  | 8 #include "net/base/net_errors.h" | 
| 8 | 9 | 
| 9 void UrlmonUploadDataStream::Initialize(net::UploadData* upload_data) { | 10 void UrlmonUploadDataStream::Initialize(net::UploadData* upload_data) { | 
| 10   upload_data_ = upload_data; | 11   upload_data_ = upload_data; | 
| 11   request_body_stream_.reset(new net::UploadDataStream(upload_data)); | 12   request_body_stream_.reset(net::UploadDataStream::Create(upload_data, NULL)); | 
|  | 13   DCHECK(request_body_stream_.get()); | 
| 12 } | 14 } | 
| 13 | 15 | 
| 14 STDMETHODIMP UrlmonUploadDataStream::Read(void* pv, ULONG cb, ULONG* read) { | 16 STDMETHODIMP UrlmonUploadDataStream::Read(void* pv, ULONG cb, ULONG* read) { | 
| 15   if (pv == NULL) { | 17   if (pv == NULL) { | 
| 16     NOTREACHED(); | 18     NOTREACHED(); | 
| 17     return E_POINTER; | 19     return E_POINTER; | 
| 18   } | 20   } | 
| 19 | 21 | 
| 20   // Have we already read past the end of the stream? | 22   // Have we already read past the end of the stream? | 
| 21   if (request_body_stream_->position() >= request_body_stream_->size()) { | 23   if (request_body_stream_->position() >= request_body_stream_->size()) { | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 62 | 64 | 
| 63   return S_OK; | 65   return S_OK; | 
| 64 } | 66 } | 
| 65 | 67 | 
| 66 STDMETHODIMP UrlmonUploadDataStream::Seek(LARGE_INTEGER move, DWORD origin, | 68 STDMETHODIMP UrlmonUploadDataStream::Seek(LARGE_INTEGER move, DWORD origin, | 
| 67                                           ULARGE_INTEGER* new_pos) { | 69                                           ULARGE_INTEGER* new_pos) { | 
| 68   // UploadDataStream is really not very seek-able, so for now allow | 70   // UploadDataStream is really not very seek-able, so for now allow | 
| 69   // STREAM_SEEK_SETs to work with a 0 offset, but fail on everything else. | 71   // STREAM_SEEK_SETs to work with a 0 offset, but fail on everything else. | 
| 70   if (origin == STREAM_SEEK_SET && move.QuadPart == 0) { | 72   if (origin == STREAM_SEEK_SET && move.QuadPart == 0) { | 
| 71     if (request_body_stream_->position() != 0) { | 73     if (request_body_stream_->position() != 0) { | 
| 72       request_body_stream_.reset(new net::UploadDataStream(upload_data_)); | 74       request_body_stream_.reset( | 
|  | 75           net::UploadDataStream::Create(upload_data_, NULL)); | 
|  | 76       DCHECK(request_body_stream_.get()); | 
| 73     } | 77     } | 
| 74     if (new_pos) { | 78     if (new_pos) { | 
| 75       new_pos->QuadPart = 0; | 79       new_pos->QuadPart = 0; | 
| 76     } | 80     } | 
| 77     return S_OK; | 81     return S_OK; | 
| 78   } | 82   } | 
| 79 | 83 | 
| 80   DCHECK(false) << __FUNCTION__; | 84   DCHECK(false) << __FUNCTION__; | 
| 81   return STG_E_INVALIDFUNCTION; | 85   return STG_E_INVALIDFUNCTION; | 
| 82 } | 86 } | 
| 83 | 87 | 
| 84 STDMETHODIMP UrlmonUploadDataStream::Stat(STATSTG *stat_stg, | 88 STDMETHODIMP UrlmonUploadDataStream::Stat(STATSTG *stat_stg, | 
| 85                                           DWORD grf_stat_flag) { | 89                                           DWORD grf_stat_flag) { | 
| 86   if (stat_stg == NULL) | 90   if (stat_stg == NULL) | 
| 87     return E_POINTER; | 91     return E_POINTER; | 
| 88 | 92 | 
| 89   memset(stat_stg, 0, sizeof(STATSTG)); | 93   memset(stat_stg, 0, sizeof(STATSTG)); | 
| 90   if (0 == (grf_stat_flag & STATFLAG_NONAME)) { | 94   if (0 == (grf_stat_flag & STATFLAG_NONAME)) { | 
| 91     const wchar_t kStreamBuffer[] = L"PostStream"; | 95     const wchar_t kStreamBuffer[] = L"PostStream"; | 
| 92     stat_stg->pwcsName = | 96     stat_stg->pwcsName = | 
| 93         static_cast<wchar_t*>(::CoTaskMemAlloc(sizeof(kStreamBuffer))); | 97         static_cast<wchar_t*>(::CoTaskMemAlloc(sizeof(kStreamBuffer))); | 
| 94     lstrcpy(stat_stg->pwcsName, kStreamBuffer); | 98     lstrcpy(stat_stg->pwcsName, kStreamBuffer); | 
| 95   } | 99   } | 
| 96   stat_stg->type = STGTY_STREAM; | 100   stat_stg->type = STGTY_STREAM; | 
| 97   stat_stg->cbSize.QuadPart = upload_data_->GetContentLength(); | 101   stat_stg->cbSize.QuadPart = upload_data_->GetContentLength(); | 
| 98   return S_OK; | 102   return S_OK; | 
| 99 } | 103 } | 
| OLD | NEW | 
|---|