bool logMessageHandler( int severity, const char* file, int line, size_t message_start, const std::string& str) { int androidSeverity = ANDROID_LOG_VERBOSE; switch(severity) { case logging::LOG_FATAL: androidSeverity = ANDROID_LOG_FATAL; break; case logging::LOG_ERROR_REPORT: case logging::LOG_ERROR: androidSeverity = ANDROID_LOG_ERROR; break; case logging::LOG_WARNING: androidSeverity = ANDROID_LOG_WARN; break; default: androidSeverity = ANDROID_LOG_VERBOSE; break; } android_printLog(androidSeverity, "chromium-libstagefright", "%s:%d: %s", file, line, str.c_str()); return false; }
void WebRequest::start() { ASSERT(m_loadState == Created, "Start called on a WebRequest not in CREATED state: (%s)", m_url.c_str()); #ifdef LOG_REQUESTS android_printLog(ANDROID_LOG_DEBUG, "KM", "(%p) start (%d) (%s)", this, ++remaining, m_url.c_str()); time(&m_startTime); #endif m_loadState = Started; if (m_interceptResponse != NULL) return handleInterceptedURL(); // Handle data urls before we send it off to the http stack if (m_request->url().SchemeIs("data")) return handleDataURL(m_request->url()); if (m_request->url().SchemeIs("browser")) return handleBrowserURL(m_request->url()); // Update load flags with settings from WebSettings int loadFlags = m_request->load_flags(); updateLoadFlags(loadFlags); m_request->set_load_flags(loadFlags); m_request->Start(); }
void WebRequest::finish(bool success) { m_runnableFactory.RevokeAll(); ASSERT(m_loadState < Finished, "(%p) called finish on an already finished WebRequest (%d) (%s)", this, m_loadState, m_url.c_str()); if (m_loadState >= Finished) return; #ifdef LOG_REQUESTS time_t finish; time(&finish); finish = finish - m_startTime; struct tm * timeinfo; char buffer[80]; timeinfo = localtime(&finish); strftime(buffer, 80, "Time: %M:%S",timeinfo); android_printLog(ANDROID_LOG_DEBUG, "KM", "(%p) finish (%d) (%s) (%d) (%s)", this, --remaining, buffer, success, m_url.c_str()); #endif // Make sure WebUrlLoaderClient doesn't delete us in the middle of this method. scoped_refptr<WebRequest> guard(this); m_loadState = Finished; if (success) { m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFinishLoading)); } else { if (m_interceptResponse == NULL) { OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get())); m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); } else { OwnPtr<WebResponse> webResponse(new WebResponse(m_url, m_interceptResponse->mimeType(), 0, m_interceptResponse->encoding(), m_interceptResponse->status())); m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); } } m_networkBuffer = 0; m_request = 0; m_urlLoader = 0; }
void WebRequest::start(bool isMainResource, bool isMainFrame) //SAMSUNG_CHANGES { ASSERT(m_loadState == Created, "Start called on a WebRequest not in CREATED state: (%s)", m_url.c_str()); #ifdef LOG_REQUESTS android_printLog(ANDROID_LOG_DEBUG, "KM", "(%p) start (%d) (%s)", this, ++remaining, m_url.c_str()); time(&m_startTime); #endif // SAMSUNG CHANGES : add_network_log LOGIFDEBUG("start() url(%s) isMainFrame(%d) isMainResource(%d)", m_url.c_str(), isMainResource, isMainFrame); //SAMSUNG_CHANGES >> m_isMainResource = isMainResource; m_isMainFrame = isMainFrame; //SAMSUNG_CHANGES << m_loadState = Started; if (m_interceptResponse != NULL) return handleInterceptedURL(); // Handle data urls before we send it off to the http stack if (m_request->url().SchemeIs("data")) return handleDataURL(m_request->url()); if (m_request->url().SchemeIs("browser")) return handleBrowserURL(m_request->url()); // Update load flags with settings from WebSettings int loadFlags = m_request->load_flags(); updateLoadFlags(loadFlags); m_request->set_load_flags(loadFlags); m_request->Start(); // SAMSUNG CHANGE: read timer start timer_.Start(base::TimeDelta::FromSeconds(kWebRequestReadTimeoutInSeconds), this, &WebRequest::OnReadTimeout); // SAMSUNG CHANGE }
void WebRequest::finish(bool success) { m_runnableFactory.RevokeAll(); ASSERT(m_loadState < Finished, "(%p) called finish on an already finished WebRequest (%d) (%s)", this, m_loadState, m_url.c_str()); if (m_loadState >= Finished) return; #ifdef LOG_REQUESTS time_t finish; time(&finish); finish = finish - m_startTime; struct tm * timeinfo; char buffer[80]; timeinfo = localtime(&finish); strftime(buffer, 80, "Time: %M:%S",timeinfo); android_printLog(ANDROID_LOG_DEBUG, "KM", "(%p) finish (%d) (%s) (%d) (%s)", this, --remaining, buffer, success, m_url.c_str()); #endif // SAMSUNG CHANGES : add_network_log LOGIFDEBUG("finish(%d) url(%s) isMainFrame(%d) isMainResource(%d)",success, m_url.c_str(), m_isMainFrame, m_isMainResource); // Make sure WebUrlLoaderClient doesn't delete us in the middle of this method. scoped_refptr<WebRequest> guard(this); // SAMSUNG CHANGE : reduce events in main thread >> #if _USE_SAMSUNG_PERFORMANCE_IMPROVE_ // send remaining data before close the connection if (m_BytesInBuffer > 0) sendDataReceivedEvent(true); // SAMSUNG CHANGE : reduce events in main thread << #endif m_loadState = Finished; if (success) { //SAMSUNG_CHANGES >> if(m_rssSniffingEnabled) { if( m_ShouldSniffFeed) { m_ShouldSniffFeed = false; m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didReceiveResponse, m_webResponse.release())); } } //SAMSUNG_CHANGES << m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFinishLoading)); } else { if (m_interceptResponse == NULL) { //SAMSUNG_CHANGES >> if(m_rssSniffingEnabled) { if( m_ShouldSniffFeed) { m_ShouldSniffFeed = false; m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didReceiveResponse, m_webResponse.release())); } } //SAMSUNG_CHANGES << OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get())); m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); } else { OwnPtr<WebResponse> webResponse(new WebResponse(m_url, m_interceptResponse->mimeType(), 0, m_interceptResponse->encoding(), m_interceptResponse->status())); m_urlLoader->maybeCallOnMainThread(NewRunnableMethod( m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release())); } } m_networkBuffer = 0; m_request = 0; m_urlLoader = 0; }
WebViewClientError ToWebViewClientError(net::Error error) { // Note: many net::Error constants don't have an obvious mapping. // These will be handled by the default case, ERROR_UNKNOWN. switch(error) { case ERR_UNSUPPORTED_AUTH_SCHEME: return ERROR_UNSUPPORTED_AUTH_SCHEME; case ERR_INVALID_AUTH_CREDENTIALS: case ERR_MISSING_AUTH_CREDENTIALS: case ERR_MISCONFIGURED_AUTH_ENVIRONMENT: return ERROR_AUTHENTICATION; case ERR_TOO_MANY_REDIRECTS: return ERROR_REDIRECT_LOOP; case ERR_UPLOAD_FILE_CHANGED: return ERROR_FILE_NOT_FOUND; case ERR_INVALID_URL: return ERROR_BAD_URL; case ERR_DISALLOWED_URL_SCHEME: case ERR_UNKNOWN_URL_SCHEME: return ERROR_UNSUPPORTED_SCHEME; case ERR_IO_PENDING: case ERR_NETWORK_IO_SUSPENDED: return ERROR_IO; case ERR_CONNECTION_TIMED_OUT: case ERR_TIMED_OUT: return ERROR_TIMEOUT; case ERR_FILE_TOO_BIG: return ERROR_FILE; case ERR_HOST_RESOLVER_QUEUE_TOO_LARGE: case ERR_INSUFFICIENT_RESOURCES: case ERR_OUT_OF_MEMORY: return ERROR_TOO_MANY_REQUESTS; case ERR_CONNECTION_CLOSED: case ERR_CONNECTION_RESET: case ERR_CONNECTION_REFUSED: case ERR_CONNECTION_ABORTED: case ERR_CONNECTION_FAILED: case ERR_SOCKET_NOT_CONNECTED: case ERR_CACHE_MISS: return ERROR_CONNECT; case ERR_ADDRESS_INVALID: case ERR_ADDRESS_UNREACHABLE: case ERR_NAME_NOT_RESOLVED: case ERR_NAME_RESOLUTION_FAILED: return ERROR_HOST_LOOKUP; case ERR_SSL_PROTOCOL_ERROR: case ERR_SSL_CLIENT_AUTH_CERT_NEEDED: case ERR_TUNNEL_CONNECTION_FAILED: case ERR_NO_SSL_VERSIONS_ENABLED: case ERR_SSL_VERSION_OR_CIPHER_MISMATCH: case ERR_SSL_RENEGOTIATION_REQUESTED: case ERR_CERT_ERROR_IN_SSL_RENEGOTIATION: case ERR_BAD_SSL_CLIENT_AUTH_CERT: case ERR_SSL_NO_RENEGOTIATION: case ERR_SSL_DECOMPRESSION_FAILURE_ALERT: case ERR_SSL_BAD_RECORD_MAC_ALERT: case ERR_SSL_UNSAFE_NEGOTIATION: case ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY: case ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED: case ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY: return ERROR_FAILED_SSL_HANDSHAKE; case ERR_PROXY_AUTH_UNSUPPORTED: case ERR_PROXY_AUTH_REQUESTED: case ERR_PROXY_CONNECTION_FAILED: case ERR_UNEXPECTED_PROXY_AUTH: return ERROR_PROXY_AUTHENTICATION; /* The certificate errors are handled by their own dialog * and don't need to be reported to the framework again. */ case ERR_CERT_COMMON_NAME_INVALID: case ERR_CERT_DATE_INVALID: case ERR_CERT_AUTHORITY_INVALID: case ERR_CERT_CONTAINS_ERRORS: case ERR_CERT_NO_REVOCATION_MECHANISM: case ERR_CERT_UNABLE_TO_CHECK_REVOCATION: case ERR_CERT_REVOKED: case ERR_CERT_INVALID: case ERR_CERT_WEAK_SIGNATURE_ALGORITHM: case ERR_CERT_NOT_IN_DNS: case ERR_CERT_NON_UNIQUE_NAME: return ERROR_OK; default: android_printLog(ANDROID_LOG_DEBUG, "chromium", "Unknown chromium error: %d", error); return ERROR_UNKNOWN; } }