webkit和blink在blob机制上不同的地方

WebKit.dll!WebCore::BlobURL::createBlobURL(const WTF::String & originString) 行 76 C++ WebKit.dll!WebCore::BlobURL::createPublicURL(WebCore::SecurityOrigin * securityOrigin) 行 47 C++ > WebKit.dll!WebCore::FileReaderLoader::start(WebCore::ScriptExecutionContext * scriptExecutionContext, WebCore::Blob * blob) 行 81 C++ WebKit.dll!WebCore::FileReader::readInternal(WebCore::Blob * blob, WebCore::FileReaderLoader::ReadType type, int & ec) 行 149 C++ WebKit.dll!WebCore::FileReader::readAsText(WebCore::Blob * blob, const WTF::String & encoding, int & ec) 行 113 C++ WebKit.dll!WebCore::jsFileReaderPrototypeFunctionReadAsText(JSC::ExecState * exec) 行 565 C++ > WebKit.dll!WebCore::BlobResourceHandle::BlobResourceHandle(WebCore::BlobData * blobData, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client, bool async) 行 173 C++ WebKit.dll!WebCore::BlobResourceHandle::createAsync(WebCore::BlobData * blobData, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 143 C++ WebKit.dll!WebCore::BlobRegistryImpl::createResourceHandle(const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 80 C++ WebKit.dll!WebCore::createResourceHandle(const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 59 C++ WebKit.dll!WebCore::ResourceHandle::create(WebCore::NetworkingContext * context, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client, bool defersLoading, bool shouldContentSniff) 行 92 C++ WebKit.dll!WebCore::ResourceLoader::start() 行 218 C++ WebKit.dll!WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation * host, WebCore::ResourceLoadPriority minimumPriority) 行 285 C++ WebKit.dll!WebCore::ResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader * resourceLoader) 行 189 C++ WebKit.dll!WebCore::ResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame * frame, WebCore::CachedResource * resource, const WebCore::ResourceRequest & request, const WebCore::ResourceLoaderOptions & options) 行 129 C++ WebKit.dll!WebCore::CachedResource::load(WebCore::CachedResourceLoader & cachedResourceLoader, const WebCore::ResourceLoaderOptions & options) 行 281 C++ WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type type, WebCore::CachedResourceRequest & request) 行 577 C++ WebKit.dll!WebCore::CachedResourceLoader::requestRawResource(WebCore::CachedResourceRequest & request) 行 269 C++ WebKit.dll!WebCore::DocumentThreadableLoader::loadRequest(const WebCore::ResourceRequest & request, WebCore::SecurityCheckPolicy securityCheck) 行 370 C++ WebKit.dll!WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document & document, WebCore::ThreadableLoaderClient & client, WebCore::DocumentThreadableLoader::BlockingBehavior blockingBehavior, const WebCore::ResourceRequest & request, const WebCore::ThreadableLoaderOptions & options) 行 84 C++ WebKit.dll!WebCore::DocumentThreadableLoader::create(WebCore::Document & document, WebCore::ThreadableLoaderClient & client, const WebCore::ResourceRequest & request, const WebCore::ThreadableLoaderOptions & options) 行 65 C++ WebKit.dll!WebCore::ThreadableLoader::create(WebCore::ScriptExecutionContext * context, WebCore::ThreadableLoaderClient * client, const WebCore::ResourceRequest & request, const WebCore::ThreadableLoaderOptions & options) 行 80 C++ WebKit.dll!WebCore::FileReaderLoader::start(WebCore::ScriptExecutionContext * scriptExecutionContext, WebCore::Blob * blob) 行 103 C++ WebKit.dll!WebCore::FileReader::readInternal(WebCore::Blob * blob, WebCore::FileReaderLoader::ReadType type, int & ec) 行 149 C++ WebKit.dll!WebCore::FileReader::readAsText(WebCore::Blob * blob, const WTF::String & encoding, int & ec) 行 113 C++ WebKit.dll!WebCore::jsFileReaderPrototypeFunctionReadAsText(JSC::ExecState * exec) 行 565 C++ WebKit.dll!_vmEntryToJavaScript() 未知 WebKit.dll!JSC::JITCode::execute(JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) 行 81 C++ WebKit.dll!JSC::Interpreter::executeCall(JSC::ExecState * callFrame, JSC::JSObject * function, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args) 行 965 C++ WebKit.dll!JSC::call(JSC::ExecState * exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData & callData, JSC::JSValue thisValue, const JSC::ArgList & args) 行 39 C++ WebKit.dll!JSC::JSJobMicrotask::run(JSC::ExecState * exec) 行 73 C++ WebKit.dll!WebCore::JSMainThreadExecState::runTask(JSC::ExecState * exec, JSC::Microtask & task) 行 75 C++ WebKit.dll!WebCore::JSGlobalObjectCallback::call() 行 64 C++ WebKit.dll!WebCore::JSGlobalObjectTask::{ctor}::__l2::<lambda>(WebCore::ScriptExecutionContext & __formal) 行 88 C++ WebKit.dll!std::_Invoker_functor::_Call<void <lambda>(WebCore::ScriptExecutionContext &) &,WebCore::ScriptExecutionContext &>(WebCore::JSGlobalObjectTask::{ctor}::__l2::void <lambda>(WebCore::ScriptExecutionContext &) & _Obj, WebCore::ScriptExecutionContext & <_Args_0>) 行 1410 C++ WebKit.dll!std::invoke<void <lambda>(WebCore::ScriptExecutionContext &) &,WebCore::ScriptExecutionContext &>(WebCore::JSGlobalObjectTask::{ctor}::__l2::void <lambda>(WebCore::ScriptExecutionContext &) & _Obj, WebCore::ScriptExecutionContext & <_Args_0>) 行 1476 C++ WebKit.dll!std::_Invoke_ret<void,void <lambda>(WebCore::ScriptExecutionContext &) &,WebCore::ScriptExecutionContext &>(std::_Forced<void,1> __formal, WebCore::JSGlobalObjectTask::{ctor}::__l2::void <lambda>(WebCore::ScriptExecutionContext &) & <_Vals_0>, WebCore::ScriptExecutionContext & <_Vals_1>) 行 1494 C++ WebKit.dll!std::_Func_impl<void <lambda>(WebCore::ScriptExecutionContext &),std::allocator<int>,void,WebCore::ScriptExecutionContext &>::_Do_call(WebCore::ScriptExecutionContext & <_Args_0>) 行 209 C++ WebKit.dll!std::_Func_class<void,WebCore::DOMWindow &>::operator()(WebCore::DOMWindow & <_Args_0>) 行 276 C++ WebKit.dll!WebCore::ScriptExecutionContext::Task::performTask(WebCore::ScriptExecutionContext & context) 行 151 C++ WebKit.dll!WebCore::Document::postTask::__l2::<lambda>() 行 5208 C++ WebKit.dll!std::_Invoker_functor::_Call<void <lambda>(void) &>(WebCore::Document::postTask::__l2::void <lambda>(void) & _Obj) 行 1410 C++ WebKit.dll!std::invoke<void <lambda>(void) &>(WebCore::Document::postTask::__l2::void <lambda>(void) & _Obj) 行 1476 C++ WebKit.dll!std::_Invoke_ret<void,void <lambda>(void) &>(std::_Forced<void,1> __formal, WebCore::Document::postTask::__l2::void <lambda>(void) & <_Vals_0>) 行 1494 C++ WebKit.dll!std::_Func_impl<void <lambda>(void),std::allocator<int>,void>::_Do_call() 行 209 C++ WebKit.dll!std::_Func_class<bool>::operator()() 行 276 C++ WebKit.dll!WTF::dispatchFunctionsFromMainThread() 行 140 C++ WebKit.dll!WTF::ThreadingWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned int wParam, long lParam) 行 47 C++ WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) 行 97 C++ MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) 行 200 C++ webkit的代码是在XMLHttpRequest::didReceiveData里收到数据后,存到Blob里,然后在BlobResourceHandle里创建异步回调,模拟网络请求给FileReaderLoader去加载 > WebKit.dll!WebCore::FileReaderLoader::didReceiveData(const char * data, int dataLength) 行 179 C++ WebKit.dll!WebCore::DocumentThreadableLoader::didReceiveData(unsigned long identifier, const char * data, int dataLength) 行 290 C++ WebKit.dll!WebCore::DocumentThreadableLoader::dataReceived(WebCore::CachedResource * resource, const char * data, int dataLength) 行 277 C++ WebKit.dll!WebCore::CachedRawResource::notifyClientsDataWasReceived(const char * data, unsigned int length) 行 119 C++ WebKit.dll!WebCore::CachedRawResource::addData(const char * data, unsigned int length) 行 84 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr<WebCore::SharedBuffer> prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) 行 296 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveBuffer(WTF::PassRefPtr<WebCore::SharedBuffer> buffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) 行 274 C++ WebKit.dll!WebCore::ResourceLoader::didReceiveBuffer(WebCore::ResourceHandle * __formal, WTF::PassRefPtr<WebCore::SharedBuffer> buffer, int encodedDataLength) 行 623 C++ WebKit.dll!WebCore::BlobResourceHandle::notifyReceiveData(const char * data, int bytesRead) 行 639 C++ WebKit.dll!WebCore::BlobResourceHandle::consumeData(const char * data, int bytesRead) 行 535 C++ WebKit.dll!WebCore::BlobResourceHandle::readDataAsync(const WebCore::BlobDataItem & item) 行 480 C++ WebKit.dll!WebCore::BlobResourceHandle::readAsync() 行 463 C++ WebKit.dll!WebCore::BlobResourceHandle::getSizeForNext() 行 259 C++ WebKit.dll!WebCore::BlobResourceHandle::didGetSize(__int64 size) 行 308 C++ WebKit.dll!WebCore::BlobResourceHandle::getSizeForNext() 行 267 C++ WebKit.dll!WebCore::BlobResourceHandle::doStart() 行 237 C++ WebKit.dll!WebCore::BlobResourceHandle::start::__l2::<lambda>() 行 209 C++ 而blink是先在XMLHttpRequest里存成一个临时文件再关联上一个blob,并在content层记录在BlobStorageHost里,再在FileReaderLoader里发起网络请求,content层 > content.dll!content::AsyncResourceHandler::OnReadCompleted(int bytes_read, bool * defer) 行 330 C++ content.dll!content::MimeTypeResourceHandler::OnReadCompleted(int bytes_read, bool * defer) 行 170 C++ content.dll!content::LayeredResourceHandler::OnReadCompleted(int bytes_read, bool * defer) 行 67 C++ content.dll!content::ResourceLoader::CompleteRead(int bytes_read) 行 627 C++ content.dll!content::ResourceLoader::OnReadCompleted(net::URLRequest * unused, int bytes_read) 行 382 C++ net.dll!net::URLRequest::NotifyReadCompleted(int bytes_read) 行 1136 C++ net.dll!net::URLRequestJob::NotifyReadComplete(int bytes_read) 行 527 C++ storage.dll!storage::BlobURLRequestJob::DidReadRawData(int result) 行 231 C++ storage.dll!base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>::Run(storage::BlobURLRequestJob * object, const int & <args_0>) 行 176 C++ storage.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> const &,int const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)> runnable, const base::WeakPtr<storage::BlobURLRequestJob> & weak_ptr, const int & <args_0>) 行 304 C++ storage.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,void __cdecl(storage::BlobURLRequestJob *,int),base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<storage::BlobURLRequestJob> > >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> const &,int const &> >,void __cdecl(int const &)>::Run(base::internal::BindStateBase * base, const int & <unbound_args_0>) 行 343 C++ storage.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ storage.dll!storage::BlobReader::ContinueAsyncReadLoop() 行 426 C++ storage.dll!storage::BlobReader::DidReadItem(int result) 行 478 C++ storage.dll!storage::BlobReader::DidReadFile(int result) 行 416 C++ 发起响应把数据给FileReaderLoader 在这里把blob存在文件里 > content.dll!content::RedirectToFileResourceHandler::OnResponseStarted(content::ResourceResponse * response, bool * defer) 行 162 C++ content.dll!content::MimeTypeResourceHandler::ProcessResponse(bool * defer) 行 238 C++ content.dll!content::MimeTypeResourceHandler::OnReadCompleted(int bytes_read, bool * defer) 行 180 C++ content.dll!content::LayeredResourceHandler::OnReadCompleted(int bytes_read, bool * defer) 行 67 C++ content.dll!content::ResourceLoader::CompleteRead(int bytes_read) 行 627 C++ content.dll!content::ResourceLoader::OnReadCompleted(net::URLRequest * unused, int bytes_read) 行 382 C++ content.dll!content::ResourceLoader::StartReading(bool is_continuation) 行 564 C++ content.dll!content::ResourceLoader::OnReadCompleted(net::URLRequest * unused, int bytes_read) 行 387 C++ content.dll!content::ResourceLoader::StartReading(bool is_continuation) 行 564 C++ content.dll!content::ResourceLoader::OnResponseStarted(net::URLRequest * unused) 行 358 C++ net.dll!net::URLRequest::NotifyResponseStarted() 行 819 C++ net.dll!net::URLRequestJob::NotifyHeadersComplete() 行 481 C++ net.dll!net::URLRequestHttpJob::NotifyHeadersComplete() 行 415 C++ net.dll!net::URLRequestHttpJob::SaveNextCookie() 行 783 C++ net.dll!net::URLRequestHttpJob::SaveCookiesAndNotifyHeadersComplete(int result) 行 730 C++ net.dll!net::URLRequestHttpJob::OnStartCompleted(int result) 行 960 C++ net.dll!base::internal::RunnableAdapter<void (__thiscall net::URLRequestHttpJob::*)(int)>::Run(net::URLRequestHttpJob * object, const int & <args_0>) 行 176 C++ net.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall net::URLRequestHttpJob::*)(int)>,base::internal::TypeList<net::URLRequestHttpJob *,int const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall net::URLRequestHttpJob::*)(int)> runnable, net::URLRequestHttpJob * <args_0>, const int & <args_1>) 行 294 C++ net.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall net::URLRequestHttpJob::*)(int)>,void __cdecl(net::URLRequestHttpJob *,int),base::internal::TypeList<base::internal::UnretainedWrapper<net::URLRequestHttpJob> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<net::URLRequestHttpJob> > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall net::URLRequestHttpJob::*)(int)>,base::internal::TypeList<net::URLRequestHttpJob *,int const &> >,void __cdecl(int const &)>::Run(base::internal::BindStateBase * base, const int & <unbound_args_0>) 行 343 C++ net.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ net.dll!net::HttpCache::Transaction::DoLoop(int result) 行 960 C++ net.dll!net::HttpCache::Transaction::OnIOComplete(int result) 行 2940 C++ net.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ net.dll!net::HttpNetworkTransaction::DoCallback(int rv) 行 631 C++ net.dll!net::HttpNetworkTransaction::OnIOComplete(int result) 行 637 C++ net.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall net::HttpNetworkTransaction::*)(int)>,void __cdecl(net::HttpNetworkTransaction *,int),base::internal::TypeList<base::internal::UnretainedWrapper<net::HttpNetworkTransaction> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::internal::UnretainedWrapper<net::HttpNetworkTransaction> > >,base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall net::HttpNetworkTransaction::*)(int)>,base::internal::TypeList<net::HttpNetworkTransaction *,int const &> >,void __cdecl(int const &)>::Run(base::internal::BindStateBase * base, const int & <unbound_args_0>) 行 343 C++ net.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ net.dll!net::HttpStreamParser::OnIOComplete(int result) 行 391 C++ net.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall net::HttpStreamParser::*)(int)>,void __cdecl(net::HttpStreamParser *,int),base::internal::TypeList<base::WeakPtr<net::HttpStreamParser> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<net::HttpStreamParser> > >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall net::HttpStreamParser::*)(int)>,base::internal::TypeList<base::WeakPtr<net::HttpStreamParser> const &,int const &> >,void __cdecl(int const &)>::Run(base::internal::BindStateBase * base, const int & <unbound_args_0>) 行 343 C++ net.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ net.dll!net::TCPClientSocket::DidCompleteReadWrite(const base::Callback<void __cdecl(int)> & callback, int result) 行 364 C++ net.dll!net::TCPClientSocket::DidCompleteRead(const base::Callback<void __cdecl(int)> & callback, int result) 行 347 C++ net.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ net.dll!net::TCPSocketWin::DidSignalRead() 行 1048 C++ net.dll!net::TCPSocketWin::Core::ReadDelegate::OnObjectSignaled(void * object) 行 258 C++ base.dll!base::win::ObjectWatcher::Signal(base::win::ObjectWatcher::Delegate * delegate) 行 121 C++ base.dll!base::internal::RunnableAdapter<void (__thiscall base::win::ObjectWatcher::*)(base::win::ObjectWatcher::Delegate *)>::Run(base::win::ObjectWatcher * object, base::win::ObjectWatcher::Delegate * const & <args_0>) 行 176 C++ xhr发出send blob请求: XMLHttpRequest::createRequest 此时设置 request.setDownloadToFile(true);,告诉net层这玩意需要存在文件里  在xhr发出send blob请求后,content层根据request.setDownloadToFile标志,转到文件里,并且在repose里设置一个文件路径 > content.dll!content::RedirectToFileResourceHandler::OnWillStart(const GURL & url, bool * defer) 行 173 C++ content.dll!content::LayeredResourceHandler::OnWillStart(const GURL & url, bool * defer) 行 49 C++ content.dll!content::ThrottlingResourceHandler::OnWillStart(const GURL & url, bool * defer) 行 81 C++ content.dll!content::ResourceLoader::StartRequest() 行 161 C++ content.dll!content::ResourceDispatcherHostImpl::StartLoading(content::ResourceRequestInfoImpl * info, const linked_ptr<content::ResourceLoader> & loader) 行 2208 C++ content.dll!content::ResourceDispatcherHostImpl::BeginRequestInternal(scoped_ptr<net::URLRequest,base::DefaultDeleter<net::URLRequest> > request, scoped_ptr<content::ResourceHandler,base::DefaultDeleter<content::ResourceHandler> > handler) 行 2196 C++ content.dll!content::ResourceDispatcherHostImpl::BeginRequest(int request_id, const ResourceHostMsg_Request & request_data, IPC::Message * sync_result, int route_id) 行 1398 C++ content.dll!content::ResourceDispatcherHostImpl::OnRequestResource(int routing_id, int request_id, const ResourceHostMsg_Request & request_data) 行 1072 C++  在xhr发出send blob请求后,content层转到文件里 > content.dll!content::RedirectToFileResourceHandler::Writer::Writer(content::RedirectToFileResourceHandler * handler, scoped_ptr<net::FileStream,base::DefaultDeleter<net::FileStream> > file_stream, storage::ShareableFileReference * deletable_file) 行 68 C++ content.dll!content::RedirectToFileResourceHandler::DidCreateTemporaryFile(base::File::Error error_code, scoped_ptr<net::FileStream,base::DefaultDeleter<net::FileStream> > file_stream, storage::ShareableFileReference * deletable_file) 行 252 C++ content.dll!base::internal::RunnableAdapter<void (__thiscall content::RedirectToFileResourceHandler::*)(enum base::File::Error,scoped_ptr<net::FileStream,base::DefaultDeleter<net::FileStream> >,storage::ShareableFileReference *)>::Run(content::RedirectToFileResourceHandler * object, const base::File::Error & <args_0>, scoped_ptr<net::FileStream,base::DefaultDeleter<net::FileStream> > <args_1>, storage::ShareableFileReference * const & <args_2>) 行 176 C++ 然后在xhr结束后,在FileLoader发起网络请求后,storage层开始读取之前的本地路径 > storage.dll!storage::FileStreamReader::CreateForLocalFile(base::TaskRunner * task_runner, const base::FilePath & file_path, __int64 initial_offset, const base::Time & expected_modification_time) 行 31 C++ storage.dll!storage::`anonymous namespace'::FileStreamReaderProviderImpl::CreateForLocalFile(base::TaskRunner * task_runner, const base::FilePath & file_path, __int64 initial_offset, const base::Time & expected_modification_time) 行 37 C++ storage.dll!storage::BlobReader::CreateFileStreamReader(const storage::BlobDataItem & item, unsigned __int64 additional_offset) 行 526 C++ storage.dll!storage::BlobReader::GetOrCreateFileReaderAtIndex(unsigned int index) 行 511 C++ storage.dll!storage::BlobReader::CalculateSize(const base::Callback<void __cdecl(int)> & done) 行 74 C++ storage.dll!storage::BlobURLRequestJob::DidStart() 行 176 C++ storage.dll!base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(void)>::Run(storage::BlobURLRequestJob * object) 行 176 C++ 读到了本地路径下的blob内容 > storage.dll!storage::BlobReader::ReadFileItem(storage::FileStreamReader * reader, int bytes_to_read) 行 392 C++ storage.dll!storage::BlobReader::ReadItem() 行 352 C++ storage.dll!storage::BlobReader::ReadLoop(int * bytes_read) 行 301 C++ storage.dll!storage::BlobReader::Read(net::IOBuffer * buffer, unsigned int dest_size, int * bytes_read, base::Callback<void __cdecl(int)> done) 行 181 C++ storage.dll!storage::BlobURLRequestJob::ReadRawData(net::IOBuffer * dest, int dest_size, int * bytes_read) 行 93 C++ net.dll!net::URLRequestJob::ReadRawDataHelper(net::IOBuffer * buf, int buf_size, int * bytes_read) 行 838 C++ net.dll!net::URLRequestJob::Read(net::IOBuffer * buf, int buf_size, int * bytes_read) 行 120 C++ net.dll!net::URLRequest::Read(net::IOBuffer * dest, int dest_size, int * bytes_read) 行 744 C++ content.dll!content::ResourceLoader::ReadMore(int * bytes_read) 行 612 C++ content.dll!content::ResourceLoader::StartReading(bool is_continuation) 行 560 C++ content.dll!content::ResourceLoader::OnResponseStarted(net::URLRequest * unused) 行 358 C++ net.dll!net::URLRequest::NotifyResponseStarted() 行 819 C++ net.dll!net::URLRequestJob::NotifyHeadersComplete() 行 481 C++ storage.dll!storage::BlobURLRequestJob::HeadersCompleted(net::HttpStatusCode status_code) 行 314 C++ storage.dll!storage::BlobURLRequestJob::DidCalculateSize(int result) 行 220 C++ storage.dll!base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>::Run(storage::BlobURLRequestJob * object, const int & <args_0>) 行 176 C++ storage.dll!base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> const &,int const &> >::MakeItSo(base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)> runnable, const base::WeakPtr<storage::BlobURLRequestJob> & weak_ptr, const int & <args_0>) 行 304 C++ storage.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,void __cdecl(storage::BlobURLRequestJob *,int),base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> > >,base::internal::TypeList<base::internal::UnwrapTraits<base::WeakPtr<storage::BlobURLRequestJob> > >,base::internal::InvokeHelper<1,void,base::internal::RunnableAdapter<void (__thiscall storage::BlobURLRequestJob::*)(int)>,base::internal::TypeList<base::WeakPtr<storage::BlobURLRequestJob> const &,int const &> >,void __cdecl(int const &)>::Run(base::internal::BindStateBase * base, const int & <unbound_args_0>) 行 343 C++ storage.dll!base::Callback<void __cdecl(int)>::Run(const int & <args_0>) 行 396 C++ storage.dll!storage::BlobReader::DidCountSize() 行 295 C++ storage.dll!storage::BlobReader::DidGetFileItemLength(unsigned int index, __int64 result) 行 284 C++ storage.dll!base::internal::RunnableAdapter<void (__thiscall storage::BlobReader::*)(unsigned int,__int64)>::Run(storage::BlobReader * object, const unsigned int & <args_0>, const __int64 & <args_1>) 行 176 C++ 然后发消息给blink > webcore_shared.dll!blink::FileReaderLoader::didReceiveData(const char * data, unsigned int dataLength) 行 237 C++ webcore_shared.dll!blink::DocumentThreadableLoader::handleReceivedData(const char * data, unsigned int dataLength) 行 659 C++ webcore_shared.dll!blink::DocumentThreadableLoader::dataReceived(blink::Resource * resource, const char * data, unsigned int dataLength) 行 647 C++ webcore_shared.dll!blink::RawResource::appendData(const char * data, unsigned int length) 行 95 C++ webcore_shared.dll!blink::ResourceLoader::didReceiveData(blink::WebURLLoader * __formal, const char * data, int length, int encodedDataLength) 行 421 C++ content.dll!content::WebURLLoaderImpl::Context::OnReceivedData(scoped_ptr<content::RequestPeer::ReceivedData,base::DefaultDeleter<content::RequestPeer::ReceivedData> > data) 行 698 C++ content.dll!content::ResourceDispatcher::OnReceivedData(int request_id, int data_offset, int data_length, int encoded_data_length) 行 262 C++

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券