前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webkit和blink在blob机制上不同的地方

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

作者头像
龙泉寺扫地僧
发布2019-02-20 10:55:11
1.3K0
发布2019-02-20 10:55:11
举报
文章被收录于专栏:盟主来了盟主来了

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++

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年09月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档