diff options
Diffstat (limited to 'WebKit/android/WebCoreSupport')
6 files changed, 25 insertions, 9 deletions
diff --git a/WebKit/android/WebCoreSupport/ResourceLoaderAndroid.cpp b/WebKit/android/WebCoreSupport/ResourceLoaderAndroid.cpp index 3f2d9ee..7f54810 100644 --- a/WebKit/android/WebCoreSupport/ResourceLoaderAndroid.cpp +++ b/WebKit/android/WebCoreSupport/ResourceLoaderAndroid.cpp @@ -44,7 +44,8 @@ PassRefPtr<ResourceLoaderAndroid> ResourceLoaderAndroid::start( FrameLoaderClientAndroid* clientAndroid = static_cast<FrameLoaderClientAndroid*>(client); #if USE(CHROME_NETWORK_STACK) WebViewCore* webViewCore = WebViewCore::getWebViewCore(clientAndroid->getFrame()->view()); - return WebUrlLoader::start(client, handle, request, isMainResource, isSync, webViewCore->webRequestContext()); + bool isMainFrame = !(clientAndroid->getFrame()->tree() && clientAndroid->getFrame()->tree()->parent()); + return WebUrlLoader::start(client, handle, request, isMainResource, isMainFrame, isSync, webViewCore->webRequestContext()); #else return clientAndroid->webFrame()->startLoadingResource(handle, request, isMainResource, isSync); #endif diff --git a/WebKit/android/WebCoreSupport/WebCookieJar.cpp b/WebKit/android/WebCoreSupport/WebCookieJar.cpp index 9c1d7fa..99de67e 100644 --- a/WebKit/android/WebCoreSupport/WebCookieJar.cpp +++ b/WebKit/android/WebCoreSupport/WebCookieJar.cpp @@ -31,9 +31,16 @@ #include "WebRequestContext.h" #include "WebUrlLoaderClient.h" - +#include <cutils/log.h> #include <dirent.h> +#undef ASSERT +#define ASSERT(assertion, ...) do \ + if (!(assertion)) { \ + android_printLog(ANDROID_LOG_ERROR, __FILE__, __VA_ARGS__); \ + } \ +while (0) + namespace android { static WTF::Mutex instanceMutex; @@ -193,16 +200,21 @@ public: Task* callback = NewRunnableMethod(this, &FlushSemaphore::Callback); ioThread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( monster, &net::CookieMonster::FlushStore, callback)); + } else { + Callback(); } } // Block until the given number of callbacks has been made. void Wait(int numCallbacks) { AutoLock al(m_lock); + int lastCount = m_count; while (m_count < numCallbacks) { // TODO(husky): Maybe use TimedWait() here? But it's not obvious what // to do if the flush fails. Might be okay just to let the OS kill us. m_condition.Wait(); + ASSERT(lastCount != m_count, "Wait finished without incrementing m_count %d %d", m_count, lastCount); + lastCount = m_count; } m_count -= numCallbacks; } diff --git a/WebKit/android/WebCoreSupport/WebUrlLoader.cpp b/WebKit/android/WebCoreSupport/WebUrlLoader.cpp index 531619a..0c90bc5 100644 --- a/WebKit/android/WebCoreSupport/WebUrlLoader.cpp +++ b/WebKit/android/WebCoreSupport/WebUrlLoader.cpp @@ -45,7 +45,7 @@ WebUrlLoader::~WebUrlLoader() } PassRefPtr<WebUrlLoader> WebUrlLoader::start(FrameLoaderClient* client, WebCore::ResourceHandle* resourceHandle, - const WebCore::ResourceRequest& resourceRequest, bool isMainResource, bool isSync, WebRequestContext* context) + const WebCore::ResourceRequest& resourceRequest, bool isMainResource, bool isMainFrame, bool isSync, WebRequestContext* context) { FrameLoaderClientAndroid* androidClient = static_cast<FrameLoaderClientAndroid*>(client); WebFrame* webFrame = androidClient->webFrame(); @@ -58,7 +58,7 @@ PassRefPtr<WebUrlLoader> WebUrlLoader::start(FrameLoaderClient* client, WebCore: webFrame->maybeSavePassword(androidClient->getFrame(), resourceRequest); RefPtr<WebUrlLoader> loader = WebUrlLoader::create(webFrame, resourceHandle, resourceRequest); - loader->m_loaderClient->start(isMainResource, isSync, context); + loader->m_loaderClient->start(isMainResource, isMainFrame, isSync, context); return loader.release(); } diff --git a/WebKit/android/WebCoreSupport/WebUrlLoader.h b/WebKit/android/WebCoreSupport/WebUrlLoader.h index 73c022a..dd88e73 100644 --- a/WebKit/android/WebCoreSupport/WebUrlLoader.h +++ b/WebKit/android/WebCoreSupport/WebUrlLoader.h @@ -39,7 +39,7 @@ class WebRequestContext; class WebUrlLoader : public ResourceLoaderAndroid { public: virtual ~WebUrlLoader(); - static PassRefPtr<WebUrlLoader> start(FrameLoaderClient* client, WebCore::ResourceHandle*, const WebCore::ResourceRequest&, bool isMainResource, bool sync, WebRequestContext*); + static PassRefPtr<WebUrlLoader> start(FrameLoaderClient* client, WebCore::ResourceHandle*, const WebCore::ResourceRequest&, bool isMainResource, bool isMainFrame, bool sync, WebRequestContext*); virtual void cancel(); virtual void downloadFile(); diff --git a/WebKit/android/WebCoreSupport/WebUrlLoaderClient.cpp b/WebKit/android/WebCoreSupport/WebUrlLoaderClient.cpp index dd1d972..05e728b 100644 --- a/WebKit/android/WebCoreSupport/WebUrlLoaderClient.cpp +++ b/WebKit/android/WebCoreSupport/WebUrlLoaderClient.cpp @@ -101,6 +101,7 @@ WebUrlLoaderClient::WebUrlLoaderClient(WebFrame* webFrame, WebCore::ResourceHand : m_webFrame(webFrame) , m_resourceHandle(resourceHandle) , m_isMainResource(false) + , m_isMainFrame(false) , m_isCertMimeType(false) , m_cancelling(false) , m_sync(false) @@ -162,7 +163,7 @@ WebUrlLoaderClient::WebUrlLoaderClient(WebFrame* webFrame, WebCore::ResourceHand } } -bool WebUrlLoaderClient::start(bool isMainResource, bool sync, WebRequestContext* context) +bool WebUrlLoaderClient::start(bool isMainResource, bool isMainFrame, bool sync, WebRequestContext* context) { base::Thread* thread = ioThread(); if (!thread) { @@ -170,6 +171,7 @@ bool WebUrlLoaderClient::start(bool isMainResource, bool sync, WebRequestContext } m_isMainResource = isMainResource; + m_isMainFrame = isMainFrame; m_sync = sync; if (m_sync) { AutoLock autoLock(*syncLock()); @@ -354,8 +356,8 @@ void WebUrlLoaderClient::didReceiveResponse(PassOwnPtr<WebResponse> webResponse) m_response = webResponse; m_resourceHandle->client()->didReceiveResponse(m_resourceHandle.get(), m_response->createResourceResponse()); - if (m_isMainResource) { - // If we got an SSL certificate, tell the WebView about it. + // Set the main page's certificate to WebView. + if (m_isMainResource && m_isMainFrame) { const net::SSLInfo& ssl_info = m_response->getSslInfo(); if (ssl_info.is_valid()) { std::vector<std::string> chain_bytes; diff --git a/WebKit/android/WebCoreSupport/WebUrlLoaderClient.h b/WebKit/android/WebCoreSupport/WebUrlLoaderClient.h index 59ec28b..dc101db 100644 --- a/WebKit/android/WebCoreSupport/WebUrlLoaderClient.h +++ b/WebKit/android/WebCoreSupport/WebUrlLoaderClient.h @@ -66,7 +66,7 @@ public: WebUrlLoaderClient(WebFrame*, WebCore::ResourceHandle*, const WebCore::ResourceRequest&); // Called from WebCore, will be forwarded to the IO thread - bool start(bool isMainResource, bool sync, WebRequestContext*); + bool start(bool isMainResource, bool isMainFrame, bool sync, WebRequestContext*); void cancel(); void downloadFile(); void pauseLoad(bool pause); @@ -104,6 +104,7 @@ private: WebFrame* m_webFrame; RefPtr<WebCore::ResourceHandle> m_resourceHandle; bool m_isMainResource; + bool m_isMainFrame; bool m_isCertMimeType; bool m_cancelling; bool m_sync; |