<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[178669] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/178669">178669</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2015-01-19 12:58:09 -0800 (Mon, 19 Jan 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>[Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
https://bugs.webkit.org/show_bug.cgi?id=139906
Reviewed by Dean Jackson.
WebKit on Windows was creating uninitialized VARIANT structures, then attempting
to use them. This patch fixes that.
Source/WebKit/win:
Identified by dom/html/level2/html/HTMLIFrameElement03.html (and others)
* COMEnumVariant.h:
(COMEnumVariant<ContainerType>::Next):
* COMPropertyBag.h:
(HashType>::Read):
* DefaultPolicyDelegate.cpp:
(DefaultPolicyDelegate::decidePolicyForNavigationAction):
* WebActionPropertyBag.cpp:
(WebActionPropertyBag::Read):
* WebDatabaseManager.cpp:
(DatabaseDetailsPropertyBag::Read):
* WebElementPropertyBag.cpp:
(WebElementPropertyBag::Read):
* WebFrame.cpp:
(EnumChildFrames::Next):
* WebView.cpp:
(WebView::notifyDidAddIcon):
Tools:
* DumpRenderTree/win/AccessibilityControllerWin.cpp:
(findAccessibleObjectById):
(AccessibilityController::focusedElement):
(logEventProc):
(notificationListenerProc):
* DumpRenderTree/win/AccessibilityUIElementWin.cpp:
(AccessibilityUIElement::getChildAtIndex):
(AccessibilityUIElement::titleUIElement):
(self):
(AccessibilityUIElement::role):
(AccessibilityUIElement::valueDescription):
(accessibilityState):
(AccessibilityUIElement::isChecked):
* DumpRenderTree/win/DumpRenderTree.cpp:
(dumpFrameScrollPosition):
(dumpFramesAsText):
* DumpRenderTree/win/PolicyDelegate.cpp:
(PolicyDelegate::decidePolicyForNavigationAction):
* DumpRenderTree/win/UIDelegate.cpp:
(UIDelegate::exceededDatabaseQuota):
* WinLauncher/Common.cpp:
(setWindowText):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKitwinCOMEnumVarianth">trunk/Source/WebKit/win/COMEnumVariant.h</a></li>
<li><a href="#trunkSourceWebKitwinCOMPropertyBagh">trunk/Source/WebKit/win/COMPropertyBag.h</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDefaultPolicyDelegatecpp">trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebActionPropertyBagcpp">trunk/Source/WebKit/win/WebActionPropertyBag.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebDatabaseManagercpp">trunk/Source/WebKit/win/WebDatabaseManager.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebElementPropertyBagcpp">trunk/Source/WebKit/win/WebElementPropertyBag.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebFramecpp">trunk/Source/WebKit/win/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreewinAccessibilityControllerWincpp">trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinAccessibilityUIElementWincpp">trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinDumpRenderTreecpp">trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinPolicyDelegatecpp">trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinUIDelegatecpp">trunk/Tools/DumpRenderTree/win/UIDelegate.cpp</a></li>
<li><a href="#trunkToolsWinLauncherCommoncpp">trunk/Tools/WinLauncher/Common.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKitwinCOMEnumVarianth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/COMEnumVariant.h (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/COMEnumVariant.h        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/COMEnumVariant.h        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx"> if (!rgVar)
</span><span class="cx"> return E_POINTER;
</span><span class="cx"> for (unsigned i = 0 ; i < celt; i++)
</span><del>- VariantInit(&rgVar[i]);
</del><ins>+ ::VariantInit(&rgVar[i]);
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < celt; i++) {
</span><span class="cx"> if (m_currentPos == m_container.end())
</span></span></pre></div>
<a id="trunkSourceWebKitwinCOMPropertyBagh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/COMPropertyBag.h (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/COMPropertyBag.h        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/COMPropertyBag.h        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> HRESULT hr = S_OK;
</span><span class="cx">
</span><span class="cx"> for (ULONG i = 0; i < cProperties; ++i) {
</span><del>- VariantInit(&pvarValue[i]);
</del><ins>+ ::VariantInit(&pvarValue[i]);
</ins><span class="cx"> pvarValue[i].vt = pPropBag[i].vt;
</span><span class="cx"> phrError[i] = Read(pPropBag[i].pstrName, &pvarValue[i], pErrorLog);
</span><span class="cx"> if (FAILED(phrError[i]))
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/ChangeLog        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2015-01-19 Brent Fulgham <bfulgham@apple.com>
+
+ [Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
+ https://bugs.webkit.org/show_bug.cgi?id=139906
+
+ Reviewed by Dean Jackson.
+
+ WebKit on Windows was creating uninitialized VARIANT structures, then attempting
+ to use them. This patch fixes that.
+
+ Identified by dom/html/level2/html/HTMLIFrameElement03.html (and others)
+
+ * COMEnumVariant.h:
+ (COMEnumVariant<ContainerType>::Next):
+ * COMPropertyBag.h:
+ (HashType>::Read):
+ * DefaultPolicyDelegate.cpp:
+ (DefaultPolicyDelegate::decidePolicyForNavigationAction):
+ * WebActionPropertyBag.cpp:
+ (WebActionPropertyBag::Read):
+ * WebDatabaseManager.cpp:
+ (DatabaseDetailsPropertyBag::Read):
+ * WebElementPropertyBag.cpp:
+ (WebElementPropertyBag::Read):
+ * WebFrame.cpp:
+ (EnumChildFrames::Next):
+ * WebView.cpp:
+ (WebView::notifyDidAddIcon):
+
</ins><span class="cx"> 2015-01-15 Csaba Osztrogonác <ossy@webkit.org>
</span><span class="cx">
</span><span class="cx"> Remove ENABLE(SQL_DATABASE) guards
</span></span></pre></div>
<a id="trunkSourceWebKitwinDefaultPolicyDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include "WebKitDLL.h"
</span><span class="cx"> #include "DefaultPolicyDelegate.h"
</span><span class="cx">
</span><ins>+#include <comutil.h>
</ins><span class="cx"> #include <WebCore/BString.h>
</span><span class="cx"> #include <WebCore/COMPtr.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="lines">@@ -97,17 +98,13 @@
</span><span class="cx"> return newRef;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-HRESULT STDMETHODCALLTYPE DefaultPolicyDelegate::decidePolicyForNavigationAction(
- /*[in]*/ IWebView* webView,
- /*[in]*/ IPropertyBag* actionInformation,
- /*[in]*/ IWebURLRequest* request,
- /*[in]*/ IWebFrame* /*frame*/,
- /*[in]*/ IWebPolicyDecisionListener* listener)
</del><ins>+HRESULT DefaultPolicyDelegate::decidePolicyForNavigationAction(IWebView* webView, IPropertyBag* actionInformation,
+ IWebURLRequest* request, IWebFrame* /*frame*/, IWebPolicyDecisionListener* listener)
</ins><span class="cx"> {
</span><span class="cx"> int navType = 0;
</span><del>- VARIANT var;
- if (SUCCEEDED(actionInformation->Read(WebActionNavigationTypeKey, &var, 0))) {
- V_VT(&var) = VT_I4;
</del><ins>+ _variant_t var;
+ if (SUCCEEDED(actionInformation->Read(WebActionNavigationTypeKey, &var.GetVARIANT(), nullptr))) {
+ var.ChangeType(VT_I4, nullptr);
</ins><span class="cx"> navType = V_I4(&var);
</span><span class="cx"> }
</span><span class="cx"> COMPtr<IWebViewPrivate> wvPrivate(Query, webView);
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebActionPropertyBagcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebActionPropertyBag.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebActionPropertyBag.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebActionPropertyBag.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -105,12 +105,12 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-HRESULT STDMETHODCALLTYPE WebActionPropertyBag::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog * /*pErrorLog*/)
</del><ins>+HRESULT WebActionPropertyBag::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog * /*pErrorLog*/)
</ins><span class="cx"> {
</span><span class="cx"> if (!pszPropName)
</span><span class="cx"> return E_POINTER;
</span><span class="cx">
</span><del>- VariantClear(pVar);
</del><ins>+ ::VariantClear(pVar);
</ins><span class="cx">
</span><span class="cx"> if (isEqual(pszPropName, WebActionNavigationTypeKey)) {
</span><span class="cx"> V_VT(pVar) = VT_I4;
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebDatabaseManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebDatabaseManager.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebDatabaseManager.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebDatabaseManager.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -112,12 +112,12 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // IPropertyBag --------------------------------------------------------------------
</span><del>-HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)
</del><ins>+HRESULT DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)
</ins><span class="cx"> {
</span><span class="cx"> if (!pszPropName || !pVar)
</span><span class="cx"> return E_POINTER;
</span><span class="cx">
</span><del>- VariantInit(pVar);
</del><ins>+ ::VariantInit(pVar);
</ins><span class="cx">
</span><span class="cx"> if (isEqual(pszPropName, WebDatabaseDisplayNameKey)) {
</span><span class="cx"> COMVariantSetter<String>::setVariant(pVar, m_details.displayName());
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebElementPropertyBagcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebElementPropertyBag.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebElementPropertyBag.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebElementPropertyBag.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> return E_FAIL;
</span><span class="cx">
</span><span class="cx"> BSTR key = (BSTR)pszPropName;
</span><del>- VariantClear(pVar);
</del><ins>+ ::VariantClear(pVar);
</ins><span class="cx"> if (isEqual(WebElementDOMNodeKey, key)) {
</span><span class="cx"> IDOMNode* node = DOMNode::createInstance(m_result->innerNonSharedNode());
</span><span class="cx"> V_VT(pVar) = VT_UNKNOWN;
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebFrame.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebFrame.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebFrame.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -793,7 +793,7 @@
</span><span class="cx"> *pCeltFetched = 0;
</span><span class="cx"> if (!rgVar)
</span><span class="cx"> return E_POINTER;
</span><del>- VariantInit(rgVar);
</del><ins>+ ::VariantInit(rgVar);
</ins><span class="cx"> if (!celt || celt > 1)
</span><span class="cx"> return S_FALSE;
</span><span class="cx"> if (!m_frame || !m_curChild)
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebView.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -2926,7 +2926,7 @@
</span><span class="cx"> return E_FAIL;
</span><span class="cx">
</span><span class="cx"> COMVariant iconUserInfoURL;
</span><del>- hr = propertyBag->Read(WebIconDatabase::iconDatabaseNotificationUserInfoURLKey(), &iconUserInfoURL, 0);
</del><ins>+ hr = propertyBag->Read(WebIconDatabase::iconDatabaseNotificationUserInfoURLKey(), &iconUserInfoURL, nullptr);
</ins><span class="cx"> if (FAILED(hr))
</span><span class="cx"> return hr;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/ChangeLog        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2015-01-19 Brent Fulgham <bfulgham@apple.com>
+
+ [Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
+ https://bugs.webkit.org/show_bug.cgi?id=139906
+
+ Reviewed by Dean Jackson.
+
+ WebKit on Windows was creating uninitialized VARIANT structures, then attempting
+ to use them. This patch fixes that.
+
+ * DumpRenderTree/win/AccessibilityControllerWin.cpp:
+ (findAccessibleObjectById):
+ (AccessibilityController::focusedElement):
+ (logEventProc):
+ (notificationListenerProc):
+ * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
+ (AccessibilityUIElement::getChildAtIndex):
+ (AccessibilityUIElement::titleUIElement):
+ (self):
+ (AccessibilityUIElement::role):
+ (AccessibilityUIElement::valueDescription):
+ (accessibilityState):
+ (AccessibilityUIElement::isChecked):
+ * DumpRenderTree/win/DumpRenderTree.cpp:
+ (dumpFrameScrollPosition):
+ (dumpFramesAsText):
+ * DumpRenderTree/win/PolicyDelegate.cpp:
+ (PolicyDelegate::decidePolicyForNavigationAction):
+ * DumpRenderTree/win/UIDelegate.cpp:
+ (UIDelegate::exceededDatabaseQuota):
+ * WinLauncher/Common.cpp:
+ (setWindowText):
+
</ins><span class="cx"> 2015-01-19 Dean Jackson <dino@apple.com>
</span><span class="cx">
</span><span class="cx"> Add "override" to fix the build with newer clangs.
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinAccessibilityControllerWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -90,22 +90,18 @@
</span><span class="cx"> if (!comparable)
</span><span class="cx"> return 0;
</span><span class="cx">
</span><del>- VARIANT value;
- ::VariantInit(&value);
-
</del><ins>+ COMVariant navigationType;
+ _variant_t value;
</ins><span class="cx"> _bstr_t elementIdAttributeKey(L"AXDRTElementIdAttribute");
</span><del>- if (SUCCEEDED(comparable->get_attribute(elementIdAttributeKey, &value))) {
</del><ins>+ if (SUCCEEDED(comparable->get_attribute(elementIdAttributeKey, &value.GetVARIANT()))) {
</ins><span class="cx"> ASSERT(V_VT(&value) == VT_BSTR);
</span><del>- if (VARCMP_EQ == ::VarBstrCmp(value.bstrVal, idAttribute, LOCALE_USER_DEFAULT, 0)) {
- ::VariantClear(&value);
</del><ins>+ if (VARCMP_EQ == ::VarBstrCmp(value.bstrVal, idAttribute, LOCALE_USER_DEFAULT, 0))
</ins><span class="cx"> return parentIAccessible;
</span><del>- }
</del><span class="cx"> }
</span><del>- ::VariantClear(&value);
</del><span class="cx">
</span><span class="cx"> long childCount = parentObject.childrenCount();
</span><span class="cx"> if (!childCount)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> COMPtr<IAccessible> result;
</span><span class="cx"> for (long i = 0; i < childCount; ++i) {
</span><span class="lines">@@ -116,7 +112,7 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
</span><span class="lines">@@ -136,9 +132,9 @@
</span><span class="cx"> {
</span><span class="cx"> COMPtr<IAccessible> rootAccessible = rootElement().platformUIElement();
</span><span class="cx">
</span><del>- VARIANT vFocus;
- if (FAILED(rootAccessible->get_accFocus(&vFocus)))
- return 0;
</del><ins>+ _variant_t vFocus;
+ if (FAILED(rootAccessible->get_accFocus(&vFocus.GetVARIANT())))
+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> if (V_VT(&vFocus) == VT_I4) {
</span><span class="cx"> ASSERT(V_I4(&vFocus) == CHILDID_SELF);
</span><span class="lines">@@ -179,18 +175,16 @@
</span><span class="cx"> // Get the accessible object for this event.
</span><span class="cx"> COMPtr<IAccessible> parentObject;
</span><span class="cx">
</span><del>- VARIANT vChild;
- VariantInit(&vChild);
</del><ins>+ _variant_t vChild;
</ins><span class="cx">
</span><del>- HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild);
</del><ins>+ HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild.GetVARIANT());
</ins><span class="cx"> ASSERT(SUCCEEDED(hr));
</span><span class="cx">
</span><span class="cx"> // Get the name of the focused element, and log it to stdout.
</span><del>- BSTR nameBSTR;
- hr = parentObject->get_accName(vChild, &nameBSTR);
</del><ins>+ _bstr_t nameBSTR;
+ hr = parentObject->get_accName(vChild, &nameBSTR.GetBSTR());
</ins><span class="cx"> ASSERT(SUCCEEDED(hr));
</span><del>- wstring name(nameBSTR, ::SysStringLen(nameBSTR));
- SysFreeString(nameBSTR);
</del><ins>+ wstring name(nameBSTR, nameBSTR.length());
</ins><span class="cx">
</span><span class="cx"> switch (event) {
</span><span class="cx"> case EVENT_OBJECT_FOCUS:
</span><span class="lines">@@ -202,11 +196,10 @@
</span><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case EVENT_OBJECT_VALUECHANGE: {
</span><del>- BSTR valueBSTR;
- hr = parentObject->get_accValue(vChild, &valueBSTR);
</del><ins>+ _bstr_t valueBSTR;
+ hr = parentObject->get_accValue(vChild, &valueBSTR.GetBSTR());
</ins><span class="cx"> ASSERT(SUCCEEDED(hr));
</span><del>- wstring value(valueBSTR, ::SysStringLen(valueBSTR));
- SysFreeString(valueBSTR);
</del><ins>+ wstring value(valueBSTR, valueBSTR.length());
</ins><span class="cx">
</span><span class="cx"> printf("Received value change event for object '%S', value '%S'.\n", name.c_str(), value.c_str());
</span><span class="cx"> break;
</span><span class="lines">@@ -220,8 +213,6 @@
</span><span class="cx"> printf("Received unknown event for object '%S'.\n", name.c_str());
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>-
- VariantClear(&vChild);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void AccessibilityController::setLogFocusEvents(bool logFocusEvents)
</span><span class="lines">@@ -323,24 +314,17 @@
</span><span class="cx"> // Get the accessible object for this event.
</span><span class="cx"> COMPtr<IAccessible> parentObject;
</span><span class="cx">
</span><del>- VARIANT vChild;
- VariantInit(&vChild);
-
- HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild);
</del><ins>+ _variant_t vChild;
+ HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild.GetVARIANT());
</ins><span class="cx"> if (FAILED(hr) || !parentObject)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> COMPtr<IDispatch> childDispatch;
</span><del>- if (FAILED(parentObject->get_accChild(vChild, &childDispatch))) {
- VariantClear(&vChild);
</del><ins>+ if (FAILED(parentObject->get_accChild(vChild, &childDispatch)))
</ins><span class="cx"> return;
</span><del>- }
</del><span class="cx">
</span><span class="cx"> COMPtr<IAccessible> childAccessible(Query, childDispatch);
</span><del>-
</del><span class="cx"> sharedFrameLoadDelegate->accessibilityController()->winNotificationReceived(childAccessible, stringEvent(event));
</span><del>-
- VariantClear(&vChild);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinAccessibilityUIElementWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -145,16 +145,15 @@
</span><span class="cx"> AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
</span><span class="cx"> {
</span><span class="cx"> if (!m_element)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> COMPtr<IDispatch> child;
</span><del>- VARIANT vChild;
- ::VariantInit(&vChild);
</del><ins>+ _variant_t vChild;
</ins><span class="cx"> V_VT(&vChild) = VT_I4;
</span><span class="cx"> // In MSAA, index 0 is the object itself.
</span><span class="cx"> V_I4(&vChild) = index + 1;
</span><del>- if (FAILED(m_element->get_accChild(vChild, &child)))
- return 0;
</del><ins>+ if (FAILED(m_element->get_accChild(vChild.GetVARIANT(), &child)))
+ return nullptr;
</ins><span class="cx"> return COMPtr<IAccessible>(Query, child);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -187,31 +186,22 @@
</span><span class="cx"> if (!comparable)
</span><span class="cx"> return 0;
</span><span class="cx">
</span><del>- VARIANT value;
- ::VariantInit(&value);
-
</del><ins>+ _variant_t value;
</ins><span class="cx"> _bstr_t titleUIElementAttributeKey(L"AXTitleUIElementAttribute");
</span><del>- if (FAILED(comparable->get_attribute(titleUIElementAttributeKey, &value))) {
- ::VariantClear(&value);
- return 0;
- }
</del><ins>+ if (FAILED(comparable->get_attribute(titleUIElementAttributeKey, &value.GetVARIANT())))
+ return nullptr;
</ins><span class="cx">
</span><del>- if (V_VT(&value) == VT_EMPTY) {
- ::VariantClear(&value);
- return 0;
- }
</del><ins>+ if (V_VT(&value) == VT_EMPTY)
+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> ASSERT(V_VT(&value) == VT_UNKNOWN);
</span><span class="cx">
</span><del>- if (V_VT(&value) != VT_UNKNOWN) {
- ::VariantClear(&value);
- return 0;
- }
</del><ins>+ if (V_VT(&value) != VT_UNKNOWN)
+ return nullptr;
</ins><span class="cx">
</span><span class="cx"> COMPtr<IAccessible> titleElement(Query, value.punkVal);
</span><span class="cx"> if (value.punkVal)
</span><span class="cx"> value.punkVal->Release();
</span><del>- ::VariantClear(&value);
</del><span class="cx">
</span><span class="cx"> return titleElement;
</span><span class="cx"> }
</span><span class="lines">@@ -240,11 +230,10 @@
</span><span class="cx">
</span><span class="cx"> static VARIANT& self()
</span><span class="cx"> {
</span><del>- static VARIANT vSelf;
</del><ins>+ static _variant_t vSelf;
</ins><span class="cx"> static bool haveInitialized;
</span><span class="cx">
</span><span class="cx"> if (!haveInitialized) {
</span><del>- ::VariantInit(&vSelf);
</del><span class="cx"> V_VT(&vSelf) = VT_I4;
</span><span class="cx"> V_I4(&vSelf) = CHILDID_SELF;
</span><span class="cx"> }
</span><span class="lines">@@ -256,15 +245,15 @@
</span><span class="cx"> if (!m_element)
</span><span class="cx"> return JSStringCreateWithCharacters(0, 0);
</span><span class="cx">
</span><del>- VARIANT vRole;
- if (FAILED(m_element->get_accRole(self(), &vRole)))
- return JSStringCreateWithCharacters(0, 0);
</del><ins>+ _variant_t vRole;
+ if (FAILED(m_element->get_accRole(self(), &vRole.GetVARIANT())))
+ return JSStringCreateWithCharacters(nullptr, 0);
</ins><span class="cx">
</span><span class="cx"> ASSERT(V_VT(&vRole) == VT_I4 || V_VT(&vRole) == VT_BSTR);
</span><span class="cx">
</span><span class="cx"> wstring result;
</span><span class="cx"> if (V_VT(&vRole) == VT_I4) {
</span><del>- unsigned roleTextLength = ::GetRoleText(V_I4(&vRole), 0, 0) + 1;
</del><ins>+ unsigned roleTextLength = ::GetRoleText(V_I4(&vRole), nullptr, 0) + 1;
</ins><span class="cx">
</span><span class="cx"> Vector<TCHAR> roleText(roleTextLength);
</span><span class="cx">
</span><span class="lines">@@ -274,8 +263,6 @@
</span><span class="cx"> } else if (V_VT(&vRole) == VT_BSTR)
</span><span class="cx"> result = wstring(V_BSTR(&vRole), ::SysStringLen(V_BSTR(&vRole)));
</span><span class="cx">
</span><del>- ::VariantClear(&vRole);
-
</del><span class="cx"> return JSStringCreateWithCharacters(result.data(), result.length());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -394,19 +381,18 @@
</span><span class="cx">
</span><span class="cx"> JSStringRef AccessibilityUIElement::valueDescription()
</span><span class="cx"> {
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static DWORD accessibilityState(COMPtr<IAccessible> element)
</span><span class="cx"> {
</span><del>- VARIANT state;
- if (FAILED(element->get_accState(self(), &state)))
</del><ins>+ _variant_t state;
+ if (FAILED(element->get_accState(self(), &state.GetVARIANT())))
</ins><span class="cx"> return 0;
</span><span class="cx">
</span><span class="cx"> ASSERT(V_VT(&state) == VT_I4);
</span><span class="cx">
</span><span class="cx"> DWORD result = state.lVal;
</span><del>- VariantClear(&state);
</del><span class="cx">
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="lines">@@ -448,8 +434,8 @@
</span><span class="cx"> if (!m_element)
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- VARIANT vState;
- if (FAILED(m_element->get_accState(self(), &vState)))
</del><ins>+ _variant_t vState;
+ if (FAILED(m_element->get_accState(self(), &vState.GetVARIANT())))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> return vState.lVal & STATE_SYSTEM_CHECKED;
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinDumpRenderTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -412,14 +412,12 @@
</span><span class="cx"> COMPtr<IEnumVARIANT> enumKids;
</span><span class="cx"> if (FAILED(frame->childFrames(&enumKids)))
</span><span class="cx"> return;
</span><del>- VARIANT var;
- VariantInit(&var);
- while (enumKids->Next(1, &var, 0) == S_OK) {
</del><ins>+ _variant_t var;
+ while (enumKids->Next(1, &var.GetVARIANT(), nullptr) == S_OK) {
</ins><span class="cx"> ASSERT(V_VT(&var) == VT_UNKNOWN);
</span><span class="cx"> COMPtr<IWebFrame> framePtr;
</span><span class="cx"> V_UNKNOWN(&var)->QueryInterface(IID_IWebFrame, (void**)&framePtr);
</span><span class="cx"> dumpFrameScrollPosition(framePtr.get());
</span><del>- VariantClear(&var);
</del><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -467,14 +465,12 @@
</span><span class="cx"> if (FAILED(frame->childFrames(&enumKids)))
</span><span class="cx"> return L"";
</span><span class="cx">
</span><del>- VARIANT var;
- ::VariantInit(&var);
- while (enumKids->Next(1, &var, 0) == S_OK) {
</del><ins>+ _variant_t var;
+ while (enumKids->Next(1, &var.GetVARIANT(), nullptr) == S_OK) {
</ins><span class="cx"> ASSERT(V_VT(&var) == VT_UNKNOWN);
</span><span class="cx"> COMPtr<IWebFrame> framePtr;
</span><span class="cx"> V_UNKNOWN(&var)->QueryInterface(IID_IWebFrame, (void**)&framePtr);
</span><span class="cx"> result.append(dumpFramesAsText(framePtr.get()));
</span><del>- ::VariantClear(&var);
</del><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinPolicyDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -90,20 +90,16 @@
</span><span class="cx"> return newRef;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-HRESULT PolicyDelegate::decidePolicyForNavigationAction(
- /*[in]*/ IWebView* /*webView*/,
- /*[in]*/ IPropertyBag* actionInformation,
- /*[in]*/ IWebURLRequest* request,
- /*[in]*/ IWebFrame* frame,
- /*[in]*/ IWebPolicyDecisionListener* listener)
</del><ins>+HRESULT PolicyDelegate::decidePolicyForNavigationAction(IWebView* /*webView*/, IPropertyBag* actionInformation,
+ IWebURLRequest* request, IWebFrame* frame, IWebPolicyDecisionListener* listener)
</ins><span class="cx"> {
</span><span class="cx"> _bstr_t url;
</span><span class="cx"> request->URL(&url.GetBSTR());
</span><span class="cx"> wstring wurl = urlSuitableForTestResult(wstring(url, url.length()));
</span><span class="cx">
</span><span class="cx"> int navType = 0;
</span><del>- VARIANT var;
- if (SUCCEEDED(actionInformation->Read(WebActionNavigationTypeKey, &var, 0))) {
</del><ins>+ _variant_t var;
+ if (SUCCEEDED(actionInformation->Read(WebActionNavigationTypeKey, &var.GetVARIANT(), nullptr))) {
</ins><span class="cx"> V_VT(&var) = VT_I4;
</span><span class="cx"> navType = V_I4(&var);
</span><span class="cx"> }
</span><span class="lines">@@ -134,11 +130,11 @@
</span><span class="cx">
</span><span class="cx"> wstring message = TEXT("Policy delegate: attempt to load ") + wurl + TEXT(" with navigation type '") + typeDescription + TEXT("'");
</span><span class="cx">
</span><del>- VARIANT actionElementVar;
- if (SUCCEEDED(actionInformation->Read(WebActionElementKey, &actionElementVar, 0))) {
</del><ins>+ _variant_t actionElementVar;
+ if (SUCCEEDED(actionInformation->Read(WebActionElementKey, &actionElementVar, nullptr))) {
</ins><span class="cx"> COMPtr<IPropertyBag> actionElement(Query, V_UNKNOWN(&actionElementVar));
</span><del>- VARIANT originatingNodeVar;
- if (SUCCEEDED(actionElement->Read(WebElementDOMNodeKey, &originatingNodeVar, 0))) {
</del><ins>+ _variant_t originatingNodeVar;
+ if (SUCCEEDED(actionElement->Read(WebElementDOMNodeKey, &originatingNodeVar, nullptr))) {
</ins><span class="cx"> COMPtr<IDOMNode> originatingNode(Query, V_UNKNOWN(&originatingNodeVar));
</span><span class="cx"> message += TEXT(" originating from ") + dumpPath(originatingNode.get());
</span><span class="cx"> }
</span><span class="lines">@@ -153,7 +149,7 @@
</span><span class="cx">
</span><span class="cx"> if (m_controllerToNotifyDone) {
</span><span class="cx"> m_controllerToNotifyDone->notifyDone();
</span><del>- m_controllerToNotifyDone = 0;
</del><ins>+ m_controllerToNotifyDone = nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return S_OK;
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinUIDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/UIDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/UIDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/UIDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -523,8 +523,8 @@
</span><span class="cx"> origin->setQuota(defaultQuota);
</span><span class="cx"> return S_OK;
</span><span class="cx"> }
</span><del>- VARIANT var;
- detailsBag->Read(WebDatabaseUsageKey, &var, 0);
</del><ins>+ _variant_t var;
+ detailsBag->Read(WebDatabaseUsageKey, &var.GetVARIANT(), nullptr);
</ins><span class="cx"> unsigned long long expectedSize = V_UI8(&var);
</span><span class="cx"> unsigned long long newQuota = defaultQuota;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkToolsWinLauncherCommoncpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WinLauncher/Common.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WinLauncher/Common.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/WinLauncher/Common.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -665,19 +665,15 @@
</span><span class="cx">
</span><span class="cx"> static void setWindowText(HWND dialog, UINT field, IPropertyBagPtr statistics, const _bstr_t& key)
</span><span class="cx"> {
</span><del>- VARIANT var;
- ::VariantInit(&var);
</del><ins>+ _variant_t var;
</ins><span class="cx"> V_VT(&var) = VT_UI8;
</span><del>- if (FAILED(statistics->Read(key, &var, 0))) {
- ::VariantClear(&var);
</del><ins>+ if (FAILED(statistics->Read(key, &var.GetVARIANT(), nullptr)))
</ins><span class="cx"> return;
</span><del>- }
</del><span class="cx">
</span><span class="cx"> unsigned long long value = V_UI8(&var);
</span><span class="cx"> String valueStr = WTF::String::number(value);
</span><span class="cx">
</span><span class="cx"> setWindowText(dialog, field, _bstr_t(valueStr.utf8().data()));
</span><del>- ::VariantClear(&var);
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void setWindowText(HWND dialog, UINT field, CFDictionaryRef dictionary, CFStringRef key, UINT& total)
</span></span></pre>
</div>
</div>
</body>
</html>