Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: webkit/glue/plugins/pepper_file_chooser.cc

Issue 5828003: Move the Pepper implementation from webkit/glue/plugins/pepper_* to... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/plugins/pepper_file_chooser.h ('k') | webkit/glue/plugins/pepper_file_io.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/plugins/pepper_file_chooser.cc
===================================================================
--- webkit/glue/plugins/pepper_file_chooser.cc (revision 69381)
+++ webkit/glue/plugins/pepper_file_chooser.cc (working copy)
@@ -1,165 +0,0 @@
-// Copyright (c) 2010 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.
-
-#include "webkit/glue/plugins/pepper_file_chooser.h"
-
-#include <string>
-#include <vector>
-
-#include "base/logging.h"
-#include "ppapi/c/pp_completion_callback.h"
-#include "ppapi/c/pp_errors.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebCString.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebFileChooserCompletion.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebFileChooserParams.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
-#include "webkit/glue/plugins/pepper_common.h"
-#include "webkit/glue/plugins/pepper_file_ref.h"
-#include "webkit/glue/plugins/pepper_plugin_delegate.h"
-#include "webkit/glue/plugins/pepper_plugin_instance.h"
-#include "webkit/glue/plugins/pepper_resource_tracker.h"
-#include "webkit/glue/webkit_glue.h"
-
-using WebKit::WebCString;
-using WebKit::WebFileChooserCompletion;
-using WebKit::WebFileChooserParams;
-using WebKit::WebString;
-using WebKit::WebVector;
-
-namespace pepper {
-
-namespace {
-
-PP_Resource Create(PP_Instance instance_id,
- const PP_FileChooserOptions_Dev* options) {
- PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id);
- if (!instance)
- return 0;
-
- if ((options->mode != PP_FILECHOOSERMODE_OPEN) &&
- (options->mode != PP_FILECHOOSERMODE_OPENMULTIPLE))
- return 0;
-
- FileChooser* chooser = new FileChooser(instance, options);
- return chooser->GetReference();
-}
-
-PP_Bool IsFileChooser(PP_Resource resource) {
- return BoolToPPBool(!!Resource::GetAs<FileChooser>(resource));
-}
-
-int32_t Show(PP_Resource chooser_id, PP_CompletionCallback callback) {
- scoped_refptr<FileChooser> chooser(
- Resource::GetAs<FileChooser>(chooser_id));
- if (!chooser)
- return PP_ERROR_BADRESOURCE;
-
- return chooser->Show(callback);
-}
-
-PP_Resource GetNextChosenFile(PP_Resource chooser_id) {
- scoped_refptr<FileChooser> chooser(
- Resource::GetAs<FileChooser>(chooser_id));
- if (!chooser)
- return 0;
-
- scoped_refptr<FileRef> file_ref(chooser->GetNextChosenFile());
- if (!file_ref)
- return 0;
-
- return file_ref->GetReference();
-}
-
-const PPB_FileChooser_Dev ppb_filechooser = {
- &Create,
- &IsFileChooser,
- &Show,
- &GetNextChosenFile
-};
-
-class FileChooserCompletionImpl : public WebFileChooserCompletion {
- public:
- FileChooserCompletionImpl(pepper::FileChooser* file_chooser)
- : file_chooser_(file_chooser) {
- DCHECK(file_chooser_);
- }
-
- virtual ~FileChooserCompletionImpl() {}
-
- virtual void didChooseFile(const WebVector<WebString>& file_names) {
- std::vector<std::string> files;
- for (size_t i = 0; i < file_names.size(); i++)
- files.push_back(file_names[i].utf8().data());
-
- file_chooser_->StoreChosenFiles(files);
- }
-
- private:
- FileChooser* file_chooser_;
-};
-
-} // namespace
-
-FileChooser::FileChooser(PluginInstance* instance,
- const PP_FileChooserOptions_Dev* options)
- : Resource(instance->module()),
- delegate_(instance->delegate()),
- mode_(options->mode),
- accept_mime_types_(options->accept_mime_types),
- completion_callback_() {
-}
-
-FileChooser::~FileChooser() {
-}
-
-// static
-const PPB_FileChooser_Dev* FileChooser::GetInterface() {
- return &ppb_filechooser;
-}
-
-FileChooser* FileChooser::AsFileChooser() {
- return this;
-}
-
-void FileChooser::StoreChosenFiles(const std::vector<std::string>& files) {
- next_chosen_file_index_ = 0;
- std::vector<std::string>::const_iterator end_it = files.end();
- for (std::vector<std::string>::const_iterator it = files.begin();
- it != end_it; it++) {
- chosen_files_.push_back(make_scoped_refptr(
- new FileRef(module(), FilePath().AppendASCII(*it))));
- }
-
- if (!completion_callback_.func)
- return;
-
- PP_CompletionCallback callback = {0};
- std::swap(callback, completion_callback_);
- PP_RunCompletionCallback(&callback, 0);
-}
-
-int32_t FileChooser::Show(PP_CompletionCallback callback) {
- DCHECK((mode_ == PP_FILECHOOSERMODE_OPEN) ||
- (mode_ == PP_FILECHOOSERMODE_OPENMULTIPLE));
- DCHECK(!completion_callback_.func);
- completion_callback_ = callback;
-
- WebFileChooserParams params;
- params.multiSelect = (mode_ == PP_FILECHOOSERMODE_OPENMULTIPLE);
- params.acceptTypes = WebString::fromUTF8(accept_mime_types_);
- params.directory = false;
-
- return delegate_->RunFileChooser(
- params, new FileChooserCompletionImpl(this));
-}
-
-scoped_refptr<FileRef> FileChooser::GetNextChosenFile() {
- if (next_chosen_file_index_ >= chosen_files_.size())
- return NULL;
-
- return chosen_files_[next_chosen_file_index_++];
-}
-
-} // namespace pepper
« no previous file with comments | « webkit/glue/plugins/pepper_file_chooser.h ('k') | webkit/glue/plugins/pepper_file_io.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698