chromium/ui/file_manager/integration_tests/testing_provider/background.js

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

'use strict';

// eslint-disable-next-line no-var
var dialogSettings = {};

function mountFileSystem(onSuccess, onError) {
  chrome.fileSystemProvider.getAll((mounted) => {
    const index = mounted.length + 1;
    chrome.fileSystemProvider.mount({
      fileSystemId: 'test-fs-' + index,
      displayName: 'Test (' + index + ')',
    });
  });
}

chrome.fileSystemProvider.onGetMetadataRequested.addListener(
    (options, onSuccess, onError) => {
      onSuccess({
        isDirectory: true,
        name: '',
        size: 0,
        modificationTime: new Date(),
      });
    });

chrome.fileSystemProvider.onReadDirectoryRequested.addListener(
    (options, onSuccess, onError) => {
      // For anything other than root, return no entries.
      if (options.directoryPath !== '/') {
        onSuccess([], false /* hasMore */);
        return;
      }
      // For root we return 1 folder entry.
      const entries = [
        {
          isDirectory: true,
          name: 'folder',
        },
      ];
      onSuccess(entries, false /* hasMore */);
    });

chrome.fileSystemProvider.onMountRequested.addListener(mountFileSystem);

chrome.fileSystemProvider.onUnmountRequested.addListener(
    (options, onSuccess, onError) => {
      chrome.fileSystemProvider.unmount(
          {fileSystemId: options.fileSystemId}, () => {
            if (chrome.runtime.lastError) {
              onError(chrome.runtime.lastError.message);
            } else {
              onSuccess();
            }
          });
    });

chrome.fileSystemProvider.onGetActionsRequested.addListener(
    (options, onSuccess, onError) => {
      onSuccess([]);
    });

// If the manifest for device or file source is used, then mount a fake file
// system on install.
if (chrome.runtime.getManifest().description === 'Testing Provider device' ||
    chrome.runtime.getManifest().description === 'Testing Provider file') {
  chrome.runtime.onInstalled.addListener(mountFileSystem);
}