question 1: 
 after the [continue to add] button of the webuploader plugin is clicked, after the file box pops up, you cannot drag and drop files, but Google can drag and drop them. 
 Code: 
-webuploader.js- 
define("lib/filepicker",[
    "base",
    "runtime/client",
    "lib/file"
], function( Base, RuntimeClient, File ) {
    var $ = Base.$;
    function FilePicker( opts ) {
        opts = this.options = $.extend({}, FilePicker.options, opts );
        opts.container = $( opts.id );
        if ( !opts.container.length ) {
            throw new Error("");
        }
        opts.innerHTML = opts.innerHTML || opts.label ||
                opts.container.html() || "";
        opts.button = $( opts.button || document.createElement("div") );
        opts.button.html( opts.innerHTML );
        opts.container.html( opts.button );
        RuntimeClient.call( this, "FilePicker", true );
    }
    FilePicker.options = {
        button: null,
        container: null,
        label: null,
        innerHTML: null,
        multiple: true,
        accept: null,
        name: "file",
        style: "webuploader-pick"   //pick element class attribute, default is "webuploader-pick"
    };
    Base.inherits(RuntimeClient, {
        constructor: FilePicker,
        init: function() {
            var me = this,
                opts = me.options,
                button = opts.button,
                style = opts.style;
            if (style)
                button.addClass("webuploader-pick");
            me.on( "all", function( type ) {
                var files;
                switch ( type ) {
                    case "mouseenter":
                        if (style)
                            button.addClass("webuploader-pick-hover");
                        break;
                    case "mouseleave":
                        if (style)
                            button.removeClass("webuploader-pick-hover");
                        break;
                    case "change":
                        files = me.exec("getFiles");
                        me.trigger( "select", $.map( files, function( file ) {
                            file = new File( me.getRuid(), file );
                            // 
                            file._refer = opts.container;
                            return file;
                        }), opts.container );
                        break;
                }
            });
            me.connectRuntime( opts, function() {
                me.refresh();
                me.exec( "init", opts );
                me.trigger("ready");
            });
            this._resizeHandler = Base.bindFn( this.refresh, this );
            $( window ).on( "resize", this._resizeHandler );
        },
        refresh: function() {
            var shimContainer = this.getRuntime().getContainer(),
                button = this.options.button,
                width = button.outerWidth ?
                        button.outerWidth() : button.width(),
                height = button.outerHeight ?
                        button.outerHeight() : button.height(),
                pos = button.offset();
            width && height && shimContainer.css({
                bottom: "auto",
                right: "auto",
                width: width + "px",
                height: height + "px"
            }).offset( pos );
        },
        enable: function() {
            var btn = this.options.button;
            btn.removeClass("webuploader-pick-disable");
            this.refresh();
        },
        disable: function() {
            var btn = this.options.button;
            this.getRuntime().getContainer().css({
                top: "-99999px"
            });
            btn.addClass("webuploader-pick-disable");
        },
        destroy: function() {
            var btn = this.options.button;
            $( window ).off( "resize", this._resizeHandler );
            btn.removeClass("webuploader-pick-disable webuploader-pick-hover " +
                "webuploader-pick");
        }
    });
    return FilePicker;
});