1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen/** 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Global fileManager reference useful for poking at from the console. 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvar fileManager; 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen/** 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Kick off the file manager dialog. 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * Called by main.html after the dom has been parsed. 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen */ 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenfunction init() { 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var params; 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var rootPaths = ['Downloads', 'media']; 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (document.location.search) { 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var json = decodeURIComponent(document.location.search.substr(1)); 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var params = JSON.parse(json); 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen console.log('params: ' + JSON.stringify(params)); 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function onEntriesFound(entries) { 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FileManager.initStrings(function () { 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen fileManager = new FileManager(document.body, entries, params); 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }); 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function onFileSystemFound(filesystem) { 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen console.log('Found filesystem: ' + filesystem.name, filesystem); 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen var entries = []; 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function onPathError(path, err) { 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen console.error('Error locating root path: ' + path + ': ' + err); 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen function onEntryFound(entry) { 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (entry) { 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen entries.push(entry); 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } else { 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen onEntriesFound(entries); 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (filesystem.name.match(/^chrome-extension_\S+:external/i)) { 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // We've been handed the local filesystem, whose root directory 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // cannot be enumerated. 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen util.getDirectories(filesystem.root, {create: false}, rootPaths, 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen onEntryFound, onPathError); 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } else { 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen util.forEachDirEntry(filesystem.root, onEntryFound); 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen util.installFileErrorToString(); 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen console.log('Requesting filesystem.'); 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chrome.fileBrowserPrivate.requestLocalFileSystem(onFileSystemFound); 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 64