<!--                                                                        -->
<!-- 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.                                         -->

<!-- ClientBundle supports renaming files with strong names at compile time  -->
<module type="fileset">
  <!-- Pull in the necessary base support, including user.agent detection -->
  <inherits name="com.google.gwt.core.Core" />
  <!-- Pull in SafeUri and SafeUriUtils -->
  <inherits name="com.google.gwt.safehtml.SafeHtml" />
  <!-- Pull in StyleInjector for CssResource -->
  <inherits name="com.google.gwt.dom.DOM" />
  <!-- Used by ExternalTextResource -->
  <inherits name="com.google.gwt.http.HTTP" />
  <inherits name="com.google.gwt.jsonp.Jsonp" />
  <source path="client" />
  <public path="public" />

  <!--  This acts as a switch to disable the use of data: URLs -->
  <define-property name="ClientBundle.enableInlining" values="true,false" />
  <set-property name="ClientBundle.enableInlining" value="true" />

  <!-- Specify the default behavior which should work on all browsers -->
  <generate-with
    class="com.google.gwt.resources.rebind.context.StaticClientBundleGenerator">

    <!-- We have to specify on which types to execute the Generator -->
    <when-type-assignable
      class="com.google.gwt.resources.client.ClientBundle" />
  </generate-with>

  <!-- Last-matches wins, so this will selectively override the previous rule -->
  <generate-with
    class="com.google.gwt.resources.rebind.context.InlineClientBundleGenerator">

    <!-- We have a number of conditions that must be satisfied -->
    <all>
      <!-- Is inlining enabled? -->
      <when-property-is name="ClientBundle.enableInlining" value="true" />

      <!-- Again, it's necessary to specify which types the generator runs on -->
      <when-type-assignable
        class="com.google.gwt.resources.client.ClientBundle" />

      <!-- Ancient browsers support RFC 2397 data: URLs -->
      <none>
        <when-property-is name="user.agent" value="ie6" />
      </none>
    </all>
  </generate-with>

  <!-- This can be used to disable the use of strongly-named files -->
  <define-configuration-property name="ClientBundle.enableRenaming" is-multi-valued="false" />
  <set-configuration-property name="ClientBundle.enableRenaming" value="true" />

  <!-- This allows merging of CSS rules to be disabled. -->
  <define-configuration-property name="CssResource.mergeEnabled" is-multi-valued="false" />
  <set-configuration-property name="CssResource.mergeEnabled" value="true" />

  <!-- This allows the developer to use shorter obfuscated class names. -->
  <!-- Is is valid to extend this property to use a custom name. -->
  <define-configuration-property name="CssResource.obfuscationPrefix" is-multi-valued="false" />
  <set-configuration-property name="CssResource.obfuscationPrefix" value="default" />

  <!-- A multi-valued configuration property that defines class name prefixes -->
  <!-- the CssResource obfuscator should not use. -->
  <define-configuration-property name="CssResource.reservedClassPrefixes" is-multi-valued="true" />
  <extend-configuration-property name="CssResource.reservedClassPrefixes" value="gwt-" />

  <!-- This can be used to make CssResource produce human-readable CSS -->
  <define-configuration-property name="CssResource.style" is-multi-valued="false" />
  <set-configuration-property name="CssResource.style" value="obf" />

  <!-- This can be used to make ExternalTextResource use JSONP rather than XHR -->
  <!-- by setting the value to true. -->
  <define-configuration-property name="ExternalTextResource.useJsonp" is-multi-valued="false" />
  <set-configuration-property name="ExternalTextResource.useJsonp" value="false" />
</module>
