CefRefPtr<CefResourceHandler> ClientHandler::GetResourceHandler( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request) { CEF_REQUIRE_IO_THREAD(); std::string url = request->GetURL(); if (url.find(kTestOrigin) == 0) { // Handle URLs in the test origin. std::string file_name, mime_type; if (ParseTestUrl(url, &file_name, &mime_type)) { if (file_name == "request.html") { // Show the request contents. std::string dump; DumpRequestContents(request, dump); std::string str = "<html><body bgcolor=\"white\"><pre>" + dump + "</pre></body></html>"; CefRefPtr<CefStreamReader> stream = CefStreamReader::CreateForData( static_cast<void*>(const_cast<char*>(str.c_str())), str.size()); DCHECK(stream.get()); return new CefStreamResourceHandler("text/html", stream); } else { // Load the resource from file. CefRefPtr<CefStreamReader> stream = GetBinaryResourceReader(file_name.c_str()); if (stream.get()) return new CefStreamResourceHandler(mime_type, stream); } } } return NULL; }
CefRefPtr<CefResourceHandler> ClientHandler::GetResourceHandler( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request) { std::string url = request->GetURL(); if (url.find(kTestOrigin) == 0) { // Handle URLs in the test origin. std::string file_name, mime_type; if (ParseTestUrl(url, &file_name, &mime_type)) { if (file_name == "request.html") { // Show the request contents. std::string dump; DumpRequestContents(request, dump); CefRefPtr<CefStreamReader> stream = CefStreamReader::CreateForData( static_cast<void*>(const_cast<char*>(dump.c_str())), dump.size()); ASSERT(stream.get()); return new CefStreamResourceHandler("text/plain", stream); } else { // Load the resource from file. CefRefPtr<CefStreamReader> stream = GetBinaryResourceReader(file_name.c_str()); if (stream.get()) return new CefStreamResourceHandler(mime_type, stream); } } } return NULL; }
bool ClientHandler::OnBeforeResourceLoad( CefRefPtr<CefBrowser> browser, CefRefPtr<CefRequest> request, CefString& redirectUrl, CefRefPtr<CefStreamReader>& resourceStream, CefRefPtr<CefResponse> response, int loadFlags) { std::string url = request->GetURL(); if (url.find(kTestOrigin) == 0) { // Handle URLs in the test origin. std::string file_name, mime_type; if (ParseTestUrl(url, &file_name, &mime_type)) { if (file_name == "request.html") { // Show the request contents. std::string dump; DumpRequestContents(request, dump); resourceStream = CefStreamReader::CreateForData( static_cast<void*>(const_cast<char*>(dump.c_str())), dump.size()); response->SetMimeType("text/plain"); response->SetStatus(200); } else { // Load the resource from file. resourceStream = GetBinaryResourceReader(file_name.c_str()); if (resourceStream.get()) { response->SetMimeType(mime_type); response->SetStatus(200); } } } } return false; }