[BlackBerry] RefCounting ParsedCookie to avoid SegFaults
https://bugs.webkit.org/show_bug.cgi?id=111761

Patch by Otto Derek Cheung <otcheung@rim.com> on 2013-03-07
Reviewed by Rob Buis.

Source/WebCore:

Making necessary changes to ref count the ParsedCookie object.

Tested using the opera cookie test suite and the BB Browser cookie test suite.
Tested using the browser, visiting popular sites such as facebook, reddit, google etc
to ensure cookie functionality isn't changed.

* loader/blackberry/CookieJarBlackBerry.cpp:
(WebCore::getRawCookies):
* platform/blackberry/CookieDatabaseBackingStore/CookieDatabaseBackingStore.cpp:
(WebCore::CookieDatabaseBackingStore::insert):
(WebCore::CookieDatabaseBackingStore::update):
(WebCore::CookieDatabaseBackingStore::remove):
(WebCore::CookieDatabaseBackingStore::getCookiesFromDatabase):
(WebCore::CookieDatabaseBackingStore::invokeGetCookiesWithLimit):
(WebCore::CookieDatabaseBackingStore::invokeSendChangesToDatabase):
(WebCore::CookieDatabaseBackingStore::addToChangeQueue):
* platform/blackberry/CookieDatabaseBackingStore/CookieDatabaseBackingStore.h:
(CookieDatabaseBackingStore):
* platform/blackberry/CookieManager.cpp:
(WebCore::cookieSorter):
(WebCore::CookieManager::setCookies):
(WebCore::CookieManager::getCookie):
(WebCore::CookieManager::generateHtmlFragmentForCookies):
(WebCore::CookieManager::getRawCookies):
(WebCore::CookieManager::checkAndTreatCookie):
(WebCore::CookieManager::addCookieToMap):
(WebCore::CookieManager::getBackingStoreCookies):
(WebCore::CookieManager::findOrCreateCookieMap):
(WebCore::CookieManager::removeCookieWithName):
(WebCore::CookieManager::cookieLimitCleanUp):
* platform/blackberry/CookieManager.h:
* platform/blackberry/CookieMap.cpp:
(WebCore::CookieMap::addOrReplaceCookie):
(WebCore::CookieMap::removeCookieAtIndex):
(WebCore::CookieMap::removeCookie):
(WebCore::CookieMap::getAllCookies):
(WebCore::CookieMap::removeOldestCookie):
(WebCore::CookieMap::deleteAllCookiesAndDomains):
(WebCore::CookieMap::getAllChildCookies):
* platform/blackberry/CookieMap.h:
(CookieMap):
* platform/blackberry/CookieParser.cpp:
(WebCore):
(WebCore::CookieParser::parse):
(WebCore::CookieParser::parseOneCookie):
* platform/blackberry/CookieParser.h:
(CookieParser):
* platform/blackberry/ParsedCookie.cpp:
* platform/blackberry/ParsedCookie.h:
(ParsedCookie):
(WebCore::ParsedCookie::create):

Source/WebKit/blackberry:

Making necessary changes to ref-count the ParsedCookie object.

* Api/WebCookieJar.cpp:
(BlackBerry::WebKit::WebCookieJar::cookies):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@145163 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebPageProxy::exceededDatabaseQuota() needs to be serialized.
https://bugs.webkit.org/show_bug.cgi?id=111631.

Reviewed by Geoffrey Garen.

Previously, WebPageProxy::exceededDatabaseQuota() is called synchronously
with script execution in the WebProcess. Hence, it is never called in a
recursive manner.

In webkit2, we can have multiple WebProcesses concurrently triggering a
call to this function. While the function is waiting on feedback from a
UI dialog, the wait loop may re-enter the function to service a second
request to call this function from another WebProcess. This results in
problems where some of the WebProcesses will not get a proper reply, and
therefore hangs perpetually waiting for a non-forthcoming reply.

This changeset changes the function to queue the requests and ensure
that we do not recursively callback to the UI client.

* Platform/CoreIPC/HandleMessage.h:
(CoreIPC::callMemberFunction):
* UIProcess/WebPageProxy.cpp:
(ExceededDatabaseQuotaRecords):
(Record):
(WebKit::ExceededDatabaseQuotaRecords::areBeingProcessed):
(WebKit::ExceededDatabaseQuotaRecords::ExceededDatabaseQuotaRecords):
(WebKit::ExceededDatabaseQuotaRecords::~ExceededDatabaseQuotaRecords):
(WebKit::ExceededDatabaseQuotaRecords::shared):
(WebKit::ExceededDatabaseQuotaRecords::createRecord):
(WebKit::ExceededDatabaseQuotaRecords::add):
(WebKit::ExceededDatabaseQuotaRecords::next):
(WebKit::WebPageProxy::exceededDatabaseQuota):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@145164 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix commented out code in LayoutTests/http/tests/misc/delete-frame-during-readystatechange-with-gc-after-video-removal.html
https://bugs.webkit.org/show_bug.cgi?id=111800

Unreviewed.

* http/tests/misc/delete-frame-during-readystatechange-with-gc-after-video-removal.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@145165 268f45cc-cd09-0410-ab3c-d52691b4dbfc