diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index 7479180f80e..6e912d35e29 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -226,8 +226,16 @@ static HRESULT WINAPI OmNavigator_get_opsProfile(IOmNavigator *iface, IHTMLOpsPr
static HRESULT WINAPI OmNavigator_toString(IOmNavigator *iface, BSTR *String)
{
OmNavigator *This = OMNAVIGATOR_THIS(iface);
- FIXME("(%p)->(%p)\n", This, String);
- return E_NOTIMPL;
+
+ static const WCHAR objectW[] = {'[','o','b','j','e','c','t',']',0};
+
+ TRACE("(%p)->(%p)\n", This, String);
+
+ if(!String)
+ return E_INVALIDARG;
+
+ *String = SysAllocString(objectW);
+ return *String ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI OmNavigator_get_cpuClass(IOmNavigator *iface, BSTR *p)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index e10e41a278b..e9dfef75e3f 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2492,6 +2492,15 @@ static void test_navigator(IHTMLDocument2 *doc)
ok(!memcmp(bstr, v40, sizeof(v40)), "appVersion is %s\n", wine_dbgstr_w(bstr));
SysFreeString(bstr);
+ hres = IOmNavigator_toString(navigator, NULL);
+ ok(hres == E_INVALIDARG, "toString failed: %08x\n", hres);
+
+ bstr = NULL;
+ hres = IOmNavigator_toString(navigator, &bstr);
+ ok(hres == S_OK, "toString failed: %08x\n", hres);
+ ok(!strcmp_wa(bstr, "[object]"), "toString returned %s\n", wine_dbgstr_w(bstr));
+ SysFreeString(bstr);
+
ref = IOmNavigator_Release(navigator);
ok(!ref, "navigator should be destroyed here\n");
}