summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'webkit')
-rw-r--r--webkit/glue/webkit_glue.gypi2
-rw-r--r--webkit/plugins/ppapi/plugin_module.cc102
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.cc46
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.h7
-rw-r--r--webkit/plugins/ppapi/ppb_console_impl.cc87
-rw-r--r--webkit/plugins/ppapi/ppb_console_impl.h23
-rw-r--r--webkit/plugins/ppapi/ppb_url_request_info_impl.cc3
7 files changed, 189 insertions, 81 deletions
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi
index cb126a6..1112558 100644
--- a/webkit/glue/webkit_glue.gypi
+++ b/webkit/glue/webkit_glue.gypi
@@ -225,6 +225,8 @@
'../plugins/ppapi/ppb_buffer_impl.h',
'../plugins/ppapi/ppb_char_set_impl.cc',
'../plugins/ppapi/ppb_char_set_impl.h',
+ '../plugins/ppapi/ppb_console_impl.cc',
+ '../plugins/ppapi/ppb_console_impl.h',
'../plugins/ppapi/ppb_context_3d_impl.cc',
'../plugins/ppapi/ppb_context_3d_impl.h',
'../plugins/ppapi/ppb_crypto_impl.cc',
diff --git a/webkit/plugins/ppapi/plugin_module.cc b/webkit/plugins/ppapi/plugin_module.cc
index efb8859..aa20704 100644
--- a/webkit/plugins/ppapi/plugin_module.cc
+++ b/webkit/plugins/ppapi/plugin_module.cc
@@ -86,6 +86,7 @@
#include "webkit/plugins/ppapi/common.h"
#include "webkit/plugins/ppapi/ppapi_interface_factory.h"
#include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
+#include "webkit/plugins/ppapi/ppb_console_impl.h"
#include "webkit/plugins/ppapi/ppb_crypto_impl.h"
#include "webkit/plugins/ppapi/ppb_directory_reader_impl.h"
#include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h"
@@ -227,36 +228,42 @@ const void* GetInterface(const char* name) {
if (custom_interface)
return custom_interface;
- // TODO(brettw) put these in a hash map for better performance.
- #define UNPROXIED_IFACE(api_name, iface_str, iface_struct) \
- if (strcmp(name, iface_str) == 0) \
- return ::ppapi::thunk::Get##iface_struct##_Thunk();
- #define PROXIED_IFACE(api_name, iface_str, iface_struct) \
- UNPROXIED_IFACE(api_name, iface_str, iface_struct)
-
- #include "ppapi/thunk/interfaces_ppb_public_stable.h"
- #include "ppapi/thunk/interfaces_ppb_public_dev.h"
- #include "ppapi/thunk/interfaces_ppb_private.h"
-
- #undef UNPROXIED_API
- #undef PROXIED_IFACE
-
// Please keep alphabetized by interface macro name with "special" stuff at
// the bottom.
+ if (strcmp(name, PPB_AUDIO_CONFIG_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_AudioConfig_Thunk();
+ if (strcmp(name, PPB_AUDIO_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_Audio_Thunk();
if (strcmp(name, PPB_AUDIO_TRUSTED_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_AudioTrusted_Thunk();
+ if (strcmp(name, PPB_BROKER_TRUSTED_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Broker_Thunk();
+ if (strcmp(name, PPB_BUFFER_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Buffer_Thunk();
if (strcmp(name, PPB_BUFFER_TRUSTED_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_BufferTrusted_Thunk();
- if (strcmp(name, PPB_CONTEXT_3D_TRUSTED_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_Context3DTrusted_Thunk();
+ if (strcmp(name, PPB_CHAR_SET_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_CharSet_Thunk();
+ if (strcmp(name, PPB_CONSOLE_DEV_INTERFACE) == 0)
+ return PPB_Console_Impl::GetInterface();
if (strcmp(name, PPB_CORE_INTERFACE) == 0)
return &core_interface;
if (strcmp(name, PPB_CRYPTO_DEV_INTERFACE) == 0)
return PPB_Crypto_Impl::GetInterface();
+ if (strcmp(name, PPB_CURSOR_CONTROL_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_CursorControl_Thunk();
if (strcmp(name, PPB_DIRECTORYREADER_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_DirectoryReader_Dev_Thunk();
+ return ::ppapi::thunk::GetPPB_DirectoryReader_Thunk();
+ if (strcmp(name, PPB_FILECHOOSER_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_FileChooser_Thunk();
+ if (strcmp(name, PPB_FILEIO_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_FileIO_Thunk();
if (strcmp(name, PPB_FILEIOTRUSTED_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_FileIOTrusted_Thunk();
+ if (strcmp(name, PPB_FILEREF_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_FileRef_Thunk();
+ if (strcmp(name, PPB_FILESYSTEM_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_FileSystem_Thunk();
if (strcmp(name, PPB_FIND_DEV_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Find_Thunk();
if (strcmp(name, PPB_FLASH_INTERFACE) == 0)
@@ -271,24 +278,36 @@ const void* GetInterface(const char* name) {
return ::ppapi::thunk::GetPPB_Flash_Menu_Thunk();
if (strcmp(name, PPB_FLASH_TCPSOCKET_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Flash_TCPSocket_Thunk();
+ if (strcmp(name, PPB_FONT_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Font_Thunk();
if (strcmp(name, PPB_FULLSCREEN_DEV_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Fullscreen_Thunk();
if (strcmp(name, PPB_GPU_BLACKLIST_INTERFACE) == 0)
return PPB_GpuBlacklist_Private_Impl::GetInterface();
- if (strcmp(name, PPB_GRAPHICS_3D_TRUSTED_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_Graphics3DTrusted_Thunk();
+ if (strcmp(name, PPB_GRAPHICS_2D_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_Graphics2D_Thunk();
+ if (strcmp(name, PPB_IMAGEDATA_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_ImageData_Thunk();
if (strcmp(name, PPB_IMAGEDATA_TRUSTED_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_ImageDataTrusted_Thunk();
if (strcmp(name, PPB_INPUT_EVENT_INTERFACE_1_0) == 0)
return ::ppapi::thunk::GetPPB_InputEvent_Thunk();
+ if (strcmp(name, PPB_INSTANCE_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_Instance_1_0_Thunk();
if (strcmp(name, PPB_INSTANCE_PRIVATE_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Instance_Private_Thunk();
- if (strcmp(name, PPB_LAYER_COMPOSITOR_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_LayerCompositor_Thunk();
+ if (strcmp(name, PPB_KEYBOARD_INPUT_EVENT_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_KeyboardInputEvent_Thunk();
if (strcmp(name, PPB_MEMORY_DEV_INTERFACE) == 0)
return PPB_Memory_Impl::GetInterface();
- if (strcmp(name, PPB_OPENGLES2_INTERFACE) == 0)
- return PPB_OpenGLES_Impl::GetInterface();
+ if (strcmp(name, PPB_MESSAGING_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_Messaging_Thunk();
+ if (strcmp(name, PPB_MOUSE_INPUT_EVENT_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_MouseInputEvent_1_0_Thunk();
+ if (strcmp(name, PPB_MOUSE_INPUT_EVENT_INTERFACE_1_1) == 0)
+ return ::ppapi::thunk::GetPPB_MouseInputEvent_1_1_Thunk();
+ if (strcmp(name, PPB_MOUSELOCK_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_MouseLock_Thunk();
if (strcmp(name, PPB_PROXY_PRIVATE_INTERFACE) == 0)
return PPB_Proxy_Impl::GetInterface();
if (strcmp(name, PPB_QUERY_POLICY_DEV_INTERFACE_0_1) == 0)
@@ -301,21 +320,52 @@ const void* GetInterface(const char* name) {
return ::ppapi::thunk::GetPPB_Scrollbar_Thunk();
if (strcmp(name, PPB_UMA_PRIVATE_INTERFACE) == 0)
return PPB_UMA_Private_Impl::GetInterface();
+ if (strcmp(name, PPB_URLLOADER_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_URLLoader_Thunk();
if (strcmp(name, PPB_URLLOADERTRUSTED_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_URLLoaderTrusted_Thunk();
+ if (strcmp(name, PPB_URLREQUESTINFO_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_URLRequestInfo_Thunk();
+ if (strcmp(name, PPB_URLRESPONSEINFO_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_URLResponseInfo_Thunk();
if (strcmp(name, PPB_URLUTIL_DEV_INTERFACE) == 0)
return PPB_URLUtil_Impl::GetInterface();
if (strcmp(name, PPB_VAR_DEPRECATED_INTERFACE) == 0)
return PPB_Var_Impl::GetVarDeprecatedInterface();
if (strcmp(name, PPB_VAR_INTERFACE_1_0) == 0)
return PPB_Var_Impl::GetVarInterface();
+ if (strcmp(name, PPB_VIDEODECODER_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_VideoDecoder_Thunk();
+ if (strcmp(name, PPB_VIDEO_CAPTURE_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_VideoCapture_Thunk();
if (strcmp(name, PPB_VIDEOLAYER_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_VideoLayer_Dev_Thunk();
+ return ::ppapi::thunk::GetPPB_VideoLayer_Thunk();
+ if (strcmp(name, PPB_WHEEL_INPUT_EVENT_INTERFACE_1_0) == 0)
+ return ::ppapi::thunk::GetPPB_WheelInputEvent_Thunk();
if (strcmp(name, PPB_WIDGET_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_Widget_Dev_Thunk();
+ return ::ppapi::thunk::GetPPB_Widget_Thunk();
if (strcmp(name, PPB_ZOOM_DEV_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Zoom_Thunk();
+#ifdef ENABLE_GPU
+ if (strcmp(name, PPB_GRAPHICS_3D_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Graphics3D_Thunk();
+ if (strcmp(name, PPB_GRAPHICS_3D_TRUSTED_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Graphics3DTrusted_Thunk();
+ if (strcmp(name, PPB_CONTEXT_3D_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Context3D_Thunk();
+ if (strcmp(name, PPB_CONTEXT_3D_TRUSTED_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Context3DTrusted_Thunk();
+ if (strcmp(name, PPB_GLES_CHROMIUM_TEXTURE_MAPPING_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_GLESChromiumTextureMapping_Thunk();
+ if (strcmp(name, PPB_OPENGLES2_INTERFACE) == 0)
+ return PPB_OpenGLES_Impl::GetInterface();
+ if (strcmp(name, PPB_SURFACE_3D_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_Surface3D_Thunk();
+ if (strcmp(name, PPB_LAYER_COMPOSITOR_DEV_INTERFACE) == 0)
+ return ::ppapi::thunk::GetPPB_LayerCompositor_Thunk();
+#endif // ENABLE_GPU
+
#ifdef ENABLE_FLAPPER_HACKS
if (strcmp(name, PPB_FLASH_NETCONNECTOR_INTERFACE) == 0)
return ::ppapi::thunk::GetPPB_Flash_NetConnector_Thunk();
@@ -323,7 +373,7 @@ const void* GetInterface(const char* name) {
#if defined(ENABLE_P2P_APIS)
if (strcmp(name, PPB_TRANSPORT_DEV_INTERFACE) == 0)
- return ::ppapi::thunk::GetPPB_Transport_Dev_Thunk();
+ return ::ppapi::thunk::GetPPB_Transport_Thunk();
#endif
// Only support the testing interface when the command line switch is
diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
index df52f19..b18df2c 100644
--- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc
+++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
@@ -9,7 +9,6 @@
#include "base/message_loop.h"
#include "base/metrics/histogram.h"
#include "base/utf_string_conversions.h"
-#include "ppapi/c/dev/ppb_console_dev.h"
#include "ppapi/c/dev/ppb_find_dev.h"
#include "ppapi/c/dev/ppb_fullscreen_dev.h"
#include "ppapi/c/dev/ppb_memory_dev.h"
@@ -39,7 +38,6 @@
#include "printing/units.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
@@ -106,7 +104,6 @@ using ppapi::thunk::PPB_Surface3D_API;
using ppapi::Var;
using WebKit::WebBindings;
using WebKit::WebCanvas;
-using WebKit::WebConsoleMessage;
using WebKit::WebCursorInfo;
using WebKit::WebDocument;
using WebKit::WebFrame;
@@ -1445,49 +1442,6 @@ PP_Var PluginInstance::ExecuteScript(PP_Instance instance,
return ret;
}
-void PluginInstance::Log(PP_Instance instance,
- int log_level,
- PP_Var value) {
- // TODO(brettw) get the plugin name and use it as the source.
- LogWithSource(instance, log_level, PP_MakeUndefined(), value);
-}
-
-void PluginInstance::LogWithSource(PP_Instance instance,
- int log_level,
- PP_Var source,
- PP_Var value) {
- // Convert the log level, defaulting to error.
- WebConsoleMessage::Level web_level;
- switch (log_level) {
- case PP_LOGLEVEL_TIP:
- web_level = WebConsoleMessage::LevelTip;
- break;
- case PP_LOGLEVEL_LOG:
- web_level = WebConsoleMessage::LevelLog;
- break;
- case PP_LOGLEVEL_WARNING:
- web_level = WebConsoleMessage::LevelWarning;
- break;
- case PP_LOGLEVEL_ERROR:
- default:
- web_level = WebConsoleMessage::LevelError;
- break;
- }
-
- // Format is the "<source>: <value>". The source defaults to the module name
- // if the source isn't a string or is empty.
- std::string message;
- if (source.type == PP_VARTYPE_STRING)
- message = Var::PPVarToLogString(source);
- if (message.empty())
- message = module()->name();
- message.append(": ");
- message.append(Var::PPVarToLogString(value));
-
- container()->element().document().frame()->addMessageToConsole(
- WebConsoleMessage(web_level, WebString(UTF8ToUTF16(message))));
-}
-
PP_Bool PluginInstance::IsFullscreen(PP_Instance instance) {
return PP_FromBool(fullscreen_);
}
diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.h b/webkit/plugins/ppapi/ppapi_plugin_instance.h
index 643828a..48f9019 100644
--- a/webkit/plugins/ppapi/ppapi_plugin_instance.h
+++ b/webkit/plugins/ppapi/ppapi_plugin_instance.h
@@ -264,13 +264,6 @@ class PluginInstance : public base::RefCounted<PluginInstance>,
virtual PP_Var ExecuteScript(PP_Instance instance,
PP_Var script,
PP_Var* exception) OVERRIDE;
- virtual void Log(PP_Instance instance,
- int log_level,
- PP_Var value) OVERRIDE;
- virtual void LogWithSource(PP_Instance instance,
- int log_level,
- PP_Var source,
- PP_Var value) OVERRIDE;
virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
virtual PP_Bool SetFullscreen(PP_Instance instance,
PP_Bool fullscreen) OVERRIDE;
diff --git a/webkit/plugins/ppapi/ppb_console_impl.cc b/webkit/plugins/ppapi/ppb_console_impl.cc
new file mode 100644
index 0000000..1b08ebf
--- /dev/null
+++ b/webkit/plugins/ppapi/ppb_console_impl.cc
@@ -0,0 +1,87 @@
+// Copyright (c) 2011 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/plugins/ppapi/ppb_console_impl.h"
+
+#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
+#include "ppapi/c/dev/ppb_console_dev.h"
+#include "ppapi/shared_impl/var.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
+#include "webkit/plugins/ppapi/plugin_module.h"
+#include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
+#include "webkit/plugins/ppapi/resource_tracker.h"
+
+using ppapi::Var;
+using WebKit::WebConsoleMessage;
+using WebKit::WebString;
+
+namespace webkit {
+namespace ppapi {
+
+namespace {
+
+void LogWithSource(PP_Instance instance_id,
+ PP_LogLevel_Dev level,
+ PP_Var source,
+ PP_Var value) {
+ PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id);
+ if (!instance)
+ return;
+
+ // Convert the log level, defaulting to error.
+ WebConsoleMessage::Level web_level;
+ switch (level) {
+ case PP_LOGLEVEL_TIP:
+ web_level = WebConsoleMessage::LevelTip;
+ break;
+ case PP_LOGLEVEL_LOG:
+ web_level = WebConsoleMessage::LevelLog;
+ break;
+ case PP_LOGLEVEL_WARNING:
+ web_level = WebConsoleMessage::LevelWarning;
+ break;
+ case PP_LOGLEVEL_ERROR:
+ default:
+ web_level = WebConsoleMessage::LevelError;
+ break;
+ }
+
+ // Format is the "<source>: <value>". The source defaults to the module name
+ // if the source isn't a string or is empty.
+ std::string message;
+ if (source.type == PP_VARTYPE_STRING)
+ message = Var::PPVarToLogString(source);
+ if (message.empty())
+ message = instance->module()->name();
+ message.append(": ");
+ message.append(Var::PPVarToLogString(value));
+
+ instance->container()->element().document().frame()->addMessageToConsole(
+ WebConsoleMessage(web_level, WebString(UTF8ToUTF16(message))));
+}
+
+void Log(PP_Instance instance, PP_LogLevel_Dev level, PP_Var value) {
+ LogWithSource(instance, level, PP_MakeUndefined(), value);
+}
+
+const PPB_Console_Dev ppb_console = {
+ &Log,
+ &LogWithSource
+};
+
+} // namespace
+
+// static
+const struct PPB_Console_Dev* PPB_Console_Impl::GetInterface() {
+ return &ppb_console;
+}
+
+} // namespace ppapi
+} // namespace webkit
+
diff --git a/webkit/plugins/ppapi/ppb_console_impl.h b/webkit/plugins/ppapi/ppb_console_impl.h
new file mode 100644
index 0000000..2d47587
--- /dev/null
+++ b/webkit/plugins/ppapi/ppb_console_impl.h
@@ -0,0 +1,23 @@
+// Copyright (c) 2011 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 WEBKIT_PLUGINS_PPAPI_PPB_CONSOLE_IMPL_H_
+#define WEBKIT_PLUGINS_PPAPI_PPB_CONSOLE_IMPL_H_
+
+struct PPB_Console_Dev;
+
+namespace webkit {
+namespace ppapi {
+
+class PPB_Console_Impl {
+ public:
+ // Returns a pointer to the interface implementing PPB_Console_Dev that is
+ // exposed to the plugin.
+ static const PPB_Console_Dev* GetInterface();
+};
+
+} // namespace ppapi
+} // namespace webkit
+
+#endif // WEBKIT_PLUGINS_PPAPI_PPB_CONSOLE_IMPL_H_
diff --git a/webkit/plugins/ppapi/ppb_url_request_info_impl.cc b/webkit/plugins/ppapi/ppb_url_request_info_impl.cc
index 358c533..0ebffb7 100644
--- a/webkit/plugins/ppapi/ppb_url_request_info_impl.cc
+++ b/webkit/plugins/ppapi/ppb_url_request_info_impl.cc
@@ -129,8 +129,7 @@ bool PPB_URLRequestInfo_Impl::ToWebURLRequest(WebFrame* frame,
return false;
dest->initialize();
- dest->setURL(frame->document().completeURL(WebString::fromUTF8(
- data().url)));
+ dest->setURL(frame->document().completeURL(WebString::fromUTF8(data().url)));
dest->setDownloadToFile(data().stream_to_file);
dest->setReportUploadProgress(data().record_upload_progress);