diff --git a/components/compositing/compositor_thread.rs b/components/compositing/compositor_thread.rs index 0b042ec5350..f4aa96c20b9 100644 --- a/components/compositing/compositor_thread.rs +++ b/components/compositing/compositor_thread.rs @@ -9,6 +9,7 @@ use compositor::CompositingReason; use gfx_traits::Epoch; use ipc_channel::ipc::IpcSender; use msg::constellation_msg::{InputMethodType, Key, KeyModifiers, KeyState, PipelineId, TopLevelBrowsingContextId}; +use net_traits::filemanager_thread::FilterPattern; use net_traits::image::base::Image; use profile_traits::mem; use profile_traits::time; @@ -143,6 +144,8 @@ pub enum EmbedderMsg { Panic(TopLevelBrowsingContextId, String, Option), /// Open dialog to select bluetooth device. GetSelectedBluetoothDevice(Vec, IpcSender>), + /// Open file dialog to select files. Set boolean flag to true allows to select multiple files. + GetSelectedFiles(Vec, bool, IpcSender>>), /// Request to present an IME to the user when an editable element is focused. ShowIME(TopLevelBrowsingContextId, InputMethodType), /// Request to hide the IME when the editable element is blurred. @@ -248,6 +251,7 @@ impl Debug for EmbedderMsg { EmbedderMsg::LoadComplete(..) => write!(f, "LoadComplete"), EmbedderMsg::Panic(..) => write!(f, "Panic"), EmbedderMsg::GetSelectedBluetoothDevice(..) => write!(f, "GetSelectedBluetoothDevice"), + EmbedderMsg::GetSelectedFiles(..) => write!(f, "SelectFileDialog"), EmbedderMsg::ShowIME(..) => write!(f, "ShowIME"), EmbedderMsg::HideIME(..) => write!(f, "HideIME"), EmbedderMsg::Shutdown => write!(f, "Shutdown"), diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index 1a8d8e825e0..048e0c7b740 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -115,6 +115,7 @@ use msg::constellation_msg::{BrowsingContextId, PipelineId, HistoryStateId, TopL use msg::constellation_msg::{Key, KeyModifiers, KeyState}; use msg::constellation_msg::{PipelineNamespace, PipelineNamespaceId, TraversalDirection}; use net_traits::{self, IpcSend, FetchResponseMsg, ResourceThreads}; +use net_traits::filemanager_thread::FilterPattern; use net_traits::pub_domains::reg_host; use net_traits::request::RequestInit; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; @@ -1013,7 +1014,7 @@ impl Constellation self.handle_set_cursor_msg(cursor) } FromCompositorMsg::OpenFileSelectDialog(patterns, multiple_files, sender) => { - return; + self.handle_open_file_select_dialog_msg(patterns, multiple_files, sender); } } } @@ -1741,6 +1742,14 @@ impl Constellation self.embedder_proxy.send(EmbedderMsg::SetCursor(cursor)) } + fn handle_open_file_select_dialog_msg(&mut self, + patterns: Vec, + multiple_files: bool, + sender: IpcSender>>) { + let msg = EmbedderMsg::GetSelectedFiles(patterns, multiple_files, sender); + self.embedder_proxy.send(msg); + } + fn handle_change_running_animations_state(&mut self, pipeline_id: PipelineId, animation_state: AnimationState) { diff --git a/ports/servo/browser.rs b/ports/servo/browser.rs index 429b59b189b..cf188dad4a7 100644 --- a/ports/servo/browser.rs +++ b/ports/servo/browser.rs @@ -294,6 +294,8 @@ impl Browser { }, EmbedderMsg::GetSelectedBluetoothDevice(devices, sender) => { platform_get_selected_devices(devices, sender); + }, + EmbedderMsg::GetSelectedFiles(patterns, multiple_files, sender) => { } EmbedderMsg::ShowIME(_browser_id, _kind) => { debug!("ShowIME received");