| Index: third_party/grpc/include/grpc++/impl/codegen/proto_utils.h
|
| diff --git a/third_party/WebKit/Source/web/WebFileChooserCompletionImpl.cpp b/third_party/grpc/include/grpc++/impl/codegen/proto_utils.h
|
| similarity index 50%
|
| copy from third_party/WebKit/Source/web/WebFileChooserCompletionImpl.cpp
|
| copy to third_party/grpc/include/grpc++/impl/codegen/proto_utils.h
|
| index 4d5675d2549992da4a7b3e44a23398ffb4574116..ce177104e00dbdf0d4976cea826c827ad2901bd0 100644
|
| --- a/third_party/WebKit/Source/web/WebFileChooserCompletionImpl.cpp
|
| +++ b/third_party/grpc/include/grpc++/impl/codegen/proto_utils.h
|
| @@ -1,5 +1,7 @@
|
| /*
|
| - * Copyright (C) 2009 Google Inc. All rights reserved.
|
| + *
|
| + * Copyright 2015-2016, Google Inc.
|
| + * All rights reserved.
|
| *
|
| * Redistribution and use in source and binary forms, with or without
|
| * modification, are permitted provided that the following conditions are
|
| @@ -26,51 +28,49 @@
|
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + *
|
| */
|
|
|
| -#include "web/WebFileChooserCompletionImpl.h"
|
| +#ifndef GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
|
| +#define GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
|
| +
|
| +#include <type_traits>
|
|
|
| -#include "platform/FileMetadata.h"
|
| -#include "wtf/DateMath.h"
|
| +#include <grpc/impl/codegen/byte_buffer.h>
|
| +#include <grpc++/impl/codegen/serialization_traits.h>
|
| +#include <grpc++/impl/codegen/config_protobuf.h>
|
| +#include <grpc++/impl/codegen/status.h>
|
|
|
| -namespace blink {
|
| +namespace grpc {
|
|
|
| -WebFileChooserCompletionImpl::WebFileChooserCompletionImpl(PassRefPtr<FileChooser> chooser)
|
| - : m_fileChooser(chooser)
|
| -{
|
| -}
|
| +// Serialize the msg into a buffer created inside the function. The caller
|
| +// should destroy the returned buffer when done with it. If serialization fails,
|
| +// false is returned and buffer is left unchanged.
|
| +Status SerializeProto(const grpc::protobuf::Message& msg,
|
| + grpc_byte_buffer** buffer);
|
|
|
| -WebFileChooserCompletionImpl::~WebFileChooserCompletionImpl()
|
| -{
|
| -}
|
| +// The caller keeps ownership of buffer and msg.
|
| +Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg,
|
| + int max_message_size);
|
|
|
| -void WebFileChooserCompletionImpl::didChooseFile(const WebVector<WebString>& fileNames)
|
| -{
|
| - Vector<FileChooserFileInfo> fileInfo;
|
| - for (size_t i = 0; i < fileNames.size(); ++i)
|
| - fileInfo.append(FileChooserFileInfo(fileNames[i]));
|
| - m_fileChooser->chooseFiles(fileInfo);
|
| - // This object is no longer needed.
|
| - delete this;
|
| -}
|
| +template <class T>
|
| +class SerializationTraits<T, typename std::enable_if<std::is_base_of<
|
| + grpc::protobuf::Message, T>::value>::type> {
|
| + public:
|
| + static Status Serialize(const grpc::protobuf::Message& msg,
|
| + grpc_byte_buffer** buffer, bool* own_buffer) {
|
| + *own_buffer = true;
|
| + return SerializeProto(msg, buffer);
|
| + }
|
| + static Status Deserialize(grpc_byte_buffer* buffer,
|
| + grpc::protobuf::Message* msg,
|
| + int max_message_size) {
|
| + auto status = DeserializeProto(buffer, msg, max_message_size);
|
| + grpc_byte_buffer_destroy(buffer);
|
| + return status;
|
| + }
|
| +};
|
|
|
| -void WebFileChooserCompletionImpl::didChooseFile(const WebVector<SelectedFileInfo>& files)
|
| -{
|
| - Vector<FileChooserFileInfo> fileInfo;
|
| - for (size_t i = 0; i < files.size(); ++i) {
|
| - if (files[i].fileSystemURL.isEmpty()) {
|
| - fileInfo.append(FileChooserFileInfo(files[i].path, files[i].displayName));
|
| - } else {
|
| - FileMetadata metadata;
|
| - metadata.modificationTime = files[i].modificationTime * msPerSecond;
|
| - metadata.length = files[i].length;
|
| - metadata.type = files[i].isDirectory ? FileMetadata::TypeDirectory : FileMetadata::TypeFile;
|
| - fileInfo.append(FileChooserFileInfo(files[i].fileSystemURL, metadata));
|
| - }
|
| - }
|
| - m_fileChooser->chooseFiles(fileInfo);
|
| - // This object is no longer needed.
|
| - delete this;
|
| -}
|
| +} // namespace grpc
|
|
|
| -} // namespace blink
|
| +#endif // GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
|
|
|