diff options
Diffstat (limited to 'content/renderer/pepper/pepper_file_chooser_host.h')
-rw-r--r-- | content/renderer/pepper/pepper_file_chooser_host.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/content/renderer/pepper/pepper_file_chooser_host.h b/content/renderer/pepper/pepper_file_chooser_host.h new file mode 100644 index 0000000..8dbc4e3 --- /dev/null +++ b/content/renderer/pepper/pepper_file_chooser_host.h @@ -0,0 +1,68 @@ +// Copyright (c) 2012 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 CONTENT_RENDERER_PEPPER_PEPPER_FILE_CHOOSER_HOST_H_ +#define CONTENT_RENDERER_PEPPER_PEPPER_FILE_CHOOSER_HOST_H_ + +#include <string> +#include <vector> + +#include "base/basictypes.h" +#include "base/memory/weak_ptr.h" +#include "content/common/content_export.h" +#include "ppapi/host/resource_host.h" +#include "ppapi/proxy/resource_message_params.h" + +class RenderViewImpl; + +namespace content { + +class PepperInstanceStateAccessor; + +class CONTENT_EXPORT PepperFileChooserHost + : public ppapi::host::ResourceHost, + public base::SupportsWeakPtr<PepperFileChooserHost> { + public: + // Structure to store the information about chosen files. + struct ChosenFileInfo { + ChosenFileInfo(const std::string& path, const std::string& display_name); + std::string path; + std::string display_name; // May be empty. + }; + + PepperFileChooserHost(ppapi::host::PpapiHost* host, + PP_Instance instance, + PP_Resource resource, + RenderViewImpl* render_view, + PepperInstanceStateAccessor* state); + virtual ~PepperFileChooserHost(); + + virtual int32_t OnResourceMessageReceived( + const IPC::Message& msg, + ppapi::host::HostMessageContext* context) OVERRIDE; + + void StoreChosenFiles(const std::vector<ChosenFileInfo>& files); + + private: + class CompletionHandler; + + int32_t OnMsgShow(ppapi::host::HostMessageContext* context, + bool save_as, + bool open_multiple, + const std::string& suggested_file_name, + const std::vector<std::string>& accept_mime_types); + + // Non-owning pointers. + RenderViewImpl* render_view_; + PepperInstanceStateAccessor* instance_state_; + + ppapi::proxy::ResourceMessageReplyParams reply_params_; + CompletionHandler* handler_; + + DISALLOW_COPY_AND_ASSIGN(PepperFileChooserHost); +}; + +} // namespace ppapi + +#endif // CONTENT_RENDERER_PEPPER_PEPPER_FILE_CHOOSER_HOST_H_ |