Commit 910cac49 authored by David Hedberg's avatar David Hedberg Committed by Alexandre Julliard

shdocvw: Implement DocHostUIHandler::TranslateAccelerator.

parent a63c81d4
...@@ -620,8 +620,13 @@ static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 * ...@@ -620,8 +620,13 @@ static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *
LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID) LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID)
{ {
DocHost *This = impl_from_IDocHostUIHandler2(iface); DocHost *This = impl_from_IDocHostUIHandler2(iface);
FIXME("(%p)->(%p %p %d)\n", This, lpMsg, pguidCmdGroup, nCmdID); HRESULT hr = S_FALSE;
return E_NOTIMPL; TRACE("(%p)->(%p %p %d)\n", This, lpMsg, pguidCmdGroup, nCmdID);
if(This->hostui)
hr = IDocHostUIHandler_TranslateAccelerator(This->hostui, lpMsg, pguidCmdGroup, nCmdID);
return hr;
} }
static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface, static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface,
......
...@@ -124,8 +124,12 @@ DEFINE_EXPECT(QueryStatus_SETPROGRESSTEXT); ...@@ -124,8 +124,12 @@ DEFINE_EXPECT(QueryStatus_SETPROGRESSTEXT);
DEFINE_EXPECT(QueryStatus_STOP); DEFINE_EXPECT(QueryStatus_STOP);
DEFINE_EXPECT(DocHost_EnableModeless_TRUE); DEFINE_EXPECT(DocHost_EnableModeless_TRUE);
DEFINE_EXPECT(DocHost_EnableModeless_FALSE); DEFINE_EXPECT(DocHost_EnableModeless_FALSE);
DEFINE_EXPECT(DocHost_TranslateAccelerator);
DEFINE_EXPECT(GetDropTarget); DEFINE_EXPECT(GetDropTarget);
DEFINE_EXPECT(TranslateUrl); DEFINE_EXPECT(TranslateUrl);
DEFINE_EXPECT(ShowUI);
DEFINE_EXPECT(HideUI);
DEFINE_EXPECT(RequestUIActivate);
static const WCHAR wszItem[] = {'i','t','e','m',0}; static const WCHAR wszItem[] = {'i','t','e','m',0};
static const WCHAR emptyW[] = {0}; static const WCHAR emptyW[] = {0};
...@@ -135,6 +139,7 @@ static IWebBrowser2 *wb; ...@@ -135,6 +139,7 @@ static IWebBrowser2 *wb;
static HWND container_hwnd, shell_embedding_hwnd; static HWND container_hwnd, shell_embedding_hwnd;
static BOOL is_downloading, is_first_load; static BOOL is_downloading, is_first_load;
static HRESULT hr_dochost_TranslateAccelerator = E_NOTIMPL;
static const char *current_url; static const char *current_url;
#define DWL_EXPECT_BEFORE_NAVIGATE 0x01 #define DWL_EXPECT_BEFORE_NAVIGATE 0x01
...@@ -1140,7 +1145,7 @@ static HRESULT WINAPI InPlaceSite_OnInPlaceDeactivateEx(IOleInPlaceSiteEx *iface ...@@ -1140,7 +1145,7 @@ static HRESULT WINAPI InPlaceSite_OnInPlaceDeactivateEx(IOleInPlaceSiteEx *iface
static HRESULT WINAPI InPlaceSite_RequestUIActivate(IOleInPlaceSiteEx *iface) static HRESULT WINAPI InPlaceSite_RequestUIActivate(IOleInPlaceSiteEx *iface)
{ {
ok(0, "unexpected call\n"); CHECK_EXPECT2(RequestUIActivate);
return S_OK; return S_OK;
} }
...@@ -1207,13 +1212,13 @@ static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD d ...@@ -1207,13 +1212,13 @@ static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD d
IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget,
IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc) IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc)
{ {
ok(0, "unexpected call\n"); CHECK_EXPECT(ShowUI);
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI DocHostUIHandler_HideUI(IDocHostUIHandler2 *iface) static HRESULT WINAPI DocHostUIHandler_HideUI(IDocHostUIHandler2 *iface)
{ {
ok(0, "unexpected call\n"); CHECK_EXPECT(HideUI);
return E_NOTIMPL; return E_NOTIMPL;
} }
...@@ -1255,8 +1260,12 @@ static HRESULT WINAPI DocHostUIHandler_ResizeBorder(IDocHostUIHandler2 *iface, L ...@@ -1255,8 +1260,12 @@ static HRESULT WINAPI DocHostUIHandler_ResizeBorder(IDocHostUIHandler2 *iface, L
static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *iface, LPMSG lpMsg, static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *iface, LPMSG lpMsg,
const GUID *pguidCmdGroup, DWORD nCmdID) const GUID *pguidCmdGroup, DWORD nCmdID)
{ {
ok(0, "unexpected call\n"); CHECK_EXPECT(DocHost_TranslateAccelerator);
return E_NOTIMPL; ok(pguidCmdGroup != NULL, "Got NULL pguidCmdGroup.\n");
if(pguidCmdGroup)
ok(IsEqualGUID(pguidCmdGroup, &CGID_MSHTML), "Unexpected pguidCmdGroup\n");
ok(lpMsg != NULL, "Got NULL lpMsg.\n");
return hr_dochost_TranslateAccelerator;
} }
static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface, static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface,
...@@ -2505,6 +2514,75 @@ static void test_QueryInterface(IUnknown *unk) ...@@ -2505,6 +2514,75 @@ static void test_QueryInterface(IUnknown *unk)
} }
static void test_TranslateAccelerator(IUnknown *unk)
{
IOleObject *obj_doc;
IDispatch *disp_doc;
HRESULT hres;
DWORD keycode;
MSG msg_a = {
container_hwnd,
0, 0, 0,
GetTickCount(),
{5, 5}
};
test_Navigate2(unk);
disp_doc = get_document(unk);
hres = IDispatch_QueryInterface(disp_doc, &IID_IOleObject, (void**)&obj_doc);
ok(hres == S_OK, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) {
IOleClientSite *doc_clientsite;
hres = IOleObject_GetClientSite(obj_doc, &doc_clientsite);
ok(hres == S_OK, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) {
IDocHostUIHandler2 *dochost;
IUnknown *unk_test;
hres = IOleClientSite_QueryInterface(doc_clientsite, &IID_IOleInPlaceFrame, (void**)&unk_test);
ok(hres == E_NOINTERFACE, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) IUnknown_Release(unk_test);
hres = IOleClientSite_QueryInterface(doc_clientsite, &IID_IDocHostShowUI, (void**)&unk_test);
todo_wine ok(hres == S_OK, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) IUnknown_Release(unk_test);
hres = IOleClientSite_QueryInterface(doc_clientsite, &IID_IDocHostUIHandler, (void**)&unk_test);
ok(hres == S_OK, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) IUnknown_Release(unk_test);
hres = IOleClientSite_QueryInterface(doc_clientsite, &IID_IDocHostUIHandler2, (void**)&dochost);
ok(hres == S_OK, "Got 0x%08x\n", hres);
if(SUCCEEDED(hres)) {
msg_a.message = WM_KEYDOWN;
hr_dochost_TranslateAccelerator = 0xdeadbeef;
for(keycode = 0; keycode <= 0x100; keycode++) {
msg_a.wParam = keycode;
SET_EXPECT(DocHost_TranslateAccelerator);
hres = IDocHostUIHandler_TranslateAccelerator(dochost, &msg_a, &CGID_MSHTML, 1234);
ok(hres == 0xdeadbeef, "Got 0x%08x\n", hres);
CHECK_CALLED(DocHost_TranslateAccelerator);
}
hr_dochost_TranslateAccelerator = E_NOTIMPL;
SET_EXPECT(DocHost_TranslateAccelerator);
hres = IDocHostUIHandler_TranslateAccelerator(dochost, &msg_a, &CGID_MSHTML, 1234);
ok(hres == E_NOTIMPL, "Got 0x%08x\n", hres);
CHECK_CALLED(DocHost_TranslateAccelerator);
IDocHostUIHandler2_Release(dochost);
}
IOleClientSite_Release(doc_clientsite);
}
IOleObject_Release(obj_doc);
}
IDispatch_Release(disp_doc);
}
static void test_WebBrowser(BOOL do_download) static void test_WebBrowser(BOOL do_download)
{ {
IUnknown *unk = NULL; IUnknown *unk = NULL;
...@@ -2559,6 +2637,7 @@ static void test_WebBrowser(BOOL do_download) ...@@ -2559,6 +2637,7 @@ static void test_WebBrowser(BOOL do_download)
test_Navigate2(unk); test_Navigate2(unk);
test_download(DWL_EXPECT_BEFORE_NAVIGATE); test_download(DWL_EXPECT_BEFORE_NAVIGATE);
test_TranslateAccelerator(unk);
doc2 = get_document(unk); doc2 = get_document(unk);
ok(doc == doc2, "doc != doc2\n"); ok(doc == doc2, "doc != doc2\n");
IDispatch_Release(doc2); IDispatch_Release(doc2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment