From 3d5372164eb9afa530b5cdfd636eb005b0757ffb Mon Sep 17 00:00:00 2001 From: spruceovo Date: Fri, 3 Jan 2025 11:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=96=B0?= =?UTF-8?q?=E5=A2=9Emime=E7=B1=BB=E5=9E=8B=E8=8E=B7=E5=8F=96=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: spruceovo --- .../cef_delegate/nweb_devtools_message_handler_impl.cc | 3 ++- .../cef_delegate/nweb_devtools_message_handler_impl.h | 1 + .../src/cef_delegate/nweb_file_selector_params_impl.cc | 10 +++++++++- .../src/cef_delegate/nweb_file_selector_params_impl.h | 5 ++++- ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc | 3 ++- ohos_nweb/src/cef_delegate/nweb_handler_delegate.h | 1 + 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.cc b/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.cc index cfa2c65cb3..bfbc3ef11c 100644 --- a/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.cc +++ b/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.cc @@ -79,6 +79,7 @@ bool NWebDevToolsMessageHandlerImpl::ShowFileChooser( const CefString& default_file_path, const std::vector& accept_filters, bool capture, + const std::vector& mime_filters, CefRefPtr callback) { if (!handler_) { LOG(INFO) << "ShowFileChooser failed, handler_ is null"; @@ -109,7 +110,7 @@ bool NWebDevToolsMessageHandlerImpl::ShowFileChooser( std::shared_ptr param = std::make_shared( file_mode, file_selector_title, accept_filters, - default_file_path.ToString(), capture); + default_file_path.ToString(), capture, mime_filters); std::shared_ptr file_path_callback = std::make_shared(callback); if (!CheckValid(handler_.get(), &handler_->show_file_chooser)) { diff --git a/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.h b/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.h index a5e5bcbaf8..d0b56480e1 100644 --- a/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.h +++ b/ohos_nweb/src/cef_delegate/nweb_devtools_message_handler_impl.h @@ -37,6 +37,7 @@ class NWebDevToolsMessageHandlerImpl const CefString& default_file_path, const std::vector& accept_filters, bool capture, + const std::vector& mime_filters, CefRefPtr callback) override; void ShowInfoBar( const CefString& message, diff --git a/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.cc b/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.cc index e992ceebca..678830ea63 100644 --- a/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.cc +++ b/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.cc @@ -23,7 +23,8 @@ FileSelectorParamsImpl::FileSelectorParamsImpl( const std::string& title, const std::vector& accept_type, const std::string& default_filename, - bool is_capture) + bool is_capture, + const std::vector& mime_type) : mode_(mode), title_(title), default_filename_(default_filename), @@ -31,6 +32,9 @@ FileSelectorParamsImpl::FileSelectorParamsImpl( for (auto& c : accept_type) { accept_type_.push_back(c.ToString()); } + for (auto& c : mime_type) { + mime_type_.push_back(c.ToString()); + } } const std::string FileSelectorParamsImpl::Title() { @@ -53,6 +57,10 @@ bool FileSelectorParamsImpl::IsCapture() { return is_capture_; } +const AcceptTypeList FileSelectorParamsImpl::MimeType() { + return mime_type_; +} + void FileSelectorCallbackImpl::OnReceiveValue(const std::vector& value) { if (callback_ == nullptr || is_used_) { LOG(ERROR) << "FileSelectorCallbackImpl is null or already used"; diff --git a/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.h b/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.h index 589956c137..1340d7214e 100644 --- a/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.h +++ b/ohos_nweb/src/cef_delegate/nweb_file_selector_params_impl.h @@ -29,13 +29,15 @@ class FileSelectorParamsImpl : public NWebFileSelectorParams { const std::string& title, const std::vector& accept_type, const std::string& default_filename, - bool is_capture); + bool is_capture, + const std::vector& mime_type); const std::string Title() override; NWebFileSelectorParams::FileSelectorMode Mode() override; const std::string DefaultFilename() override; const AcceptTypeList AcceptType() override; bool IsCapture() override; + const MimeTypeList MimeType() override; private: NWebFileSelectorParams::FileSelectorMode mode_; @@ -43,6 +45,7 @@ class FileSelectorParamsImpl : public NWebFileSelectorParams { std::string default_filename_; AcceptTypeList accept_type_; bool is_capture_; + MimeTypeList mime_type_; }; class FileSelectorCallbackImpl : public NWebStringVectorValueCallback { diff --git a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc index 3f31c43ce1..e4bf40ab2a 100644 --- a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc +++ b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.cc @@ -2616,6 +2616,7 @@ bool NWebHandlerDelegate::OnFileDialog( const CefString& default_file_path, const std::vector& accept_filters, bool capture, + const std::vector& mime_filters, CefRefPtr callback) { if (nweb_handler_ == nullptr) { return false; @@ -2644,7 +2645,7 @@ bool NWebHandlerDelegate::OnFileDialog( std::shared_ptr param = std::make_shared( file_mode, file_selector_title, accept_filters, - default_file_path.ToString(), capture); + default_file_path.ToString(), capture, mime_filters); std::shared_ptr file_path_callback = std::make_shared(callback); return nweb_handler_->OnFileSelectorShow(file_path_callback, param); diff --git a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h index a890e0f02f..0ff52725e2 100644 --- a/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h +++ b/ohos_nweb/src/cef_delegate/nweb_handler_delegate.h @@ -534,6 +534,7 @@ void OnTouchIconUrlWithSizesReceived( const CefString& default_file_path, const std::vector& accept_filters, bool capture, + const std::vector& mime_filters, CefRefPtr callback) override; #ifdef OHOS_HTML_SELECT -- Gitee