Add wxFileSystemHandler for "data" scheme
This notably allows embedding images directly in HTML. Closes #24138.
This commit is contained in:
parent
68eaff5c02
commit
ca405352e0
14 changed files with 306 additions and 1 deletions
19
Makefile.in
19
Makefile.in
|
|
@ -603,6 +603,7 @@ ALL_BASE_HEADERS = \
|
||||||
wx/lzmastream.h \
|
wx/lzmastream.h \
|
||||||
wx/localedefs.h \
|
wx/localedefs.h \
|
||||||
wx/uilocale.h \
|
wx/uilocale.h \
|
||||||
|
wx/fs_data.h \
|
||||||
$(BASE_PLATFORM_HDR) \
|
$(BASE_PLATFORM_HDR) \
|
||||||
wx/fs_inet.h \
|
wx/fs_inet.h \
|
||||||
wx/protocol/file.h \
|
wx/protocol/file.h \
|
||||||
|
|
@ -789,6 +790,7 @@ ALL_PORTS_BASE_HEADERS = \
|
||||||
wx/lzmastream.h \
|
wx/lzmastream.h \
|
||||||
wx/localedefs.h \
|
wx/localedefs.h \
|
||||||
wx/uilocale.h \
|
wx/uilocale.h \
|
||||||
|
wx/fs_data.h \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
wx/unix/apptbase.h \
|
wx/unix/apptbase.h \
|
||||||
wx/unix/apptrait.h \
|
wx/unix/apptrait.h \
|
||||||
|
|
@ -925,6 +927,7 @@ ALL_BASE_SOURCES = \
|
||||||
src/common/secretstore.cpp \
|
src/common/secretstore.cpp \
|
||||||
src/common/lzmastream.cpp \
|
src/common/lzmastream.cpp \
|
||||||
src/common/uilocale.cpp \
|
src/common/uilocale.cpp \
|
||||||
|
src/common/fs_data.cpp \
|
||||||
src/common/fdiodispatcher.cpp \
|
src/common/fdiodispatcher.cpp \
|
||||||
src/common/selectdispatcher.cpp \
|
src/common/selectdispatcher.cpp \
|
||||||
src/unix/appunix.cpp \
|
src/unix/appunix.cpp \
|
||||||
|
|
@ -1130,6 +1133,7 @@ MONODLL_OBJECTS = \
|
||||||
monodll_common_secretstore.o \
|
monodll_common_secretstore.o \
|
||||||
monodll_lzmastream.o \
|
monodll_lzmastream.o \
|
||||||
monodll_common_uilocale.o \
|
monodll_common_uilocale.o \
|
||||||
|
monodll_fs_data.o \
|
||||||
$(__BASE_PLATFORM_SRC_OBJECTS) \
|
$(__BASE_PLATFORM_SRC_OBJECTS) \
|
||||||
monodll_event.o \
|
monodll_event.o \
|
||||||
monodll_fs_mem.o \
|
monodll_fs_mem.o \
|
||||||
|
|
@ -1289,6 +1293,7 @@ MONOLIB_OBJECTS = \
|
||||||
monolib_common_secretstore.o \
|
monolib_common_secretstore.o \
|
||||||
monolib_lzmastream.o \
|
monolib_lzmastream.o \
|
||||||
monolib_common_uilocale.o \
|
monolib_common_uilocale.o \
|
||||||
|
monolib_fs_data.o \
|
||||||
$(__BASE_PLATFORM_SRC_OBJECTS_1) \
|
$(__BASE_PLATFORM_SRC_OBJECTS_1) \
|
||||||
monolib_event.o \
|
monolib_event.o \
|
||||||
monolib_fs_mem.o \
|
monolib_fs_mem.o \
|
||||||
|
|
@ -1417,6 +1422,7 @@ BASEDLL_OBJECTS = \
|
||||||
basedll_common_secretstore.o \
|
basedll_common_secretstore.o \
|
||||||
basedll_lzmastream.o \
|
basedll_lzmastream.o \
|
||||||
basedll_common_uilocale.o \
|
basedll_common_uilocale.o \
|
||||||
|
basedll_fs_data.o \
|
||||||
$(__BASE_PLATFORM_SRC_OBJECTS_2) \
|
$(__BASE_PLATFORM_SRC_OBJECTS_2) \
|
||||||
basedll_event.o \
|
basedll_event.o \
|
||||||
basedll_fs_mem.o \
|
basedll_fs_mem.o \
|
||||||
|
|
@ -1527,6 +1533,7 @@ BASELIB_OBJECTS = \
|
||||||
baselib_common_secretstore.o \
|
baselib_common_secretstore.o \
|
||||||
baselib_lzmastream.o \
|
baselib_lzmastream.o \
|
||||||
baselib_common_uilocale.o \
|
baselib_common_uilocale.o \
|
||||||
|
baselib_fs_data.o \
|
||||||
$(__BASE_PLATFORM_SRC_OBJECTS_3) \
|
$(__BASE_PLATFORM_SRC_OBJECTS_3) \
|
||||||
baselib_event.o \
|
baselib_event.o \
|
||||||
baselib_fs_mem.o \
|
baselib_fs_mem.o \
|
||||||
|
|
@ -14966,6 +14973,9 @@ monodll_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(MONODLL_ODEP)
|
||||||
monodll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONODLL_ODEP)
|
monodll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONODLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
||||||
|
|
||||||
|
monodll_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(MONODLL_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
|
||||||
|
|
||||||
monodll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONODLL_ODEP)
|
monodll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONODLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
||||||
|
|
||||||
|
|
@ -19712,6 +19722,9 @@ monolib_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(MONOLIB_ODEP)
|
||||||
monolib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONOLIB_ODEP)
|
monolib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(MONOLIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
||||||
|
|
||||||
|
monolib_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(MONOLIB_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
|
||||||
|
|
||||||
monolib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONOLIB_ODEP)
|
monolib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONOLIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
||||||
|
|
||||||
|
|
@ -24458,6 +24471,9 @@ basedll_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(BASEDLL_ODEP)
|
||||||
basedll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASEDLL_ODEP)
|
basedll_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASEDLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
||||||
|
|
||||||
|
basedll_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(BASEDLL_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
|
||||||
|
|
||||||
basedll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASEDLL_ODEP)
|
basedll_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASEDLL_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
||||||
|
|
||||||
|
|
@ -24938,6 +24954,9 @@ baselib_lzmastream.o: $(srcdir)/src/common/lzmastream.cpp $(BASELIB_ODEP)
|
||||||
baselib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASELIB_ODEP)
|
baselib_common_uilocale.o: $(srcdir)/src/common/uilocale.cpp $(BASELIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/uilocale.cpp
|
||||||
|
|
||||||
|
baselib_fs_data.o: $(srcdir)/src/common/fs_data.cpp $(BASELIB_ODEP)
|
||||||
|
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_data.cpp
|
||||||
|
|
||||||
baselib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASELIB_ODEP)
|
baselib_unix_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASELIB_ODEP)
|
||||||
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -580,6 +580,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
||||||
src/common/secretstore.cpp
|
src/common/secretstore.cpp
|
||||||
src/common/lzmastream.cpp
|
src/common/lzmastream.cpp
|
||||||
src/common/uilocale.cpp
|
src/common/uilocale.cpp
|
||||||
|
src/common/fs_data.cpp
|
||||||
</set>
|
</set>
|
||||||
<set var="BASE_AND_GUI_CMN_SRC" hints="files">
|
<set var="BASE_AND_GUI_CMN_SRC" hints="files">
|
||||||
src/common/event.cpp
|
src/common/event.cpp
|
||||||
|
|
@ -755,6 +756,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
||||||
wx/lzmastream.h
|
wx/lzmastream.h
|
||||||
wx/localedefs.h
|
wx/localedefs.h
|
||||||
wx/uilocale.h
|
wx/uilocale.h
|
||||||
|
wx/fs_data.h
|
||||||
</set>
|
</set>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -492,6 +492,7 @@ set(BASE_CMN_SRC
|
||||||
src/generic/fswatcherg.cpp
|
src/generic/fswatcherg.cpp
|
||||||
src/common/lzmastream.cpp
|
src/common/lzmastream.cpp
|
||||||
src/common/uilocale.cpp
|
src/common/uilocale.cpp
|
||||||
|
src/common/fs_data.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(BASE_AND_GUI_CMN_SRC
|
set(BASE_AND_GUI_CMN_SRC
|
||||||
|
|
@ -669,6 +670,7 @@ set(BASE_CMN_HDR
|
||||||
wx/lzmastream.h
|
wx/lzmastream.h
|
||||||
wx/localedefs.h
|
wx/localedefs.h
|
||||||
wx/uilocale.h
|
wx/uilocale.h
|
||||||
|
wx/fs_data.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(NET_UNIX_SRC
|
set(NET_UNIX_SRC
|
||||||
|
|
|
||||||
|
|
@ -455,6 +455,7 @@ BASE_CMN_SRC =
|
||||||
src/common/filtfind.cpp
|
src/common/filtfind.cpp
|
||||||
src/common/fmapbase.cpp
|
src/common/fmapbase.cpp
|
||||||
src/common/fs_arc.cpp
|
src/common/fs_arc.cpp
|
||||||
|
src/common/fs_data.cpp
|
||||||
src/common/fs_filter.cpp
|
src/common/fs_filter.cpp
|
||||||
src/common/hash.cpp
|
src/common/hash.cpp
|
||||||
src/common/hashmap.cpp
|
src/common/hashmap.cpp
|
||||||
|
|
@ -571,6 +572,7 @@ BASE_CMN_HDR =
|
||||||
wx/fontenc.h
|
wx/fontenc.h
|
||||||
wx/fontmap.h
|
wx/fontmap.h
|
||||||
wx/fs_arc.h
|
wx/fs_arc.h
|
||||||
|
wx/fs_data.h
|
||||||
wx/fs_filter.h
|
wx/fs_filter.h
|
||||||
wx/fs_mem.h
|
wx/fs_mem.h
|
||||||
wx/fs_zip.h
|
wx/fs_zip.h
|
||||||
|
|
|
||||||
|
|
@ -498,6 +498,7 @@ MONODLL_OBJECTS = \
|
||||||
$(OBJS)\monodll_common_secretstore.o \
|
$(OBJS)\monodll_common_secretstore.o \
|
||||||
$(OBJS)\monodll_lzmastream.o \
|
$(OBJS)\monodll_lzmastream.o \
|
||||||
$(OBJS)\monodll_common_uilocale.o \
|
$(OBJS)\monodll_common_uilocale.o \
|
||||||
|
$(OBJS)\monodll_fs_data.o \
|
||||||
$(OBJS)\monodll_basemsw.o \
|
$(OBJS)\monodll_basemsw.o \
|
||||||
$(OBJS)\monodll_crashrpt.o \
|
$(OBJS)\monodll_crashrpt.o \
|
||||||
$(OBJS)\monodll_debughlp.o \
|
$(OBJS)\monodll_debughlp.o \
|
||||||
|
|
@ -659,6 +660,7 @@ MONOLIB_OBJECTS = \
|
||||||
$(OBJS)\monolib_common_secretstore.o \
|
$(OBJS)\monolib_common_secretstore.o \
|
||||||
$(OBJS)\monolib_lzmastream.o \
|
$(OBJS)\monolib_lzmastream.o \
|
||||||
$(OBJS)\monolib_common_uilocale.o \
|
$(OBJS)\monolib_common_uilocale.o \
|
||||||
|
$(OBJS)\monolib_fs_data.o \
|
||||||
$(OBJS)\monolib_basemsw.o \
|
$(OBJS)\monolib_basemsw.o \
|
||||||
$(OBJS)\monolib_crashrpt.o \
|
$(OBJS)\monolib_crashrpt.o \
|
||||||
$(OBJS)\monolib_debughlp.o \
|
$(OBJS)\monolib_debughlp.o \
|
||||||
|
|
@ -808,6 +810,7 @@ BASEDLL_OBJECTS = \
|
||||||
$(OBJS)\basedll_common_secretstore.o \
|
$(OBJS)\basedll_common_secretstore.o \
|
||||||
$(OBJS)\basedll_lzmastream.o \
|
$(OBJS)\basedll_lzmastream.o \
|
||||||
$(OBJS)\basedll_common_uilocale.o \
|
$(OBJS)\basedll_common_uilocale.o \
|
||||||
|
$(OBJS)\basedll_fs_data.o \
|
||||||
$(OBJS)\basedll_basemsw.o \
|
$(OBJS)\basedll_basemsw.o \
|
||||||
$(OBJS)\basedll_crashrpt.o \
|
$(OBJS)\basedll_crashrpt.o \
|
||||||
$(OBJS)\basedll_debughlp.o \
|
$(OBJS)\basedll_debughlp.o \
|
||||||
|
|
@ -938,6 +941,7 @@ BASELIB_OBJECTS = \
|
||||||
$(OBJS)\baselib_common_secretstore.o \
|
$(OBJS)\baselib_common_secretstore.o \
|
||||||
$(OBJS)\baselib_lzmastream.o \
|
$(OBJS)\baselib_lzmastream.o \
|
||||||
$(OBJS)\baselib_common_uilocale.o \
|
$(OBJS)\baselib_common_uilocale.o \
|
||||||
|
$(OBJS)\baselib_fs_data.o \
|
||||||
$(OBJS)\baselib_basemsw.o \
|
$(OBJS)\baselib_basemsw.o \
|
||||||
$(OBJS)\baselib_crashrpt.o \
|
$(OBJS)\baselib_crashrpt.o \
|
||||||
$(OBJS)\baselib_debughlp.o \
|
$(OBJS)\baselib_debughlp.o \
|
||||||
|
|
@ -7235,6 +7239,9 @@ $(OBJS)\monodll_lzmastream.o: ../../src/common/lzmastream.cpp
|
||||||
$(OBJS)\monodll_common_uilocale.o: ../../src/common/uilocale.cpp
|
$(OBJS)\monodll_common_uilocale.o: ../../src/common/uilocale.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monodll_fs_data.o: ../../src/common/fs_data.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monodll_basemsw.o: ../../src/msw/basemsw.cpp
|
$(OBJS)\monodll_basemsw.o: ../../src/msw/basemsw.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
|
@ -9826,6 +9833,9 @@ $(OBJS)\monolib_lzmastream.o: ../../src/common/lzmastream.cpp
|
||||||
$(OBJS)\monolib_common_uilocale.o: ../../src/common/uilocale.cpp
|
$(OBJS)\monolib_common_uilocale.o: ../../src/common/uilocale.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monolib_fs_data.o: ../../src/common/fs_data.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monolib_basemsw.o: ../../src/msw/basemsw.cpp
|
$(OBJS)\monolib_basemsw.o: ../../src/msw/basemsw.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
|
@ -12417,6 +12427,9 @@ $(OBJS)\basedll_lzmastream.o: ../../src/common/lzmastream.cpp
|
||||||
$(OBJS)\basedll_common_uilocale.o: ../../src/common/uilocale.cpp
|
$(OBJS)\basedll_common_uilocale.o: ../../src/common/uilocale.cpp
|
||||||
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\basedll_fs_data.o: ../../src/common/fs_data.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\basedll_basemsw.o: ../../src/msw/basemsw.cpp
|
$(OBJS)\basedll_basemsw.o: ../../src/msw/basemsw.cpp
|
||||||
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
|
@ -12759,6 +12772,9 @@ $(OBJS)\baselib_lzmastream.o: ../../src/common/lzmastream.cpp
|
||||||
$(OBJS)\baselib_common_uilocale.o: ../../src/common/uilocale.cpp
|
$(OBJS)\baselib_common_uilocale.o: ../../src/common/uilocale.cpp
|
||||||
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\baselib_fs_data.o: ../../src/common/fs_data.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\baselib_basemsw.o: ../../src/msw/basemsw.cpp
|
$(OBJS)\baselib_basemsw.o: ../../src/msw/basemsw.cpp
|
||||||
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -534,6 +534,7 @@ MONODLL_OBJECTS = \
|
||||||
$(OBJS)\monodll_common_secretstore.obj \
|
$(OBJS)\monodll_common_secretstore.obj \
|
||||||
$(OBJS)\monodll_lzmastream.obj \
|
$(OBJS)\monodll_lzmastream.obj \
|
||||||
$(OBJS)\monodll_common_uilocale.obj \
|
$(OBJS)\monodll_common_uilocale.obj \
|
||||||
|
$(OBJS)\monodll_fs_data.obj \
|
||||||
$(OBJS)\monodll_basemsw.obj \
|
$(OBJS)\monodll_basemsw.obj \
|
||||||
$(OBJS)\monodll_crashrpt.obj \
|
$(OBJS)\monodll_crashrpt.obj \
|
||||||
$(OBJS)\monodll_debughlp.obj \
|
$(OBJS)\monodll_debughlp.obj \
|
||||||
|
|
@ -704,6 +705,7 @@ MONOLIB_OBJECTS = \
|
||||||
$(OBJS)\monolib_common_secretstore.obj \
|
$(OBJS)\monolib_common_secretstore.obj \
|
||||||
$(OBJS)\monolib_lzmastream.obj \
|
$(OBJS)\monolib_lzmastream.obj \
|
||||||
$(OBJS)\monolib_common_uilocale.obj \
|
$(OBJS)\monolib_common_uilocale.obj \
|
||||||
|
$(OBJS)\monolib_fs_data.obj \
|
||||||
$(OBJS)\monolib_basemsw.obj \
|
$(OBJS)\monolib_basemsw.obj \
|
||||||
$(OBJS)\monolib_crashrpt.obj \
|
$(OBJS)\monolib_crashrpt.obj \
|
||||||
$(OBJS)\monolib_debughlp.obj \
|
$(OBJS)\monolib_debughlp.obj \
|
||||||
|
|
@ -862,6 +864,7 @@ BASEDLL_OBJECTS = \
|
||||||
$(OBJS)\basedll_common_secretstore.obj \
|
$(OBJS)\basedll_common_secretstore.obj \
|
||||||
$(OBJS)\basedll_lzmastream.obj \
|
$(OBJS)\basedll_lzmastream.obj \
|
||||||
$(OBJS)\basedll_common_uilocale.obj \
|
$(OBJS)\basedll_common_uilocale.obj \
|
||||||
|
$(OBJS)\basedll_fs_data.obj \
|
||||||
$(OBJS)\basedll_basemsw.obj \
|
$(OBJS)\basedll_basemsw.obj \
|
||||||
$(OBJS)\basedll_crashrpt.obj \
|
$(OBJS)\basedll_crashrpt.obj \
|
||||||
$(OBJS)\basedll_debughlp.obj \
|
$(OBJS)\basedll_debughlp.obj \
|
||||||
|
|
@ -1002,6 +1005,7 @@ BASELIB_OBJECTS = \
|
||||||
$(OBJS)\baselib_common_secretstore.obj \
|
$(OBJS)\baselib_common_secretstore.obj \
|
||||||
$(OBJS)\baselib_lzmastream.obj \
|
$(OBJS)\baselib_lzmastream.obj \
|
||||||
$(OBJS)\baselib_common_uilocale.obj \
|
$(OBJS)\baselib_common_uilocale.obj \
|
||||||
|
$(OBJS)\baselib_fs_data.obj \
|
||||||
$(OBJS)\baselib_basemsw.obj \
|
$(OBJS)\baselib_basemsw.obj \
|
||||||
$(OBJS)\baselib_crashrpt.obj \
|
$(OBJS)\baselib_crashrpt.obj \
|
||||||
$(OBJS)\baselib_debughlp.obj \
|
$(OBJS)\baselib_debughlp.obj \
|
||||||
|
|
@ -7692,6 +7696,9 @@ $(OBJS)\monodll_lzmastream.obj: ..\..\src\common\lzmastream.cpp
|
||||||
$(OBJS)\monodll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
$(OBJS)\monodll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monodll_fs_data.obj: ..\..\src\common\fs_data.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\fs_data.cpp
|
||||||
|
|
||||||
$(OBJS)\monodll_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
$(OBJS)\monodll_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
||||||
|
|
||||||
|
|
@ -10283,6 +10290,9 @@ $(OBJS)\monolib_lzmastream.obj: ..\..\src\common\lzmastream.cpp
|
||||||
$(OBJS)\monolib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
$(OBJS)\monolib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
||||||
|
|
||||||
|
$(OBJS)\monolib_fs_data.obj: ..\..\src\common\fs_data.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\fs_data.cpp
|
||||||
|
|
||||||
$(OBJS)\monolib_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
$(OBJS)\monolib_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
||||||
|
|
||||||
|
|
@ -12874,6 +12884,9 @@ $(OBJS)\basedll_lzmastream.obj: ..\..\src\common\lzmastream.cpp
|
||||||
$(OBJS)\basedll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
$(OBJS)\basedll_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
||||||
|
|
||||||
|
$(OBJS)\basedll_fs_data.obj: ..\..\src\common\fs_data.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\fs_data.cpp
|
||||||
|
|
||||||
$(OBJS)\basedll_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
$(OBJS)\basedll_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
||||||
|
|
||||||
|
|
@ -13216,6 +13229,9 @@ $(OBJS)\baselib_lzmastream.obj: ..\..\src\common\lzmastream.cpp
|
||||||
$(OBJS)\baselib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
$(OBJS)\baselib_common_uilocale.obj: ..\..\src\common\uilocale.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\uilocale.cpp
|
||||||
|
|
||||||
|
$(OBJS)\baselib_fs_data.obj: ..\..\src\common\fs_data.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\fs_data.cpp
|
||||||
|
|
||||||
$(OBJS)\baselib_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
$(OBJS)\baselib_basemsw.obj: ..\..\src\msw\basemsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\msw\basemsw.cpp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -622,6 +622,7 @@
|
||||||
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
|
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
|
||||||
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
|
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)common_%(Filename).obj</ObjectFileName>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\common\fs_data.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="..\..\src\msw\version.rc">
|
<ResourceCompile Include="..\..\src\msw\version.rc">
|
||||||
|
|
@ -841,6 +842,7 @@
|
||||||
<ClInclude Include="..\..\include\wx\lzmastream.h" />
|
<ClInclude Include="..\..\include\wx\lzmastream.h" />
|
||||||
<ClInclude Include="..\..\include\wx\localedefs.h" />
|
<ClInclude Include="..\..\include\wx\localedefs.h" />
|
||||||
<ClInclude Include="..\..\include\wx\uilocale.h" />
|
<ClInclude Include="..\..\include\wx\uilocale.h" />
|
||||||
|
<ClInclude Include="..\..\include\wx\fs_data.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,9 @@
|
||||||
<ClCompile Include="..\..\src\common\fs_arc.cpp">
|
<ClCompile Include="..\..\src\common\fs_arc.cpp">
|
||||||
<Filter>Common Sources</Filter>
|
<Filter>Common Sources</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\common\fs_data.cpp">
|
||||||
|
<Filter>Common Sources</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\common\fs_filter.cpp">
|
<ClCompile Include="..\..\src\common\fs_filter.cpp">
|
||||||
<Filter>Common Sources</Filter>
|
<Filter>Common Sources</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -535,6 +538,9 @@
|
||||||
<ClInclude Include="..\..\include\wx\fs_arc.h">
|
<ClInclude Include="..\..\include\wx\fs_arc.h">
|
||||||
<Filter>Common Headers</Filter>
|
<Filter>Common Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\include\wx\fs_data.h">
|
||||||
|
<Filter>Common Headers</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\include\wx\fs_filter.h">
|
<ClInclude Include="..\..\include\wx\fs_filter.h">
|
||||||
<Filter>Common Headers</Filter>
|
<Filter>Common Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,10 @@ The following virtual file system handlers are part of wxWidgets so far:
|
||||||
A handler for archives such as zip
|
A handler for archives such as zip
|
||||||
and tar. Include file is wx/fs_arc.h. URLs examples:
|
and tar. Include file is wx/fs_arc.h. URLs examples:
|
||||||
"archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename".
|
"archive.zip#zip:filename", "archive.tar.gz#gzip:#tar:filename".
|
||||||
|
@li @b wxDataSchemeFSHandler:
|
||||||
|
A handler for accessing data inlined in URI according to RFC 2397.
|
||||||
|
URI example: "data:text/plain;base64,d3hXaWRnZXRzIGV4YW1wbGU=".
|
||||||
|
Include file is wx/fs_data.h.
|
||||||
@li @b wxFilterFSHandler:
|
@li @b wxFilterFSHandler:
|
||||||
A handler for compression schemes such
|
A handler for compression schemes such
|
||||||
as gzip. Header is wx/fs_filter.h. URLs are in the form, e.g.:
|
as gzip. Header is wx/fs_filter.h. URLs are in the form, e.g.:
|
||||||
|
|
|
||||||
31
include/wx/fs_data.h
Normal file
31
include/wx/fs_data.h
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/fs_data.h
|
||||||
|
// Purpose: DATA scheme file system.
|
||||||
|
// Author: Vyacheslav Lisovski
|
||||||
|
// Copyright: (c) 2023 Vyacheslav Lisovski
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_FS_DATA_H_
|
||||||
|
#define _WX_FS_DATA_H_
|
||||||
|
|
||||||
|
#include "wx/defs.h"
|
||||||
|
|
||||||
|
#if wxUSE_FILESYSTEM
|
||||||
|
|
||||||
|
#include "wx/filesys.h"
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxDataSchemeFSHandler
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_BASE wxDataSchemeFSHandler : public wxFileSystemHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool CanOpen(const wxString& location) override;
|
||||||
|
virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // wxUSE_FILESYSTEM
|
||||||
|
|
||||||
|
#endif // _WX_FS_DATA_H_
|
||||||
31
interface/wx/fs_data.h
Normal file
31
interface/wx/fs_data.h
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/fs_data.h
|
||||||
|
// Purpose: DATA scheme file system
|
||||||
|
// Author: Vyacheslav Lisovski
|
||||||
|
// Copyright: (c) 2023 Vyacheslav Lisovski
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
@class wxDataSchemeFSHandler
|
||||||
|
|
||||||
|
File system handler for "data" URI scheme (RFC 2397).
|
||||||
|
URI syntax: @c "data:[<mediatype>][;base64],<data>".
|
||||||
|
|
||||||
|
The handler makes the data, included (encoded) into URI, available for
|
||||||
|
components that use the wxFileSystem infrastructure.
|
||||||
|
|
||||||
|
To make available for usage it should be registered somewhere within an
|
||||||
|
initialization procedure:
|
||||||
|
@code
|
||||||
|
wxFileSystem::AddHandler(new wxDataSchemeFSHandler);
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
@since 3.3.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
class wxDataSchemeFSHandler : public wxFileSystemHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxDataSchemeFSHandler();
|
||||||
|
};
|
||||||
126
src/common/fs_data.cpp
Normal file
126
src/common/fs_data.cpp
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: src/common/fs_data.cpp
|
||||||
|
// Purpose: DATA scheme file system
|
||||||
|
// Author: Vyacheslav Lisovski
|
||||||
|
// Copyright: (c) 2023 Vyacheslav Lisovski
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
|
#if wxUSE_FILESYSTEM
|
||||||
|
|
||||||
|
#include "wx/fs_data.h"
|
||||||
|
|
||||||
|
#include "wx/base64.h"
|
||||||
|
#include "wx/filesys.h"
|
||||||
|
#include "wx/mstream.h"
|
||||||
|
#include "wx/sstream.h"
|
||||||
|
#include "wx/uri.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
// This stream holds the buffer and deletes when destroyed
|
||||||
|
class wxBufferedMemoryInputStream : public wxMemoryInputStream
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxBufferedMemoryInputStream(const wxMemoryBuffer& buffer) :
|
||||||
|
wxMemoryInputStream(buffer.GetData(), buffer.GetDataLen()),
|
||||||
|
m_buffer{buffer}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxMemoryBuffer m_buffer;
|
||||||
|
};
|
||||||
|
|
||||||
|
// URL syntax: data:[<mediatype>][;base64],<data>
|
||||||
|
int GetMetadata(const wxString& location, wxString& mediatype, bool& isBase64)
|
||||||
|
{
|
||||||
|
int dataPos = location.Find(',');
|
||||||
|
if (dataPos > 0)
|
||||||
|
{
|
||||||
|
const int hdrPos = location.Find(':');
|
||||||
|
if (hdrPos > 0)
|
||||||
|
{
|
||||||
|
wxString metadata(location, hdrPos + 1, dataPos - hdrPos - 1);
|
||||||
|
|
||||||
|
int encPos = metadata.Find(';', true);
|
||||||
|
|
||||||
|
if (encPos > 0)
|
||||||
|
{
|
||||||
|
auto encoding = metadata.Right(metadata.Len() - encPos - 1);
|
||||||
|
if (encoding.IsSameAs("base64", false))
|
||||||
|
{
|
||||||
|
isBase64 = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
encPos = metadata.Len();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
encPos = metadata.Len();
|
||||||
|
|
||||||
|
mediatype = metadata.Left(encPos);
|
||||||
|
}
|
||||||
|
++dataPos;
|
||||||
|
}
|
||||||
|
return dataPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxDataSchemeFSHandler
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
bool wxDataSchemeFSHandler::CanOpen(const wxString& location)
|
||||||
|
{
|
||||||
|
return GetProtocol(location).IsSameAs("data", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFSFile* wxDataSchemeFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs),
|
||||||
|
const wxString& location)
|
||||||
|
{
|
||||||
|
wxString mediatype;
|
||||||
|
bool isBase64 = false;
|
||||||
|
int dataPos = GetMetadata(location, mediatype, isBase64);
|
||||||
|
|
||||||
|
if (dataPos < 0)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
if (mediatype.IsEmpty())
|
||||||
|
mediatype = "text/plain";
|
||||||
|
|
||||||
|
wxInputStream* stream = nullptr;
|
||||||
|
if (isBase64)
|
||||||
|
{
|
||||||
|
#if wxUSE_BASE64
|
||||||
|
stream = new wxBufferedMemoryInputStream(
|
||||||
|
wxBase64Decode(location.Right(location.Len() - dataPos)));
|
||||||
|
#endif // wxUSE_BASE64
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stream = new wxStringInputStream(
|
||||||
|
wxURI::Unescape(location.Right(location.Len() - dataPos)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stream)
|
||||||
|
{
|
||||||
|
return new wxFSFile(stream,
|
||||||
|
"",
|
||||||
|
mediatype,
|
||||||
|
""
|
||||||
|
#if wxUSE_DATETIME
|
||||||
|
, wxDateTime::Now()
|
||||||
|
#endif // wxUSE_DATETIME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_FILESYSTEM
|
||||||
|
|
@ -152,6 +152,7 @@
|
||||||
#include <wx/fontutil.h>
|
#include <wx/fontutil.h>
|
||||||
#include <wx/frame.h>
|
#include <wx/frame.h>
|
||||||
#include <wx/fs_arc.h>
|
#include <wx/fs_arc.h>
|
||||||
|
#include <wx/fs_data.h>
|
||||||
#include <wx/fs_filter.h>
|
#include <wx/fs_filter.h>
|
||||||
#include <wx/fs_inet.h>
|
#include <wx/fs_inet.h>
|
||||||
#include <wx/fs_mem.h>
|
#include <wx/fs_mem.h>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: tests/filesys/filesys.cpp
|
// Name: tests/filesys/filesys.cpp
|
||||||
// Purpose: wxFileSystem unit test
|
// Purpose: wxFileSystem unit test
|
||||||
// Author: Vaclav Slavik
|
// Author: Vaclav Slavik, Vyacheslav Lisovski
|
||||||
// Created: 2004-03-28
|
// Created: 2004-03-28
|
||||||
// Copyright: (c) 2004 Vaclav Slavik
|
// Copyright: (c) 2004 Vaclav Slavik
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -21,7 +21,9 @@
|
||||||
|
|
||||||
#if wxUSE_FILESYSTEM
|
#if wxUSE_FILESYSTEM
|
||||||
|
|
||||||
|
#include "wx/fs_data.h"
|
||||||
#include "wx/fs_mem.h"
|
#include "wx/fs_mem.h"
|
||||||
|
#include "wx/sstream.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
@ -177,6 +179,51 @@ TEST_CASE("wxFileSystem::UnicodeFileNameToUrlConversion", "[filesys][url][filena
|
||||||
CHECK( filename.SameAs(wxFileName::URLToFileName(url)) );
|
CHECK( filename.SameAs(wxFileName::URLToFileName(url)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("wxFileSystem::DataSchemeFSHandler", "[filesys][dataschemefshandler][openfile]")
|
||||||
|
{
|
||||||
|
// Install wxDataSchemeFSHandler just for the duration of this test.
|
||||||
|
class AutoDataSchemeFSHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AutoDataSchemeFSHandler() : m_handler(new wxDataSchemeFSHandler())
|
||||||
|
{
|
||||||
|
wxFileSystem::AddHandler(m_handler.get());
|
||||||
|
}
|
||||||
|
~AutoDataSchemeFSHandler()
|
||||||
|
{
|
||||||
|
wxFileSystem::RemoveHandler(m_handler.get());
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::unique_ptr<wxDataSchemeFSHandler> const m_handler;
|
||||||
|
} autoDataSchemeFSHandler;
|
||||||
|
|
||||||
|
wxFileSystem fs;
|
||||||
|
|
||||||
|
const struct wxTestCaseData
|
||||||
|
{
|
||||||
|
const char *info, *input, *result1, *result2;
|
||||||
|
} testData[] =
|
||||||
|
{
|
||||||
|
{ "Testing minimal URI with data",
|
||||||
|
"data:,the%20data", "text/plain", "the data" },
|
||||||
|
{ "Testing base64 encoded",
|
||||||
|
"data:x-t1/x-s1;base64,SGVsbG8sIFdvcmxkIQ==", "x-t1/x-s1", "Hello, World!" },
|
||||||
|
{ "Testing complex media type",
|
||||||
|
"data:image/svg+xml;utf8,<svg width='10'... </svg>", "image/svg+xml;utf8", "<svg width='10'... </svg>" }
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( const auto& dataItem : testData )
|
||||||
|
{
|
||||||
|
INFO(dataItem.info);
|
||||||
|
std::unique_ptr<wxFSFile> file(fs.OpenFile(dataItem.input));
|
||||||
|
CHECK(file->GetMimeType() == dataItem.result1);
|
||||||
|
|
||||||
|
wxStringOutputStream sos;
|
||||||
|
sos.Write(*file->GetStream());
|
||||||
|
CHECK(sos.GetString () == dataItem.result2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Test that using FindFirst() after removing a previously found URL works:
|
// Test that using FindFirst() after removing a previously found URL works:
|
||||||
// this used to be broken, see https://github.com/wxWidgets/wxWidgets/issues/18744
|
// this used to be broken, see https://github.com/wxWidgets/wxWidgets/issues/18744
|
||||||
TEST_CASE("wxFileSystem::MemoryFSHandler", "[filesys][memoryfshandler][find]")
|
TEST_CASE("wxFileSystem::MemoryFSHandler", "[filesys][memoryfshandler][find]")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue