示例#1
0
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;
}
示例#2
0
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();
}
示例#3
0
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;
}
示例#4
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
}
示例#5
0
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;
    }
}