diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 4206e9cf94d..f64bd82cbb7 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -1903,6 +1903,22 @@ static void _test_comment_text(unsigned line, IUnknown *unk, const char *extext)
SysFreeString(text);
}
+#define create_attr(a,b) _create_attr(__LINE__,a,b)
+static IHTMLDOMAttribute *_create_attr(unsigned line, IUnknown *unk, const char *name)
+{
+ IHTMLDocument5 *doc = _get_htmldoc5_iface(line, unk);
+ BSTR str = a2bstr("Test");
+ IHTMLDOMAttribute *attr;
+ HRESULT hres;
+
+ hres = IHTMLDocument5_createAttribute(doc, str, &attr);
+ ok_(__FILE__,line)(hres == S_OK, "createAttribute dailed: %08x\n", hres);
+ SysFreeString(str);
+ IHTMLDocument5_Release(doc);
+
+ return attr;
+}
+
#define test_attr_specified(a,b) _test_attr_specified(__LINE__,a,b)
static void _test_attr_specified(unsigned line, IHTMLDOMAttribute *attr, VARIANT_BOOL expected)
{
@@ -8493,7 +8509,7 @@ static void test_elems(IHTMLDocument2 *doc)
IHTMLWindow2_Release(window);
}
-static void test_attr(IHTMLElement *elem)
+static void test_attr(IHTMLDocument2 *doc, IHTMLElement *elem)
{
IHTMLDOMAttribute *attr, *attr2;
VARIANT v;
@@ -8575,6 +8591,31 @@ static void test_attr(IHTMLElement *elem)
test_attr_specified(attr, VARIANT_FALSE);
test_attr_expando(attr, VARIANT_FALSE);
IHTMLDOMAttribute_Release(attr);
+
+ /* Test created, detached attribute. */
+ attr = create_attr((IUnknown*)doc, "Test");
+
+ test_disp((IUnknown*)attr, &DIID_DispHTMLDOMAttribute, "[object]");
+ test_ifaces((IUnknown*)attr, attr_iids);
+ test_no_iface((IUnknown*)attr, &IID_IHTMLDOMNode);
+
+ test_attr_node_name(attr, "Test");
+ test_attr_expando(attr, VARIANT_FALSE);
+
+ get_attr_node_value(attr, &v, VT_EMPTY);
+
+ V_VT(&v) = VT_I4;
+ V_I4(&v) = 1;
+ put_attr_node_value(attr, v);
+
+ get_attr_node_value(attr, &v, VT_I4);
+ ok(V_I4(&v) == 1, "nodeValue = %d\n", V_I4(&v));
+
+ V_VT(&v) = VT_EMPTY;
+ put_attr_node_value(attr, v);
+ get_attr_node_value(attr, &v, VT_EMPTY);
+
+ IHTMLDOMAttribute_Release(attr);
}
static void test_blocked(IHTMLDocument2 *doc, IHTMLElement *outer_elem)
@@ -8796,7 +8837,7 @@ static void test_elems2(IHTMLDocument2 *doc)
IHTMLElement_Release(elem2);
}
- test_attr(div);
+ test_attr(doc, div);
test_blocked(doc, div);
test_elem_names(doc);
@@ -8807,7 +8848,6 @@ static void test_create_elems(IHTMLDocument2 *doc)
{
IHTMLElement *elem, *body, *elem2;
IHTMLDOMNode *node, *node2, *node3, *comment;
- IHTMLDOMAttribute *attr;
IHTMLDocument5 *doc5;
IDispatch *disp;
VARIANT var;
@@ -8911,36 +8951,6 @@ static void test_create_elems(IHTMLDocument2 *doc)
IHTMLDOMNode_Release(comment);
}
- str = a2bstr("Test");
- hres = IHTMLDocument5_createAttribute(doc5, str, &attr);
- ok(hres == S_OK, "createAttribute dailed: %08x\n", hres);
- SysFreeString(str);
- if(SUCCEEDED(hres)) {
- VARIANT v;
-
- test_disp((IUnknown*)attr, &DIID_DispHTMLDOMAttribute, "[object]");
- test_ifaces((IUnknown*)attr, attr_iids);
- test_no_iface((IUnknown*)attr, &IID_IHTMLDOMNode);
-
- test_attr_node_name(attr, "Test");
- test_attr_expando(attr, VARIANT_FALSE);
-
- get_attr_node_value(attr, &v, VT_EMPTY);
-
- V_VT(&v) = VT_I4;
- V_I4(&v) = 1;
- put_attr_node_value(attr, v);
-
- get_attr_node_value(attr, &v, VT_I4);
- ok(V_I4(&v) == 1, "nodeValue = %d\n", V_I4(&v));
-
- V_VT(&v) = VT_EMPTY;
- put_attr_node_value(attr, v);
- get_attr_node_value(attr, &v, VT_EMPTY);
-
- IHTMLDOMAttribute_Release(attr);
- }
-
IHTMLDocument5_Release(doc5);
}