/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"
#include "nsIVolume.idl"
#include "nsIVolumeMountLock.idl"

interface nsIArray;

[scriptable, uuid(cfbf9880-cba5-11e4-8830-0800200c9a66)]
interface nsIVolumeService : nsISupports
{
    nsIVolume getVolumeByName(in DOMString volName);
    nsIVolume getVolumeByPath(in DOMString path);
    nsIVolume createOrGetVolumeByPath(in DOMString path);

    nsIVolumeMountLock createMountLock(in DOMString volName);

    nsIArray getVolumeNames();

    void Dump(in DOMString label);

    /* for test case only to simulate sdcard insertion/removal */
    void createFakeVolume(in DOMString name, in DOMString path);
    void SetFakeVolumeState(in DOMString name, in long state);

    /* for test case only to test removal of storage area */
    void removeFakeVolume(in DOMString name);
};

%{C++
#define NS_VOLUMESERVICE_CID \
  {0x7c179fb7, 0x67a0, 0x43a3, {0x93, 0x37, 0x29, 0x4e, 0x03, 0x60, 0xb8, 0x58}}
#define NS_VOLUMESERVICE_CONTRACTID "@mozilla.org/telephony/volume-service;1"
%}
