// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_SHELL_DIALOGS_ANDROID_SELECT_FILE_DIALOG_ANDROID_H_ #define UI_SHELL_DIALOGS_ANDROID_SELECT_FILE_DIALOG_ANDROID_H_ #include #include "base/android/scoped_java_ref.h" #include "base/files/file_path.h" #include "ui/shell_dialogs/select_file_dialog.h" namespace ui { class SelectFileDialogImpl : public SelectFileDialog { public: static SelectFileDialogImpl* Create(Listener* listener, SelectFilePolicy* policy); void OnFileSelected(JNIEnv* env, jobject java_object, jstring filepath, jstring display_name); void OnMultipleFilesSelected(JNIEnv* env, jobject java_object, jobjectArray filepaths, jobjectArray display_names); void OnFileNotSelected(JNIEnv* env, jobject java_object); // From SelectFileDialog bool IsRunning(gfx::NativeWindow) const override; void ListenerDestroyed() override; // Called when it is time to display the file picker. // params is expected to be a vector with accept_types first and // the capture value as the last element of the vector. void SelectFileImpl(SelectFileDialog::Type type, const base::string16& title, const base::FilePath& default_path, const SelectFileDialog::FileTypeInfo* file_types, int file_type_index, const std::string& default_extension, gfx::NativeWindow owning_window, void* params) override; static bool RegisterSelectFileDialog(JNIEnv* env); protected: ~SelectFileDialogImpl() override; private: SelectFileDialogImpl(Listener* listener, SelectFilePolicy* policy); bool HasMultipleFileTypeChoicesImpl() override; base::android::ScopedJavaGlobalRef java_object_; DISALLOW_COPY_AND_ASSIGN(SelectFileDialogImpl); }; SelectFileDialog* CreateAndroidSelectFileDialog( SelectFileDialog::Listener* listener, SelectFilePolicy* policy); } // namespace ui #endif // UI_SHELL_DIALOGS_ANDROID_SELECT_FILE_DIALOG_ANDROID_H_