Combine the Web Inspector's JavaScript resources into one large
authortimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Jun 2008 21:33:07 +0000 (21:33 +0000)
committertimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 18 Jun 2008 21:33:07 +0000 (21:33 +0000)
        script file to speed up loading of the Inspector.

        Reviewed by Adam Roben.

        * WebCore.xcodeproj/project.pbxproj: Added a Streamline Inspector Source
        script build phase that calls combine-javascript-resources and
        moves files around in the build directory.
        * combine-javascript-resources: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@34651 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/combine-javascript-resources [new file with mode: 0755]

index 410481f..e1bb560 100644 (file)
@@ -1,3 +1,16 @@
+2008-06-18  Timothy Hatcher  <timothy@apple.com>
+
+        Combine the Web Inspector's JavaScript resources into one large
+        script file to speed up loading of the Inspector. This is only
+        done for Release and Production builds.
+
+        Reviewed by Adam Roben.
+
+        * WebCore.xcodeproj/project.pbxproj: Added a Streamline Inspector Source
+        script build phase that calls combine-javascript-resources and
+        moves files around in the build directory.
+        * combine-javascript-resources: Added.
+
 2008-06-18  Rob Buis  <buis@kde.org>
 
         Reviewed by Darin.
index f1d0080..1fc9ec8 100644 (file)
                                1C11CCB40AA6093700DADB20 /* Copy Generated Headers */,
                                1CC93C640DAE929600E4BC3A /* Copy Forwarding and ICU Headers */,
                                93F199FD08245E59001E9ABC /* Resources */,
+                               1C5F9D760E09A1B400E91D0A /* Streamline Inspector Source */,
                                93F19A0C08245E59001E9ABC /* Sources */,
                                939D050109D9FF6B00984996 /* Check For Global Initializers */,
                                93F19B1208245E59001E9ABC /* Frameworks */,
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
+               1C5F9D760E09A1B400E91D0A /* Streamline Inspector Source */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                               "$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/inspector",
+                               "$(SRCROOT)/combine-javascript-resources",
+                       );
+                       name = "Streamline Inspector Source";
+                       outputPaths = (
+                               "$(DERIVED_FILE_DIR)/WebCore/inspector.html",
+                               "$(DERIVED_FILE_DIR)/WebCore/inspector.js",
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "# Don't do anything for Debug builds, so the Inspector is easier to debug.\nif [[ ${BUILD_STYLE:=Debug} == \"Debug\" ]]; then\n    exit\nfi\n\n# Combine all script resources in the inspector.html file.\n\"$SRCROOT/combine-javascript-resources\" --input-html \"${SRCROOT}/page/inspector/inspector.html\" --output-dir \"${DERIVED_FILE_DIR}/WebCore\" --output-script-name inspector.js\n\n# Remove any JavaScript files, since they will be replaced with the combined file.\ncd \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector\"\nrm *.js\n\n# Copy the modified HTML file and the combined script.\ncp \"${DERIVED_FILE_DIR}/WebCore/inspector.html\" inspector.html\ncp \"${DERIVED_FILE_DIR}/WebCore/inspector.js\" inspector.js\n";
+               };
                1CB71D4A0B02658D0061EA45 /* Generate 64-bit Export File */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
diff --git a/WebCore/combine-javascript-resources b/WebCore/combine-javascript-resources
new file mode 100755 (executable)
index 0000000..96dfc88
--- /dev/null
@@ -0,0 +1,79 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2008 Apple Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Script to combine multiple JavaScript files into one file, based on
+# the script tags in the head of an input HTML file.
+
+use strict;
+use Getopt::Long;
+use File::Basename;
+use File::Path;
+
+my $outputDirectory;
+my $scriptName;
+my $htmlFile;
+
+GetOptions('output-dir=s' => \$outputDirectory,
+           'output-script-name=s' => \$scriptName,
+           'input-html=s' => \$htmlFile);
+
+unless (defined $htmlFile and defined $scriptName and defined $outputDirectory) {
+    print "Usage: $0 --input-html <path> --output-dir path --output-script-name <name>\n";
+    exit;
+}
+
+my $htmlDirectory = dirname($htmlFile);
+my $htmlContents;
+
+{
+    local $/;
+    open HTML, $htmlFile or die;
+    $htmlContents = <HTML>;
+    close HTML;
+}
+
+$htmlContents =~ m/<head>(.*)<\/head>/si;
+my $headContents = $1;
+
+mkpath $outputDirectory;
+open SCRIPT_OUT, ">", "$outputDirectory/$scriptName" or die "Can't open $outputDirectory/$scriptName: $!";
+
+while ($headContents =~ m/<script.*src="([^"]*)"[^>]*>/gi) {
+    local $/;
+    open SCRIPT_IN, "$htmlDirectory/$1" or die "Can't open $htmlDirectory/$1: $!";
+    print SCRIPT_OUT "/* $1 */\n\n";
+    print SCRIPT_OUT <SCRIPT_IN>;
+    close SCRIPT_IN;
+}
+
+close SCRIPT_OUT;
+
+$headContents =~ s/<script.*src="[^"]*"[^>]*><\/script>\s*//gi;
+$headContents .= "<script type=\"text/javascript\" src=\"$scriptName\"></script>\n";
+$htmlContents =~ s/<head>.*<\/head>/<head>$headContents<\/head>/si;
+
+open HTML, ">", "$outputDirectory/" . basename($htmlFile) or die "Can't open $outputDirectory/" . basename($htmlFile) . ": $!";
+print HTML $htmlContents;
+close HTML;