/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";

add_task(async function webNavigation_getFrameId_of_existing_main_frame() {
  const BASE =
    "http://mochi.test:8888/browser/browser/components/extensions/test/browser/";
  const DUMMY_URL = BASE + "file_dummy.html";
  let tab = await BrowserTestUtils.openNewForegroundTab(
    gBrowser,
    DUMMY_URL,
    true
  );

  async function background(DUMMY_URL) {
    let tabs = await browser.tabs.query({ active: true, currentWindow: true });
    let frames = await browser.webNavigation.getAllFrames({
      tabId: tabs[0].id,
    });
    browser.test.assertEq(1, frames.length, "The dummy page has one frame");
    browser.test.assertEq(0, frames[0].frameId, "Main frame's ID must be 0");
    browser.test.assertEq(
      DUMMY_URL,
      frames[0].url,
      "Main frame URL must match"
    );
    browser.test.notifyPass("frameId checked");
  }

  let extension = ExtensionTestUtils.loadExtension({
    manifest: {
      permissions: ["webNavigation"],
    },

    background: `(${background})(${JSON.stringify(DUMMY_URL)});`,
  });

  await extension.startup();
  await extension.awaitFinish("frameId checked");
  await extension.unload();

  BrowserTestUtils.removeTab(tab);
});
