VirtualBox

Ignore:
Timestamp:
Jan 31, 2022 1:08:33 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
149618
Message:

Shared Clipboard: Implemented backend callbacks and a dedicated backend context, together with a new testcase which mocks HGCM to also test the guest-side clipboard code (disabled by default for now). Work in progress, only tested on Linux so far.

Location:
trunk/src/VBox/HostServices/SharedClipboard/testcase
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedClipboard/testcase/Makefile.kmk

    r93401 r93495  
    2020
    2121if defined(VBOX_WITH_TESTCASES) && !defined(VBOX_ONLY_ADDITIONS) && !defined(VBOX_ONLY_SDK)
     22
     23 if 0
     24        #
     25        # Testcase which mocks HGCM to also test the VbglR3-side of Shared Clipboard.
     26        #
     27        # Goal is to use and test as much guest side code as possible as a self-contained
     28        # binary on the host here.
     29        #
     30        # Note: No #ifdef TESTCASE hacks or similar allowed, has to run
     31        #       without #ifdef modifications to the core code!
     32        #
     33        PROGRAMS += tstClipboardMockHGCM
     34        tstClipboardMockHGCM_TEMPLATE = VBOXR3TSTEXE
     35        tstClipboardMockHGCM_DEFS     = VBOX_WITH_HGCM VBOX_WITH_SHARED_CLIPBOARD
     36        tstClipboardMockHGCM_SOURCES  = \
     37                ../VBoxSharedClipboardSvc.cpp \
     38                $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp \
     39                $(PATH_ROOT)/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp \
     40                $(PATH_ROOT)/src/VBox/HostServices/common/message.cpp \
     41                tstClipboardMockHGCM.cpp
     42        tstClipboardMockHGCM_LIBS     = $(LIB_RUNTIME)
     43
     44        if1of ($(KBUILD_TARGET), linux)
     45         tstClipboardMockHGCM_SOURCES.linux  += \
     46                $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp \
     47                ../VBoxSharedClipboardSvc-x11.cpp
     48         tstClipboardMockHGCM_LIBPATH = \
     49                $(VBOX_LIBPATH_X11)
     50         tstClipboardMockHGCM_LIBS   += \
     51                Xt \
     52                X11
     53        endif
     54
     55        tstClipboardMockHGCM_SOURCES.darwin += ../VBoxSharedClipboardSvc-darwin.cpp
     56        tstClipboardMockHGCM_SOURCES.win    += ../VBoxSharedClipboardSvc-win.cpp
     57
     58        tstClipboardMockHGCM_CLEAN           = $(tstClipboardMockHGCM_0_OUTDIR)/tstClipboardMockHGCM.run
     59
     60        if defined(VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS)
     61         tstClipboardMockHGCM_DEFS    += VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
     62         tstClipboardMockHGCM_SOURCES += \
     63                ../VBoxSharedClipboardSvc-transfers.cpp \
     64         $(PATH_ROOT)/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp
     65        endif
     66 endif
    2267
    2368 #
  • trunk/src/VBox/HostServices/SharedClipboard/testcase/tstClipboardServiceHost.cpp

    r93115 r93495  
    310310}
    311311
    312 int ShClBackendInit(VBOXHGCMSVCFNTABLE *) { return VINF_SUCCESS; }
    313 void ShClBackendDestroy() { }
    314 int ShClBackendDisconnect(PSHCLCLIENT) { return VINF_SUCCESS; }
    315 int ShClBackendConnect(PSHCLCLIENT, bool) { return VINF_SUCCESS; }
    316 int ShClBackendFormatAnnounce(PSHCLCLIENT, SHCLFORMATS) { AssertFailed(); return VINF_SUCCESS; }
    317 int ShClBackendReadData(PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t, unsigned int *) { AssertFailed(); return VERR_WRONG_ORDER; }
    318 int ShClBackendWriteData(PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t) { AssertFailed(); return VINF_SUCCESS; }
    319 int ShClBackendSync(PSHCLCLIENT) { return VINF_SUCCESS; }
     312int ShClBackendInit(PSHCLBACKEND, VBOXHGCMSVCFNTABLE *) { return VINF_SUCCESS; }
     313void ShClBackendDestroy(PSHCLBACKEND) { }
     314int ShClBackendDisconnect(PSHCLBACKEND, PSHCLCLIENT) { return VINF_SUCCESS; }
     315int ShClBackendConnect(PSHCLBACKEND, PSHCLCLIENT, bool) { return VINF_SUCCESS; }
     316int ShClBackendFormatAnnounce(PSHCLBACKEND, PSHCLCLIENT, SHCLFORMATS) { AssertFailed(); return VINF_SUCCESS; }
     317int ShClBackendReadData(PSHCLBACKEND, PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t, unsigned int *) { AssertFailed(); return VERR_WRONG_ORDER; }
     318int ShClBackendWriteData(PSHCLBACKEND, PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t) { AssertFailed(); return VINF_SUCCESS; }
     319int ShClBackendSync(PSHCLBACKEND, PSHCLCLIENT) { return VINF_SUCCESS; }
    320320
    321321#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    322 int ShClBackendTransferCreate(PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
    323 int ShClBackendTransferDestroy(PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
    324 int ShClBackendTransferGetRoots(PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
     322int ShClBackendTransferCreate(PSHCLBACKEND, PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
     323int ShClBackendTransferDestroy(PSHCLBACKEND, PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
     324int ShClBackendTransferGetRoots(PSHCLBACKEND, PSHCLCLIENT, PSHCLTRANSFER) { return VINF_SUCCESS; }
    325325#endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */
    326326
  • trunk/src/VBox/HostServices/SharedClipboard/testcase/tstClipboardServiceImpl.cpp

    r93401 r93495  
    2727#include <iprt/test.h>
    2828
    29 extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad (VBOXHGCMSVCFNTABLE *ptable);
     29extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad(VBOXHGCMSVCFNTABLE *ptable);
    3030
    3131static SHCLCLIENT g_Client;
     
    5555}
    5656
    57 int ShClBackendInit(VBOXHGCMSVCFNTABLE *) { return VINF_SUCCESS; }
    58 void ShClBackendDestroy(void) { }
    59 int ShClBackendDisconnect(PSHCLCLIENT) { return VINF_SUCCESS; }
    60 int ShClBackendConnect(PSHCLCLIENT, bool) { return VINF_SUCCESS; }
    61 int ShClBackendFormatAnnounce(PSHCLCLIENT, SHCLFORMATS) { AssertFailed(); return VINF_SUCCESS; }
    62 int ShClBackendReadData(PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t, unsigned int *) { AssertFailed(); return VERR_WRONG_ORDER; }
    63 int ShClBackendWriteData(PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t) { AssertFailed(); return VINF_SUCCESS; }
    64 int ShClBackendSync(PSHCLCLIENT) { return VINF_SUCCESS; }
     57int ShClBackendInit(PSHCLBACKEND, VBOXHGCMSVCFNTABLE *) { return VINF_SUCCESS; }
     58void ShClBackendDestroy(PSHCLBACKEND) { }
     59int ShClBackendDisconnect(PSHCLBACKEND, PSHCLCLIENT) { return VINF_SUCCESS; }
     60int ShClBackendConnect(PSHCLBACKEND, PSHCLCLIENT, bool) { return VINF_SUCCESS; }
     61int ShClBackendFormatAnnounce(PSHCLBACKEND, PSHCLCLIENT, SHCLFORMATS) { AssertFailed(); return VINF_SUCCESS; }
     62int ShClBackendReadData(PSHCLBACKEND, PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t, unsigned int *) { AssertFailed(); return VERR_WRONG_ORDER; }
     63int ShClBackendWriteData(PSHCLBACKEND, PSHCLCLIENT, PSHCLCLIENTCMDCTX, SHCLFORMAT, void *, uint32_t) { AssertFailed(); return VINF_SUCCESS; }
     64int ShClBackendSync(PSHCLBACKEND, PSHCLCLIENT) { return VINF_SUCCESS; }
    6565
    6666static void testAnnounceAndReadData(void)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette