15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Called by the common.js module. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function attachListeners() { 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) document.getElementById('fileInput').addEventListener('change', 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handleFileInput); 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) document.getElementById('listener').addEventListener('drop', 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handleFileDrop, true); 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function postFileContents(file) { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var reader = new FileReader(); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reader.onload = function(load_event) { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (common.naclModule) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) common.naclModule.postMessage(load_event.target.result); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reader.readAsArrayBuffer(file); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Handle a file being dropped on to the plugin's rectangle. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function handleFileDrop(dropEvent) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!dropEvent.dataTransfer || !dropEvent.dataTransfer.files) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dropEvent.stopPropagation(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dropEvent.preventDefault(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var files = dropEvent.dataTransfer.files; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for(var i = 0; i < files.length; ++i) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) postFileContents(files[i]); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Handle a file being chosen from the <input type=file...> tag. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function handleFileInput() { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var file_input = document.getElementById("fileInput"); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var files = file_input.files; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for(var i = 0; i < files.length; ++i) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) postFileContents(files[i]); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 40