Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/tabs/src/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  tabs.udl   Sprache: unbekannt

 
[Custom]
typedef string TabsGuid;

// a local timestamp, a custom type to avoid using the int directly.
[Custom]
typedef i64 Timestamp;

[External="sync15"]
typedef extern DeviceType;

namespace tabs {

};

[Error]
interface TabsApiError {
    SyncError(string reason);
    SqlError(string reason);
    UnexpectedTabsError(string reason);
};


interface TabsStore {
    constructor(string path);

    void close_connection();

    sequence<ClientRemoteTabs> get_all();

    void set_local_tabs(sequence<RemoteTabRecord> remote_tabs);

    [Self=ByArc]
    RemoteCommandStore new_remote_command_store();

    [Self=ByArc]
    void register_with_sync_manager();

    [Self=ByArc]
    TabsBridgedEngine bridged_engine();

};

dictionary RemoteTabRecord {
    string title;
    sequence<string> url_history;
    string? icon;
    /// Number of ms since the unix epoch (as reported by the client's clock)
    i64 last_used;
    boolean inactive = false;
};

dictionary ClientRemoteTabs {
    string client_id;
    string client_name;
    DeviceType device_type;
    /// Number of ms since the unix epoch (as reported by the server's clock)
    i64 last_modified;
    sequence<RemoteTabRecord> remote_tabs;
};

/// A command which should be sent to a remote device.
[Enum]
interface RemoteCommand {
    CloseTab(string url);
    // CloseInactive(); ??
};

interface RemoteCommandStore {
    /// Add a new command, after which it will be pending. Returns false if the command is already active.
    [Throws=TabsApiError]
    boolean add_remote_command([ByRef] string device_id, [ByRef] RemoteCommand command);

    /// Add a new command with an explicit timestamp. Primarily used by tests.
    [Throws=TabsApiError]
    boolean add_remote_command_at([ByRef] string device_id, [ByRef] RemoteCommand command, Timestamp when);

    /// Removes the remote command. Typically used to implement "undo" but may also be used by the queue
    /// processor when it gives up trying to send a command.
    [Throws=TabsApiError]
    boolean remove_remote_command([ByRef] string device_id, [ByRef] RemoteCommand command);

    /// Return all unsent commands. This is for the code sending the commands, result is sorted by time_requested.
    [Throws=TabsApiError]
    sequence<PendingCommand> get_unsent_commands();

    /// Flag a command as sent.
    [Throws=TabsApiError]
    boolean set_pending_command_sent([ByRef]PendingCommand command);
};

/// Represents a "pending" command.
dictionary PendingCommand {
    string device_id;
    RemoteCommand command;
    Timestamp time_requested;
    Timestamp? time_sent;
};

/// Note the canonical docs for this are in https://searchfox.org/mozilla-central/source/services/interfaces/mozIBridgedSyncEngine.idl
/// It's only actually used in desktop, but it's fine to expose this everywhere.
/// NOTE: all timestamps here are milliseconds.
interface TabsBridgedEngine {
    // readonly attribute long storageVersion;
    // readonly attribute boolean allowSkippedRecord;

    // XXX - better logging story than this?
    // attribute mozIServicesLogSink logger;

    [Throws=TabsApiError]
    i64 last_sync();

    [Throws=TabsApiError]
    void set_last_sync(i64 last_sync);

    [Throws=TabsApiError]
    string? sync_id();

    [Throws=TabsApiError]
    string reset_sync_id();

    [Throws=TabsApiError]
    string ensure_current_sync_id([ByRef]string new_sync_id);

    [Throws=TabsApiError]
    void prepare_for_sync([ByRef]string client_data);

    [Throws=TabsApiError]
    void sync_started();

    [Throws=TabsApiError]
    void store_incoming(sequence<string> incoming_envelopes_as_json);

    [Throws=TabsApiError]
    sequence<string> apply();

    [Throws=TabsApiError]
    void set_uploaded(i64 new_timestamp, sequence<TabsGuid> uploaded_ids);

    [Throws=TabsApiError]
    void sync_finished();

    [Throws=TabsApiError]
    void reset();

    [Throws=TabsApiError]
    void wipe();
};

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]