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 cfa2c65cb331303c68b246ee7db6643a5ddb1dce..bfbc3ef11c89fb5bc6af78613a07de945402f78b 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 a5e5bcbaf8b4bcc43ca084344fff2d240ed87c03..d0b56480e106cdc1aba8590f478cc3837979920e 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 e992ceebca2225f6f82a02ae663ea8a1f914ac88..678830ea63e96a3832ae4a344106347b83575274 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 589956c13769f64ddd728d9064670bc75bf4c4ff..1340d7214e50b7d9888b5a59f7cad46ef04f9d91 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 3f31c43ce1120341a032ed99077ed31d530f6b39..e4bf40ab2a3a7698f4fa63e60732f254076a16b6 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 a890e0f02f2fcc77a337b0189a95bbe02b0a4cb5..0ff52725e20a6e56c5dc85b1b498bcbdc71cb940 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