Microdata tests are flaky
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Jul 2012 23:07:09 +0000 (23:07 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Jul 2012 23:07:09 +0000 (23:07 +0000)
commit52093626d5bc034f59acd60a36d8d9568aa2794f
tree965a71aaccb81e97bbea6f9748e0ca85677d7a24
parent5ea37b8a60683818022e9496b52eae0f83e6c25c
Microdata tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=90830

Reviewed by Antti Koivisto.

The bug was caused by SpaceSplitString's not copying on write properly.
Even if there was exactly one owner of the SpaceSplitString, we should still not modify
m_data since m_data is associated with a particular m_keyString in sharedDataMap().

The only situation in which we can safely modify m_data is when m_data's m_keyString is null
meaning that it had been unique'ed. Furthermore, this optimization had not been used for
class lists because class list's refCount is always zero as its ref and deref are forwarded
to the associated Element's ref and deref. This fix re-enables the optimization for class lists.

This behavior change is tested by existing microdata API tests. Without this patch,
some tests such as properties-collection-add-remove-property.html fail on the first run
when several tests were ran in the same WebKit instance.

* dom/SpaceSplitString.h:
(WebCore::SpaceSplitStringData::isUnique):
(WebCore::SpaceSplitString::ensureUnique):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@122163 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/dom/SpaceSplitString.h