<?xml version="1.0"?>
# 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/.

<?xml-stylesheet href="chrome://browser/content/pageinfo/pageInfo.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/pageInfo.css" type="text/css"?>

<!DOCTYPE window [
  <!ENTITY % pageInfoDTD SYSTEM "chrome://browser/locale/pageInfo.dtd">
  %pageInfoDTD;
]>

#ifdef XP_MACOSX
<?xul-overlay href="chrome://browser/content/macBrowserOverlay.xul"?>
#endif

<window id="main-window"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  windowtype="Browser:page-info"
  onload="onLoadPageInfo()"
  onunload="onUnloadPageInfo()"
  align="stretch"
  screenX="10" screenY="10"
  width="&pageInfoWindow.width;" height="&pageInfoWindow.height;"
  persist="screenX screenY width height sizemode">

  <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
  <script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
  <script type="application/javascript" src="chrome://global/content/treeUtils.js"/>
  <script type="application/javascript" src="chrome://browser/content/pageinfo/pageInfo.js"/>
  <script type="application/javascript" src="chrome://browser/content/pageinfo/feeds.js"/>
  <script type="application/javascript" src="chrome://browser/content/pageinfo/permissions.js"/>
  <script type="application/javascript" src="chrome://browser/content/pageinfo/security.js"/>
  <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>

  <stringbundleset id="pageinfobundleset">
    <stringbundle id="pageinfobundle" src="chrome://browser/locale/pageInfo.properties"/>
    <stringbundle id="pkiBundle" src="chrome://pippki/locale/pippki.properties"/>
  </stringbundleset>

  <commandset id="pageInfoCommandSet">
    <command id="cmd_close"     oncommand="window.close();"/>
    <command id="cmd_help"      oncommand="doHelpButton();"/>
    <command id="cmd_copy"      oncommand="doCopy();"/>
    <command id="cmd_selectall" oncommand="doSelectAll();"/>

    <!-- permissions tab -->
    <command id="cmd_imageDef"      oncommand="onCheckboxClick('image');"/>
    <command id="cmd_popupDef"      oncommand="onCheckboxClick('popup');"/>
    <command id="cmd_cookieDef"     oncommand="onCheckboxClick('cookie');"/>
    <command id="cmd_installDef"    oncommand="onCheckboxClick('install');"/>
    <command id="cmd_fullscreenDef" oncommand="onCheckboxClick('fullscreen');"/>
    <command id="cmd_geoDef"        oncommand="onCheckboxClick('geo');"/>
    <command id="cmd_indexedDBDef"  oncommand="onCheckboxClick('indexedDB');"/>
    <command id="cmd_pluginsDef"    oncommand="onCheckboxClick('plugins');"/>
    <command id="cmd_imageToggle"   oncommand="onRadioClick('image');"/>
    <command id="cmd_popupToggle"   oncommand="onRadioClick('popup');"/>
    <command id="cmd_cookieToggle"  oncommand="onRadioClick('cookie');"/>
    <command id="cmd_installToggle" oncommand="onRadioClick('install');"/>
    <command id="cmd_fullscreenToggle" oncommand="onRadioClick('fullscreen');"/>
    <command id="cmd_geoToggle"     oncommand="onRadioClick('geo');"/>
    <command id="cmd_indexedDBToggle" oncommand="onRadioClick('indexedDB');"/>
    <command id="cmd_pluginsToggle" oncommand="onRadioClick('plugins');"/>
  </commandset>

  <keyset>
    <key key="&closeWindow.key;" modifiers="accel" command="cmd_close"/>
    <key keycode="VK_ESCAPE"                       command="cmd_close"/>
#ifdef XP_MACOSX
    <key key="."                 modifiers="meta"  command="cmd_close"/>
#else
    <key keycode="VK_F1"                           command="cmd_help"/>
#endif
    <key key="&copy.key;"        modifiers="accel" command="cmd_copy"/>
    <key key="&selectall.key;"   modifiers="accel" command="cmd_selectall"/>
    <key key="&selectall.key;"   modifiers="alt"   command="cmd_selectall"/>
  </keyset>

  <menupopup id="picontext">
    <menuitem id="menu_selectall" label="&selectall.label;" command="cmd_selectall" accesskey="&selectall.accesskey;"/>
    <menuitem id="menu_copy"      label="&copy.label;"      command="cmd_copy"      accesskey="&copy.accesskey;"/>
  </menupopup>

  <windowdragbox id="topBar" class="viewGroupWrapper">
    <radiogroup id="viewGroup" class="chromeclass-toolbar" orient="horizontal">
      <radio id="generalTab"  label="&generalTab;"  accesskey="&generalTab.accesskey;"
           oncommand="showTab('general');"/>
      <radio id="mediaTab"    label="&mediaTab;"    accesskey="&mediaTab.accesskey;"
           oncommand="showTab('media');" hidden="true"/>
      <radio id="feedTab"     label="&feedTab;"     accesskey="&feedTab.accesskey;"
           oncommand="showTab('feed');" hidden="true"/>
      <radio id="permTab"     label="&permTab;"     accesskey="&permTab.accesskey;"
           oncommand="showTab('perm');"/>
      <radio id="securityTab" label="&securityTab;" accesskey="&securityTab.accesskey;"
           oncommand="showTab('security');"/>
      <!-- Others added by overlay -->
    </radiogroup>
  </windowdragbox>

  <deck id="mainDeck" flex="1">
    <!-- General page information -->
    <vbox id="generalPanel">
      <textbox class="header" readonly="true" id="titletext"/>
      <grid>
        <columns>
          <column/>
          <column class="gridSeparator"/>
          <column flex="1"/>
        </columns>
        <rows>
          <row>
            <label control="urltext" value="&generalURL;"/>
            <separator/>
            <textbox readonly="true" id="urltext"/>
          </row>
          <row>
            <separator class="thin"/>
          </row>
          <row>
            <label control="typetext" value="&generalType;"/>
            <separator/>
            <textbox readonly="true" id="typetext"/>
          </row>
          <row>
            <label control="modetext" value="&generalMode;"/>
            <separator/>
            <textbox readonly="true" crop="end" id="modetext"/>
          </row>
          <row>
            <label control="encodingtext" value="&generalEncoding;"/>
            <separator/>
            <textbox readonly="true" id="encodingtext"/>
          </row>
          <row>
            <label control="sizetext" value="&generalSize;"/>
            <separator/>
            <textbox readonly="true" id="sizetext"/>
          </row>
          <row>
            <label control="refertext" value="&generalReferrer;"/>
            <separator/>
            <textbox readonly="true" id="refertext"/>
          </row>
          <row>
            <separator class="thin"/>
          </row>
          <row>
            <label control="modifiedtext" value="&generalModified;"/>
            <separator/>
            <textbox readonly="true" id="modifiedtext"/>
          </row>
        </rows>
      </grid>
      <separator class="thin"/>
      <groupbox id="metaTags" flex="1" class="collapsable treebox">
        <caption id="metaTagsCaption" onclick="toggleGroupbox('metaTags');"/>
        <tree id="metatree" flex="1" hidecolumnpicker="true" contextmenu="picontext">
          <treecols>
            <treecol id="meta-name"    label="&generalMetaName;"
                     persist="width" flex="1"
                     onclick="gMetaView.onPageMediaSort('meta-name');"/>
            <splitter class="tree-splitter"/>
            <treecol id="meta-content" label="&generalMetaContent;"
                     persist="width" flex="4"
                     onclick="gMetaView.onPageMediaSort('meta-content');"/>
          </treecols>
          <treechildren flex="1"/>
        </tree>        
      </groupbox>
      <groupbox id="securityBox">
        <caption id="securityBoxCaption" label="&securityHeader;"/>
        <description id="general-security-identity" class="header"/>
        <description id="general-security-privacy"  class="header"/>
        <hbox align="right">
          <button id="security-view-details" label="&generalSecurityDetails;"
                  accesskey="&generalSecurityDetails.accesskey;"
                  oncommand="onClickMore();"/>
        </hbox>
      </groupbox>
    </vbox>

    <!-- Media information -->
    <vbox id="mediaPanel">
      <tree id="imagetree" onselect="onImageSelect();" contextmenu="picontext"
            ondragstart="onBeginLinkDrag(event,'image-address','image-alt')">
        <treecols>
          <treecol sortSeparators="true" primary="true" persist="width" flex="10"
                        width="10" id="image-address" label="&mediaAddress;"
                        onclick="gImageView.onPageMediaSort('image-address');"/>
          <splitter class="tree-splitter"/>
          <treecol sortSeparators="true" persist="hidden width" flex="2"
                        width="2"  id="image-type"    label="&mediaType;"
                        onclick="gImageView.onPageMediaSort('image-type');"/>
          <splitter class="tree-splitter"/>
          <treecol sortSeparators="true" hidden="true" persist="hidden width" flex="2"
                        width="2"  id="image-size"  label="&mediaSize;" value="size"
                        onclick="gImageView.onPageMediaSort('image-size');"/>
          <splitter class="tree-splitter"/>
          <treecol sortSeparators="true" hidden="true" persist="hidden width" flex="4"
                        width="4"  id="image-alt"    label="&mediaAltHeader;"
                        onclick="gImageView.onPageMediaSort('image-alt');"/>
          <splitter class="tree-splitter"/>
          <treecol sortSeparators="true" hidden="true" persist="hidden width" flex="1"
                        width="1"  id="image-count"    label="&mediaCount;"
                        onclick="gImageView.onPageMediaSort('image-count');"/>
        </treecols>
        <treechildren flex="1"/>
      </tree>
      <splitter orient="vertical" id="mediaSplitter"/>
      <vbox flex="1" id="mediaPreviewBox" collapsed="true">
        <grid id="mediaGrid">
          <columns>
            <column id="mediaLabelColumn"/>
            <column class="gridSeparator"/>
            <column flex="1"/>
          </columns>
          <rows>
            <row>
              <label control="imageurltext" value="&mediaLocation;"/>
              <separator/>
              <textbox readonly="true" id="imageurltext"/>
            </row>
            <row>
              <label control="imagetypetext" value="&generalType;"/>
              <separator/>
              <textbox readonly="true" id="imagetypetext"/>
            </row>
            <row>
              <label control="imagesizetext" value="&generalSize;"/>
              <separator/>
              <textbox readonly="true" id="imagesizetext"/>
            </row>
            <row>
              <label control="imagedimensiontext" value="&mediaDimension;"/>
              <separator/>
              <textbox readonly="true" id="imagedimensiontext"/>
            </row>
            <row>
              <label control="imagetext" value="&mediaText;"/>
              <separator/>
              <textbox readonly="true" id="imagetext"/>
            </row>
            <row>
              <label control="imagelongdesctext" value="&mediaLongdesc;"/>
              <separator/>
              <textbox readonly="true" id="imagelongdesctext"/>
            </row>
          </rows>
        </grid>
        <hbox align="end">
          <vbox>
            <checkbox id="blockImage" hidden="true" oncommand="onBlockImage()"
                      accesskey="&mediaBlockImage.accesskey;"/>
            <label control="thepreviewimage" value="&mediaPreview;" class="header"/>
          </vbox>
          <spacer flex="1"/>
          <button label="&mediaSaveAs;" accesskey="&mediaSaveAs.accesskey;"
                  icon="save" id="imagesaveasbutton"
                  oncommand="saveMedia();"/>
        </hbox>
        <vbox class="inset iframe" flex="1" pack="center">
          <hbox id="theimagecontainer" pack="center">
            <image id="thepreviewimage"/>
          </hbox>
          <hbox id="brokenimagecontainer" pack="center" collapsed="true">
            <image id="brokenimage" src="resource://gre-resources/broken-image.png"/>
          </hbox>
        </vbox>
      </vbox>
      <hbox id="mediaSaveBox" collapsed="true">
        <spacer flex="1"/>
        <button label="&mediaSaveAs;" accesskey="&mediaSaveAs2.accesskey;"
                icon="save" oncommand="saveMedia();"/>
      </hbox>
    </vbox>

    <!-- Feeds -->
    <vbox id="feedPanel">
      <richlistbox id="feedListbox" flex="1"/>
    </vbox>

    <!-- Permissions -->
    <vbox id="permPanel">
      <hbox>
        <label value="&permissionsFor;" control="hostText" />
        <textbox id="hostText" class="header" readonly="true"
                 crop="end" flex="1"/>
      </hbox>

      <vbox id="permList" flex="1">
        <vbox class="permission">
          <label class="permissionLabel" id="permImageLabel"
                 value="&permImage;" control="imageRadioGroup"/>
          <hbox role="group" aria-labelledby="permImageLabel">
            <checkbox id="imageDef" command="cmd_imageDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="imageRadioGroup" orient="horizontal">
              <radio id="image#1" command="cmd_imageToggle" label="&permAllow;"/>
              <radio id="image#2" command="cmd_imageToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permPopupLabel"
                 value="&permPopup;" control="popupRadioGroup"/>
          <hbox role="group" aria-labelledby="permPopupLabel">
            <checkbox id="popupDef" command="cmd_popupDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="popupRadioGroup" orient="horizontal">
              <radio id="popup#1" command="cmd_popupToggle" label="&permAllow;"/>
              <radio id="popup#2" command="cmd_popupToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permCookieLabel"
                 value="&permCookie;" control="cookieRadioGroup"/>
          <hbox role="group" aria-labelledby="permCookieLabel">
            <checkbox id="cookieDef" command="cmd_cookieDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="cookieRadioGroup" orient="horizontal">
              <radio id="cookie#1" command="cmd_cookieToggle" label="&permAllow;"/>
              <radio id="cookie#8" command="cmd_cookieToggle" label="&permAllowSession;"/>
              <radio id="cookie#2" command="cmd_cookieToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permInstallLabel"
                 value="&permInstall;" control="installRadioGroup"/>
          <hbox role="group" aria-labelledby="permInstallLabel">
            <checkbox id="installDef" command="cmd_installDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="installRadioGroup" orient="horizontal">
              <radio id="install#1" command="cmd_installToggle" label="&permAllow;"/>
              <radio id="install#2" command="cmd_installToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permGeoLabel"
                 value="&permGeo;" control="geoRadioGroup"/>
          <hbox role="group" aria-labelledby="permGeoLabel">
            <checkbox id="geoDef" command="cmd_geoDef" label="&permAskAlways;"/>
            <spacer flex="1"/>
            <radiogroup id="geoRadioGroup" orient="horizontal">
              <radio id="geo#1" command="cmd_geoToggle" label="&permAllow;"/>
              <radio id="geo#2" command="cmd_geoToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permIndexedDBLabel"
                 value="&permIndexedDB;" control="indexedDBRadioGroup"/>
          <hbox role="group" aria-labelledby="permIndexedDBLabel">
            <checkbox id="indexedDBDef" command="cmd_indexedDBDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="indexedDBRadioGroup" orient="horizontal">
              <!-- Ask and Allow are purposefully reversed here! -->
              <radio id="indexedDB#1" command="cmd_indexedDBToggle" label="&permAskAlways;"/>
              <radio id="indexedDB#0" command="cmd_indexedDBToggle" label="&permAllow;"/>
              <radio id="indexedDB#2" command="cmd_indexedDBToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
          <hbox>
            <spacer flex="1"/>
            <vbox pack="center">
              <label id="indexedDBStatus" control="indexedDBClear" hidden="true"/>
            </vbox>
            <button id="indexedDBClear" label="&permClearStorage;" hidden="true"
                    accesskey="&permClearStorage.accesskey;" onclick="onIndexedDBClear();"/>
          </hbox>
        </vbox>
        <vbox class="permission" id="permPluginsRow">
          <label class="permissionLabel" id="permPluginsLabel"
                 value="&permPlugins;" control="pluginsRadioGroup"/>
          <hbox role="group" aria-labelledby="permPluginsLabel">
            <checkbox id="pluginsDef" command="cmd_pluginsDef" label="&permAskAlways;"/>
            <spacer flex="1"/>
            <radiogroup id="pluginsRadioGroup" orient="horizontal">
              <radio id="plugins#1" command="cmd_pluginsToggle" label="&permAllow;"/>
              <radio id="plugins#2" command="cmd_pluginsToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
        <vbox class="permission">
          <label class="permissionLabel" id="permFullscreenLabel"
                 value="&permFullscreen;" control="fullscreenRadioGroup"/>
          <hbox role="group" aria-labelledby="permFullscreenLabel">
            <checkbox id="fullscreenDef" command="cmd_fullscreenDef" label="&permUseDefault;"/>
            <spacer flex="1"/>
            <radiogroup id="fullscreenRadioGroup" orient="horizontal">
              <radio id="fullscreen#0" command="cmd_fullscreenToggle" label="&permAskAlways;"/>
              <radio id="fullscreen#1" command="cmd_fullscreenToggle" label="&permAllow;"/>
              <radio id="fullscreen#2" command="cmd_fullscreenToggle" label="&permBlock;"/>
            </radiogroup>
          </hbox>
        </vbox>
      </vbox>
    </vbox>

    <!-- Security & Privacy -->
    <vbox id="securityPanel">
      <!-- Identity Section -->
      <groupbox id="security-identity-groupbox" flex="1">
        <caption id="security-identity" label="&securityView.identity.header;"/>
        <grid flex="1">
          <columns>
            <column/>
            <column flex="1"/>
          </columns>
          <rows>
            <row><!-- Domain -->
              <label id="security-identity-domain-label"
                     class="fieldLabel"
                     value="&securityView.identity.domain;"
                     control="security-identity-domain-value"/>
              <textbox id="security-identity-domain-value"
                       class="fieldValue" readonly="true"/>
            </row>
            <row><!-- Owner -->
              <label id="security-identity-owner-label"
                     class="fieldLabel"
                     value="&securityView.identity.owner;"
                     control="security-identity-owner-value"/>
              <textbox id="security-identity-owner-value"
                       class="fieldValue" readonly="true"/>
            </row>
            <row><!-- Verifier -->
              <label id="security-identity-verifier-label"
                     class="fieldLabel"
                     value="&securityView.identity.verifier;"
                     control="security-identity-verifier-value"/>
              <textbox id="security-identity-verifier-value"
                       class="fieldValue" readonly="true" />
            </row>
          </rows>
        </grid>
        <spacer flex="1"/>
        <hbox pack="end"><!-- Cert button -->
          <button id="security-view-cert" label="&securityView.certView;"
                  accesskey="&securityView.accesskey;"
                  oncommand="security.viewCert();"/>
        </hbox>
      </groupbox>
      
      <!-- Privacy & History section -->
      <groupbox id="security-privacy-groupbox" flex="1">
        <caption id="security-privacy" label="&securityView.privacy.header;" />
        <grid>
          <columns>
            <column flex="1"/>
            <column flex="1"/>
          </columns>
          <rows>
            <row><!-- History -->
              <label id="security-privacy-history-label"
                           control="security-privacy-history-value"
                           class="fieldLabel">&securityView.privacy.history;</label>
              <textbox id="security-privacy-history-value"
                       class="fieldValue"
                       value="&securityView.unknown;"
                       readonly="true"/>
            </row>
            <row><!-- Cookies -->
              <label id="security-privacy-cookies-label"
                           control="security-privacy-cookies-value"
                           class="fieldLabel">&securityView.privacy.cookies;</label>
              <hbox align="center">
                <textbox id="security-privacy-cookies-value"
                         class="fieldValue"
                         value="&securityView.unknown;"
                         flex="1"
                         readonly="true"/>
                <button id="security-view-cookies"
                        label="&securityView.privacy.viewCookies;"
                        accesskey="&securityView.privacy.viewCookies.accessKey;"
                        oncommand="security.viewCookies();"/>
              </hbox>
            </row>
            <row><!-- Passwords -->
              <label id="security-privacy-passwords-label"
                            control="security-privacy-passwords-value"
                            class="fieldLabel">&securityView.privacy.passwords;</label>
              <hbox align="center">
                <textbox id="security-privacy-passwords-value"
                         class="fieldValue"
                         value="&securityView.unknown;"
                         flex="1"
                         readonly="true"/>
                <button id="security-view-password"
                        label="&securityView.privacy.viewPasswords;"
                        accesskey="&securityView.privacy.viewPasswords.accessKey;"
                        oncommand="security.viewPasswords();"/>
              </hbox>
            </row>
          </rows>
        </grid>
      </groupbox>
      
      <!-- Technical Details section -->
      <groupbox id="security-technical-groupbox" flex="1">
        <caption id="security-technical" label="&securityView.technical.header;" />
        <vbox flex="1">
          <label id="security-technical-shortform" class="fieldValue"/>
          <description id="security-technical-longform1" class="fieldLabel"/>
          <description id="security-technical-longform2" class="fieldLabel"/>
        </vbox>
      </groupbox>
    </vbox>
    <!-- Others added by overlay -->
  </deck>

#ifdef XP_MACOSX
#include ../browserMountPoints.inc
#endif

</window>
