<!--                                                                        -->
<!-- Copyright 2008 Google Inc.                                             -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
<!-- may not use this file except in compliance with the License. You may   -->
<!-- may obtain a copy of the License at                                    -->
<!--                                                                        -->
<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
<!--                                                                        -->
<!-- Unless required by applicable law or agreed to in writing, software    -->
<!-- distributed under the License is distributed on an "AS IS" BASIS,      -->
<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        -->
<!-- implied. License for the specific language governing permissions and   -->
<!-- limitations under the License.                                         -->

<!-- Types and resources required to support primitive system operation.    -->
<!--                                                                        -->
<!-- Types from this module are visible to and imported into user code.     -->
<!-- Every module should directly or indirectly inherit this module.        -->
<!--                                                                        -->
<module>

  <!--
    A property that can be used to see if Super Dev Mode is on.
    It should only be set by Super Dev Mode and defined on the top so that
    all modules can use it.
  -->
  <define-property name="superdevmode" values="off, on"/>
  <set-property name="superdevmode" value="off"/>

  <define-property name="jre.debugMode" values="ENABLED,DISABLED" />
  <set-property name="jre.debugMode" value="DISABLED" />
  <set-property name="jre.debugMode" value="ENABLED">
    <when-property-is name="superdevmode" value="on" />
  </set-property>

  <inherits name="com.google.gwt.dev.jjs.intrinsic.Intrinsic" />
  <inherits name="com.google.gwt.core.CompilerParameters" />
  <inherits name="com.google.gwt.emul.Emulation" />
  <inherits name="com.google.gwt.core.StackTrace" />
  <inherits name="com.google.gwt.core.AsyncFragmentLoader" />

  <source path="client" />
  <source path="shared" />
  <super-source path="translatable" />
  <public path="public" />

  <define-linker name="sso" class="com.google.gwt.core.linker.SingleScriptLinker" />
  <define-linker name="std" class="com.google.gwt.core.linker.IFrameLinker" />
  <inherits name="com.google.gwt.core.XSLinker" />
  <inherits name="com.google.gwt.core.CrossSiteIframeLinker" />

  <!-- std and xs linkers are deprecated and will emit a warning, which can be turned off -->
  <define-configuration-property name="iframe.linker.suppressDeprecationWarning" is-multi-valued="false" />
  <set-configuration-property name="iframe.linker.suppressDeprecationWarning" value="false" />

  <replace-with class="com.google.gwt.core.client.impl.SuperDevModeLogger">
      <when-property-is name="superdevmode" value="on"/>
      <when-type-is class="com.google.gwt.core.shared.impl.JsLogger"/>
  </replace-with>

  <define-linker name="soycReport" class="com.google.gwt.core.linker.SoycReportLinker" />
  <define-linker name="symbolMaps" class="com.google.gwt.core.linker.SymbolMapsLinker" />

  <add-linker name="xsiframe" />

  <add-linker name="soycReport" />
  <add-linker name="symbolMaps" />

  <!--
   Setting this value to OFF will compile out all logging.  Setting it to SEVERE, WARNING
   or INFO means that the logging framework will not compile out, but the basic logging
   calls like logger.fine() will compile out if it is below the level that is set.
   Note that something like logger.log(Level.INFO, "foo") *will not* compile out.
   -->
  <define-property name="jre.logging.logLevel" values="OFF, SEVERE, WARNING, INFO, ALL" />
  <set-property name="jre.logging.logLevel" value="OFF"/>

  <set-property name="jre.logging.logLevel" value="ALL">
    <when-property-is name="jre.debugMode" value="ENABLED"/>
  </set-property>

  <define-property name="jre.logging.simpleConsoleHandler" values="ENABLED, DISABLED" />
  <set-property name="jre.logging.simpleConsoleHandler" value="ENABLED"/>

  <!--
   Configures if the UncaughtExceptionHandler will trap errors coming from
   listening on window.error.
   Three different flags are:
     - Trap window on error at all times and forward (REPORT)
     - Only trap window.onerror if there is no current window.onerror handler (REPORT_IF_NO_HANDLER)
     - Do not trap anything (legacy behavior) (IGNORE)
  -->
  <define-property name="gwt.uncaughtexceptionhandler.windowonerror" values="IGNORE, REPORT, REPORT_IF_NO_HANDLER" />
  <set-property name="gwt.uncaughtexceptionhandler.windowonerror" value="REPORT_IF_NO_HANDLER"/>

  <!-- To support legacy logging flags -->
  <inherits name="com.google.gwt.logging.LogImpl"/>
</module>
