/* 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"

interface mozIDOMWindowProxy;

[scriptable, uuid(e8420a7b-659b-4325-968b-a114a6a067aa)]
interface nsIBrowserTab : nsISupports {
  readonly attribute mozIDOMWindowProxy window;
  readonly attribute float scale;
};

[scriptable, uuid(08426a73-e70b-4680-9282-630932e2b2bb)]
interface nsIUITelemetryObserver : nsISupports {
  void startSession(in wstring name,
                    in long long timestamp);
  void stopSession(in wstring name,
                   in wstring reason,
                   in long long timestamp);
  void addEvent(in wstring action,
                in wstring method,
                in long long timestamp,
                in wstring extras);
};

[scriptable, uuid(0370450f-2e9c-4d16-b333-8ca6ce31a5ff)]
interface nsIAndroidBrowserApp : nsISupports {
  readonly attribute nsIBrowserTab selectedTab;
  nsIBrowserTab getBrowserTab(in int32_t tabId);
  nsIUITelemetryObserver getUITelemetryObserver();
};

[scriptable, uuid(1beb70d3-70f3-4742-98cc-a3d301b26c0c)]
interface nsIAndroidBridge : nsISupports
{
  [implicit_jscontext] void handleGeckoMessage(in jsval message);
  attribute nsIAndroidBrowserApp browserApp;
  void contentDocumentChanged(in mozIDOMWindowProxy window);
  boolean isContentDocumentDisplayed(in mozIDOMWindowProxy window);
};