David Hedberg : shell32: Implement IExplorerBrowser:: SetOptions and IExplorerBrowser::GetOptions.

Alexandre Julliard julliard at winehq.org
Mon Aug 23 10:50:20 CDT 2010


Module: wine
Branch: master
Commit: 9c0260f2cb3e8a73e83b3a2ebdf7decfa62a6a14
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9c0260f2cb3e8a73e83b3a2ebdf7decfa62a6a14

Author: David Hedberg <david.hedberg at gmail.com>
Date:   Mon Aug 23 12:55:17 2010 +0200

shell32: Implement IExplorerBrowser::SetOptions and IExplorerBrowser::GetOptions.

---

 dlls/shell32/ebrowser.c       |   20 ++++++++++++++++----
 dlls/shell32/tests/ebrowser.c |   26 ++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/dlls/shell32/ebrowser.c b/dlls/shell32/ebrowser.c
index b2c4497..20b5363 100644
--- a/dlls/shell32/ebrowser.c
+++ b/dlls/shell32/ebrowser.c
@@ -42,6 +42,8 @@ typedef struct _ExplorerBrowserImpl {
     BOOL destroyed;
 
     HWND hwnd_main;
+
+    EXPLORER_BROWSER_OPTIONS eb_options;
 } ExplorerBrowserImpl;
 
 /**************************************************************************
@@ -258,18 +260,28 @@ static HRESULT WINAPI IExplorerBrowser_fnSetOptions(IExplorerBrowser *iface,
                                                     EXPLORER_BROWSER_OPTIONS dwFlag)
 {
     ExplorerBrowserImpl *This = (ExplorerBrowserImpl*)iface;
-    FIXME("stub, %p (0x%x)\n", This, dwFlag);
+    static const EXPLORER_BROWSER_OPTIONS unsupported_options =
+        EBO_SHOWFRAMES | EBO_ALWAYSNAVIGATE | EBO_NOWRAPPERWINDOW | EBO_HTMLSHAREPOINTVIEW;
 
-    return E_NOTIMPL;
+    TRACE("%p (0x%x)\n", This, dwFlag);
+
+    if(dwFlag & unsupported_options)
+        FIXME("Flags 0x%08x contains unsupported options.\n", dwFlag);
+
+    This->eb_options = dwFlag;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI IExplorerBrowser_fnGetOptions(IExplorerBrowser *iface,
                                                     EXPLORER_BROWSER_OPTIONS *pdwFlag)
 {
     ExplorerBrowserImpl *This = (ExplorerBrowserImpl*)iface;
-    FIXME("stub, %p (%p)\n", This, pdwFlag);
+    TRACE("%p (%p)\n", This, pdwFlag);
 
-    return E_NOTIMPL;
+    *pdwFlag = This->eb_options;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI IExplorerBrowser_fnBrowseToIDList(IExplorerBrowser *iface,
diff --git a/dlls/shell32/tests/ebrowser.c b/dlls/shell32/tests/ebrowser.c
index be993dd..8486645 100644
--- a/dlls/shell32/tests/ebrowser.c
+++ b/dlls/shell32/tests/ebrowser.c
@@ -277,6 +277,7 @@ static void test_basics(void)
     IExplorerBrowser *peb;
     IShellBrowser *psb;
     ULONG lres;
+    DWORD flags;
     HDWP hdwp;
     RECT rc;
     HRESULT hr;
@@ -332,6 +333,31 @@ static void test_basics(void)
     }
 
     IExplorerBrowser_Destroy(peb);
+    IExplorerBrowser_Release(peb);
+
+    /* GetOptions/SetOptions*/
+    ebrowser_instantiate(&peb);
+
+    if(0) {
+        /* Crashes on Windows 7 */
+        IExplorerBrowser_GetOptions(peb, NULL);
+    }
+
+    hr = IExplorerBrowser_GetOptions(peb, &flags);
+    ok(hr == S_OK, "got (0x%08x)\n", hr);
+    ok(flags == 0, "got (0x%08x)\n", flags);
+
+    /* Settings preserved through Initialize. */
+    hr = IExplorerBrowser_SetOptions(peb, 0xDEADBEEF);
+    ok(hr == S_OK, "got (0x%08x)\n", hr);
+
+    ebrowser_initialize(peb);
+
+    hr = IExplorerBrowser_GetOptions(peb, &flags);
+    ok(flags == 0xDEADBEEF, "got (0x%08x)\n", flags);
+    ok(hr == S_OK, "got (0x%08x)\n", hr);
+
+    IExplorerBrowser_Destroy(peb);
     lres = IExplorerBrowser_Release(peb);
     ok(lres == 0, "Got %d\n", lres);
 }




More information about the wine-cvs mailing list