Merge from Chromium at DEPS revision 251904
This commit was generated by merge_to_master.py.
Change-Id: I8ca36eee41eba7e9a56d6728a9d19e5883d7058c
diff --git a/Source/devtools/PRESUBMIT.py b/Source/devtools/PRESUBMIT.py
new file mode 100644
index 0000000..88aca79
--- /dev/null
+++ b/Source/devtools/PRESUBMIT.py
@@ -0,0 +1,117 @@
+# Copyright (C) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+"""DevTools JSDoc validator presubmit script
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details about the presubmit API built into gcl.
+"""
+
+import os
+import re
+import sys
+
+
+def _CompileDevtoolsFrontend(input_api, output_api):
+ if not input_api.platform.startswith('linux'):
+ return []
+ local_paths = [f.LocalPath() for f in input_api.AffectedFiles()]
+ if (any("devtools/front_end" in path for path in local_paths) or
+ any("InjectedScriptSource.js" in path for path in local_paths) or
+ any("InjectedScriptCanvasModuleSource.js" in path for path in local_paths)):
+ lint_path = input_api.os_path.join(input_api.PresubmitLocalPath(),
+ "scripts", "compile_frontend.py")
+ out, _ = input_api.subprocess.Popen(
+ [input_api.python_executable, lint_path],
+ stdout=input_api.subprocess.PIPE,
+ stderr=input_api.subprocess.STDOUT).communicate()
+ if "WARNING" in out or "ERROR" in out:
+ return [output_api.PresubmitError(out)]
+ return []
+
+
+def _CheckConvertSVGToPNGHashes(input_api, output_api):
+ if not input_api.platform.startswith('linux'):
+ return []
+
+ original_sys_path = sys.path
+ try:
+ sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), 'scripts')]
+ import devtools_file_hashes
+ finally:
+ sys.path = original_sys_path
+
+ absolute_local_paths = [af.AbsoluteLocalPath() for af in input_api.AffectedFiles(include_deletes=False)]
+ image_source_file_paths = [path for path in absolute_local_paths if "devtools/front_end/Images/src" in path and path.endswith(".svg")]
+ image_sources_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "front_end", "Images", "src")
+ hashes_file_name = "svg2png.hashes"
+ hashes_file_path = image_sources_path + "/" + hashes_file_name
+ invalid_hash_file_paths = devtools_file_hashes.files_with_invalid_hashes(hashes_file_path, image_source_file_paths)
+ if len(invalid_hash_file_paths) == 0:
+ return []
+ invalid_hash_file_names = [re.sub(".*/", "", file_path) for file_path in invalid_hash_file_paths]
+ file_paths_str = ", ".join(invalid_hash_file_names)
+ error_message = "The following SVG files should be converted to PNG using convert_svg_images_png.py script before uploading: \n - %s" % file_paths_str
+ return [output_api.PresubmitError(error_message)]
+
+
+def _CheckOptimizePNGHashes(input_api, output_api):
+ if not input_api.platform.startswith('linux'):
+ return []
+
+ original_sys_path = sys.path
+ try:
+ sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), 'scripts')]
+ import devtools_file_hashes
+ finally:
+ sys.path = original_sys_path
+
+ absolute_local_paths = [af.AbsoluteLocalPath() for af in input_api.AffectedFiles(include_deletes=False)]
+ image_source_file_paths = [path for path in absolute_local_paths if "devtools/front_end/Images/src" in path and path.endswith(".svg")]
+ image_sources_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "front_end", "Images", "src")
+ hashes_file_name = "optimize_png.hashes"
+ hashes_file_path = image_sources_path + "/" + hashes_file_name
+ invalid_hash_file_paths = devtools_file_hashes.files_with_invalid_hashes(hashes_file_path, image_source_file_paths)
+ if len(invalid_hash_file_paths) == 0:
+ return []
+ invalid_hash_file_names = [re.sub(".*/", "", file_path) for file_path in invalid_hash_file_paths]
+ file_paths_str = ", ".join(invalid_hash_file_names)
+ error_message = "The following PNG files should be optimized using optimize_png_images.py script before uploading: \n - %s" % file_paths_str
+ return [output_api.PresubmitError(error_message)]
+
+
+def CheckChangeOnUpload(input_api, output_api):
+ results = []
+ results.extend(_CompileDevtoolsFrontend(input_api, output_api))
+ results.extend(_CheckConvertSVGToPNGHashes(input_api, output_api))
+ results.extend(_CheckOptimizePNGHashes(input_api, output_api))
+ return results
+
+
+def CheckChangeOnCommit(input_api, output_api):
+ return []
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_audits_js.target.darwin-arm.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_audits_js.target.darwin-mips.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_audits_js.target.darwin-x86.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_audits_js.target.linux-arm.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_audits_js.target.linux-mips.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_audits_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_audits_js.target.linux-x86.mk
index 995fa69..b4cfee3 100644
--- a/Source/devtools/concatenated_devtools_audits_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_audits_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_audits_js_target_concatenate_devtools_audits_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/AuditsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_css.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_css.target.darwin-arm.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_css.target.darwin-arm.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_css.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_css.target.darwin-mips.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_css.target.darwin-mips.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_css.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_css.target.darwin-x86.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_css.target.darwin-x86.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_css.target.linux-arm.mk b/Source/devtools/concatenated_devtools_css.target.linux-arm.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_css.target.linux-arm.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_css.target.linux-mips.mk b/Source/devtools/concatenated_devtools_css.target.linux-mips.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_css.target.linux-mips.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_css.target.linux-x86.mk b/Source/devtools/concatenated_devtools_css.target.linux-x86.mk
index 2d2528f..3c1d427 100644
--- a/Source/devtools/concatenated_devtools_css.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_css.target.linux-x86.mk
@@ -19,7 +19,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_css_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_concatenate_devtools_css ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_css_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css"
@@ -61,11 +61,6 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-$(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
- @echo Copying: $@
- $(hide) mkdir -p $(dir $@)
- $(hide) $(ACP) -rpf $< $@
-
$(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(GYP_TARGET_DEPENDENCIES) | $(ACP)
@echo Copying: $@
$(hide) mkdir -p $(dir $@)
@@ -206,7 +201,7 @@
$(hide) mkdir -p $(dir $@)
$(hide) $(ACP) -rpf $< $@
-third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/cssNamedFlows.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
+third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_css_target_copies = $(gyp_shared_intermediate_dir)/resources/inspector/accelerometer.css $(gyp_shared_intermediate_dir)/resources/inspector/auditsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/breadcrumbList.css $(gyp_shared_intermediate_dir)/resources/inspector/breakpointsList.css $(gyp_shared_intermediate_dir)/resources/inspector/buildSystemOnly.js $(gyp_shared_intermediate_dir)/resources/inspector/cmdevtools.css $(gyp_shared_intermediate_dir)/resources/inspector/codemirror.css $(gyp_shared_intermediate_dir)/resources/inspector/dataGrid.css $(gyp_shared_intermediate_dir)/resources/inspector/elementsPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/filter.css $(gyp_shared_intermediate_dir)/resources/inspector/filteredItemSelectionDialog.css $(gyp_shared_intermediate_dir)/resources/inspector/flameChart.css $(gyp_shared_intermediate_dir)/resources/inspector/heapProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/helpScreen.css $(gyp_shared_intermediate_dir)/resources/inspector/indexedDBViews.css $(gyp_shared_intermediate_dir)/resources/inspector/inspectorCommon.css $(gyp_shared_intermediate_dir)/resources/inspector/navigatorView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkLogView.css $(gyp_shared_intermediate_dir)/resources/inspector/networkPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/overrides.css $(gyp_shared_intermediate_dir)/resources/inspector/panelEnablerView.css $(gyp_shared_intermediate_dir)/resources/inspector/profilesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/resourceView.css $(gyp_shared_intermediate_dir)/resources/inspector/resourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/revisionHistory.css $(gyp_shared_intermediate_dir)/resources/inspector/screencastView.css $(gyp_shared_intermediate_dir)/resources/inspector/sidebarPane.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesPanel.css $(gyp_shared_intermediate_dir)/resources/inspector/sourcesView.css $(gyp_shared_intermediate_dir)/resources/inspector/spectrum.css $(gyp_shared_intermediate_dir)/resources/inspector/splitView.css $(gyp_shared_intermediate_dir)/resources/inspector/textPrompt.css $(gyp_shared_intermediate_dir)/resources/inspector/timelinePanel.css $(gyp_shared_intermediate_dir)/resources/inspector/canvasProfiler.css $(gyp_shared_intermediate_dir)/resources/inspector/layersPanel.css
GYP_GENERATED_OUTPUTS := \
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css \
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_elements_js.target.darwin-arm.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_elements_js.target.darwin-mips.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_elements_js.target.darwin-x86.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_elements_js.target.linux-arm.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_elements_js.target.linux-mips.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_elements_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_elements_js.target.linux-x86.mk
index 0b97f5a..03dfebb 100644
--- a/Source/devtools/concatenated_devtools_elements_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_elements_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_elements_js_target_concatenate_devtools_elements_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ElementsPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js"
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-arm.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-mips.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-x86.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.darwin-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_extensions_js.target.linux-arm.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.linux-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_extensions_js.target.linux-mips.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.linux-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_extensions_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_extensions_js.target.linux-x86.mk
new file mode 100644
index 0000000..8aedfd6
--- /dev/null
+++ b/Source/devtools/concatenated_devtools_extensions_js.target.linux-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+LOCAL_MODULE_STEM := concatenated_devtools_extensions_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_devtools_extensions_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_extensions_js_target_concatenate_devtools_extensions_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ExtensionServer.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_devtools_extensions_js
+concatenated_devtools_extensions_js: third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_devtools_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_js.target.darwin-arm.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_js.target.darwin-arm.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_js.target.darwin-mips.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_js.target.darwin-mips.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_js.target.darwin-x86.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_js.target.darwin-x86.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_js.target.linux-arm.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_js.target.linux-arm.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_js.target.linux-mips.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_js.target.linux-mips.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_js.target.linux-x86.mk
index 3b07f49..fdef8ce 100644
--- a/Source/devtools/concatenated_devtools_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_js.target.linux-x86.mk
@@ -13,6 +13,7 @@
# Make sure our deps are built first.
GYP_TARGET_DEPENDENCIES := \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_devtools_html_gyp)/devtools_html.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_supported_css_properties_gyp)/supported_css_properties.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_frontend_protocol_sources_gyp)/frontend_protocol_sources.stamp
### Rules for action "concatenate_devtools_js":
@@ -20,7 +21,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMCountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatterWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanelDescriptor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowCollectionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSNamedFlowView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/concatenate_js_files.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.html $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Checkbox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Color.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompilerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CompletionDictionary.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleMessage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsolePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ConsoleView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContentProviders.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookieParser.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CookiesTable.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CountersGraph.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfilerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSMetadata.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSStyleSheetMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Database.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DataGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DebuggerScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Tests.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Dialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMExtension.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMPresentationUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DefaultScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DockController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Drawer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditFileSystemDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EmptyView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServerProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemProjectDelegate.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilterBar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FontView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Geometry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/GoToLineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HAREntry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HandlerRegistry.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HelpScreenUntilReload.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ImageView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InplaceEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectElementModeController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorBackend.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorFrontendHostStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/InspectorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystem.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IsolatedFileSystemManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/jsdifflib.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/KeyboardShortcut.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Linkifier.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LiveEditSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ModuleManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NativeBreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkLog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkRequest.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkUISourceCodeProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NotificationService.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Object.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPopoverHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ObjectPropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesSupport.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverviewGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfiler.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Panel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ParsedURL.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Placard.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Platform.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Popover.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PresentationConsoleMessageHelper.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Progress.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProgressIndicator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSection.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RemoteObject.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Resource.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceScriptMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceType.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RuntimeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SASSSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScreencastView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Script.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptFormatter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScriptSnippetModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SearchableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Section.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Settings.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SettingsUI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShortcutsScreen.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ShowMoreDataGridNode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarOverlay.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SidebarTreeElement.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleWorkspaceProvider.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SnippetStorage.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SoftContextMenu.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMap.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Spectrum.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SplitView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StackView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StatusBarButton.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSourceMapping.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SuggestBox.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempFile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TestController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextRange.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextPrompt.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineGrid.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TracingAgent.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/treeoutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCode.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UserMetrics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/View.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ViewportControl.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkerFrontendManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Workspace.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkspaceController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ZoomManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspector.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/tabbedPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorSyntaxHighlight.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/modules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/popover.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMSyntaxHighlighter.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsTreeOutline.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ElementsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EventListenersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MetricsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/OverridesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PlatformFontsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PropertiesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RenderingOptionsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StylesSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionRegistryStub.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionServer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ApplicationCacheItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DOMStorageItemsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseQueryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DatabaseTableView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DirectoryContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileContentView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FileSystemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/IndexedDBViews.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkItemView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestCookiesView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHeadersView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestHTMLView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestJSONView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestPreviewView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestResponseView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestTimingView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RequestView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ResourceWebSocketFrameView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NetworkPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategories.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditCategory.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditFormatters.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditResultView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditRules.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AuditsPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorTextEditor.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CodeMirrorUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(gyp_shared_intermediate_dir)/blink/InspectorBackendCommands.js $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_js_target_concatenate_devtools_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/concatenate_js_files.py front_end/inspector.html front_end "$(gyp_shared_intermediate_dir)/blink" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_layers_js.target.darwin-arm.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_layers_js.target.darwin-mips.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_layers_js.target.darwin-x86.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_layers_js.target.linux-arm.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_layers_js.target.linux-mips.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_layers_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_layers_js.target.linux-x86.mk
index c46a63e..de8c318 100644
--- a/Source/devtools/concatenated_devtools_layers_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_layers_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayersPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTreeModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Layers3DView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/LayerDetailsView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PaintProfilerView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_layers_js_target_concatenate_devtools_layers_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/LayersPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-arm.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-mips.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-x86.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_profiles_js.target.linux-arm.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_profiles_js.target.linux-mips.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_profiles_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_profiles_js.target.linux-x86.mk
index c21923d..08ea458 100644
--- a/Source/devtools/concatenated_devtools_profiles_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_profiles_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BottomUpProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CPUProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotDataGrids.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotGridNodes.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotProxy.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfilesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ProfileLauncherView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TopDownProfileDataGridTree.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasProfileView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CanvasReplayStateView.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_profiles_js_target_concatenate_devtools_profiles_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/ProfilesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-arm.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-mips.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-x86.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_scripts_js.target.linux-arm.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_scripts_js.target.linux-mips.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_scripts_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_scripts_js.target.linux-x86.mk
index 108d7c9..186f418 100644
--- a/Source/devtools/concatenated_devtools_scripts_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_scripts_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorOverlayController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/BreakpointsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CSSSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/CallStackSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/EditingLocationHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilePathScoreFunction.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/FilteredItemSelectionDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JavaScriptSourceFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/NavigatorView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/RevisionHistoryView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ScopeChainSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SimpleHistoryManager.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesNavigator.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesPanel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/SourcesSearchScope.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/StyleSheetOutlineDialog.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TabbedEditorContainer.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UISourceCodeFrame.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WatchExpressionsSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/WorkersSidebarPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ThreadsToolbar.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_scripts_js_target_concatenate_devtools_scripts_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/SourcesPanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-arm.mk b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-arm.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-mips.mk b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-mips.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-x86.mk b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-x86.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.linux-arm.mk b/Source/devtools/concatenated_devtools_timeline_js.target.linux-arm.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.linux-mips.mk b/Source/devtools/concatenated_devtools_timeline_js.target.linux-mips.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_devtools_timeline_js.target.linux-x86.mk b/Source/devtools/concatenated_devtools_timeline_js.target.linux-x86.mk
index 1ccc58b..e1fa217 100644
--- a/Source/devtools/concatenated_devtools_timeline_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_devtools_timeline_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameController.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/MemoryStatistics.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/PieChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePresentationModel.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineOverviewPane.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineEventOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFlameChart.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineFrameOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineMemoryOverview.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelineView.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TimelinePanel.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_devtools_timeline_js_target_concatenate_devtools_timeline_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TimelinePanel.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-arm.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-arm.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-arm.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-mips.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-mips.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-mips.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-x86.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-x86.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-x86.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.darwin-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-arm.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-arm.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-arm.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-arm.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-mips.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-mips.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-mips.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-mips.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-x86.mk b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-x86.mk
index 29bc1b8..0b7391e 100644
--- a/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-x86.mk
+++ b/Source/devtools/concatenated_heap_snapshot_worker_js.target.linux-x86.mk
@@ -18,7 +18,7 @@
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorker.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/AllocationProfile.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotCommon.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotLoader.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/JSHeapSnapshot.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TextUtils.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/UIString.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/utilities.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_heap_snapshot_worker_js_target_concatenate_heap_snapshot_worker_js ($@)"
$(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/HeapSnapshotWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js"
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-arm.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-arm.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-mips.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-mips.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-x86.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-x86.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.darwin-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-arm.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-arm.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-mips.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-mips.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-x86.mk b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-x86.mk
new file mode 100644
index 0000000..93da02d
--- /dev/null
+++ b/Source/devtools/concatenated_temp_storage_shared_worker_js.target.linux-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+LOCAL_MODULE_STEM := concatenated_temp_storage_shared_worker_js
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "concatenate_temp_storage_shared_worker_js":
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/inline_js_imports.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/TempStorageSharedWorker.js $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_concatenated_temp_storage_shared_worker_js_target_concatenate_temp_storage_shared_worker_js ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/inline_js_imports.py front_end/TempStorageSharedWorker.js front_end "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+# Alias gyp target name.
+.PHONY: concatenated_temp_storage_shared_worker_js
+concatenated_temp_storage_shared_worker_js: third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/devtools.gyp b/Source/devtools/devtools.gyp
index c17dd31..f602541 100644
--- a/Source/devtools/devtools.gyp
+++ b/Source/devtools/devtools.gyp
@@ -38,6 +38,7 @@
'type': 'none',
'dependencies': [
'devtools_html',
+ 'supported_css_properties',
'frontend_protocol_sources',
],
'conditions': [
@@ -46,6 +47,7 @@
'concatenated_devtools_elements_js',
'concatenated_devtools_resources_js',
'concatenated_devtools_network_js',
+ 'concatenated_devtools_extensions_js',
'concatenated_devtools_scripts_js',
'concatenated_devtools_timeline_js',
'concatenated_devtools_profiles_js',
@@ -54,41 +56,52 @@
'concatenated_devtools_layers_js',
'concatenated_heap_snapshot_worker_js',
'concatenated_script_formatter_worker_js',
+ 'concatenated_temp_storage_shared_worker_js',
'concatenated_devtools_css'],
}],
],
'copies': [
{
'destination': '<(PRODUCT_DIR)/resources/inspector',
- 'files': [
- '<@(devtools_files)',
- '<(SHARED_INTERMEDIATE_DIR)/blink/InspectorBackendCommands.js',
- ],
'conditions': [
- ['debug_devtools==0', {
- 'files/': [['exclude', '\\.(js|css|html)$']],
+ ['debug_devtools==1', {
+ 'files': [
+ '<@(devtools_files)',
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InspectorBackendCommands.js',
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SupportedCSSProperties.js',
+ '<@(devtools_heap_snapshot_worker_js_files)',
+ '<@(devtools_temp_storage_shared_worker_js_files)',
+ '<@(devtools_script_formatter_worker_js_files)',
+ ],
+ },
+ {
+ 'files': [],
}],
],
},
{
'destination': '<(PRODUCT_DIR)/resources/inspector/UglifyJS',
- 'files': [
- '<@(devtools_uglify_files)',
- ],
'conditions': [
- ['debug_devtools==0', {
- 'files/': [['exclude', '\\.(js|css|html)$']],
+ ['debug_devtools==1', {
+ 'files': [
+ '<@(devtools_uglify_files)',
+ ],
+ },
+ {
+ 'files': [],
}],
],
},
{
'destination': '<(PRODUCT_DIR)/resources/inspector/cm',
- 'files': [
- '<@(devtools_cm_files)',
- ],
'conditions': [
- ['debug_devtools==0', {
- 'files/': [['exclude', '\\.(js|css|html)$']],
+ ['debug_devtools==1', {
+ 'files': [
+ '<@(devtools_cm_files)',
+ ],
+ },
+ {
+ 'files': [],
}],
],
},
@@ -143,6 +156,7 @@
'concatenated_devtools_elements_js',
'concatenated_devtools_resources_js',
'concatenated_devtools_network_js',
+ 'concatenated_devtools_extensions_js',
'concatenated_devtools_scripts_js',
'concatenated_devtools_timeline_js',
'concatenated_devtools_profiles_js',
@@ -151,6 +165,7 @@
'concatenated_devtools_layers_js',
'concatenated_heap_snapshot_worker_js',
'concatenated_script_formatter_worker_js',
+ 'concatenated_temp_storage_shared_worker_js',
'concatenated_devtools_css'],
'actions': [{
'action_name': 'generate_devtools_grd',
@@ -159,6 +174,7 @@
'<(PRODUCT_DIR)/resources/inspector/devtools.html',
'<(PRODUCT_DIR)/resources/inspector/inspector.js',
'<(PRODUCT_DIR)/resources/inspector/ElementsPanel.js',
+ '<(PRODUCT_DIR)/resources/inspector/ExtensionServer.js',
'<(PRODUCT_DIR)/resources/inspector/ResourcesPanel.js',
'<(PRODUCT_DIR)/resources/inspector/NetworkPanel.js',
'<(PRODUCT_DIR)/resources/inspector/SourcesPanel.js',
@@ -169,6 +185,7 @@
'<(PRODUCT_DIR)/resources/inspector/CodeMirrorTextEditor.js',
'<(PRODUCT_DIR)/resources/inspector/HeapSnapshotWorker.js',
'<(PRODUCT_DIR)/resources/inspector/ScriptFormatterWorker.js',
+ '<(PRODUCT_DIR)/resources/inspector/TempStorageSharedWorker.js',
'<(PRODUCT_DIR)/resources/inspector/inspector.css',
'<(PRODUCT_DIR)/resources/inspector/devtools_extension_api.js',
'<@(devtools_standalone_files)',
@@ -199,6 +216,7 @@
'input_pages': [
'<@(devtools_files)',
'<(SHARED_INTERMEDIATE_DIR)/blink/InspectorBackendCommands.js',
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SupportedCSSProperties.js',
'<(PRODUCT_DIR)/resources/inspector/devtools.html',
],
'images': [
@@ -241,7 +259,32 @@
'--output_js_dir', '<(SHARED_INTERMEDIATE_DIR)/blink',
],
'message': 'Generating Inspector protocol frontend sources from protocol.json',
- 'msvs_cygwin_shell': 1,
+ },
+ ]
+ },
+ {
+ 'target_name': 'supported_css_properties',
+ 'type': 'none',
+ 'actions': [
+ {
+ 'action_name': 'generateSupportedCSSProperties',
+ 'inputs': [
+ # The python script in action below.
+ 'scripts/generate_supported_css.py',
+ # Input files for the script.
+ '../core/css/CSSPropertyNames.in',
+ '../core/css/SVGCSSPropertyNames.in',
+ '../core/css/CSSShorthands.in',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SupportedCSSProperties.js',
+ ],
+ 'action': [
+ 'python',
+ '<@(_inputs)',
+ '<@(_outputs)',
+ ],
+ 'message': 'Generating supported CSS properties for front end',
},
]
},
@@ -254,6 +297,7 @@
'type': 'none',
'dependencies': [
'devtools_html',
+ 'supported_css_properties',
'frontend_protocol_sources'
],
'actions': [{
@@ -264,7 +308,8 @@
'<@(_script_name)',
'<@(_input_page)',
'<@(devtools_files)',
- '<(SHARED_INTERMEDIATE_DIR)/blink/InspectorBackendCommands.js'
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InspectorBackendCommands.js',
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SupportedCSSProperties.js'
],
'search_path': [
'front_end',
@@ -323,6 +368,22 @@
}],
},
{
+ 'target_name': 'concatenated_devtools_extensions_js',
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'concatenate_devtools_extensions_js',
+ 'script_name': 'scripts/inline_js_imports.py',
+ 'input_file': 'front_end/ExtensionServer.js',
+ 'inputs': [
+ '<@(_script_name)',
+ '<@(devtools_extensions_js_files)',
+ ],
+ 'search_path': 'front_end',
+ 'outputs': ['<(PRODUCT_DIR)/resources/inspector/ExtensionServer.js'],
+ 'action': ['python', '<@(_script_name)', '<@(_input_file)', '<@(_search_path)', '<@(_outputs)'],
+ }],
+ },
+ {
'target_name': 'concatenated_devtools_scripts_js',
'type': 'none',
'actions': [{
@@ -413,12 +474,7 @@
'inputs': [
'<@(_script_name)',
'<@(_input_file)',
- 'front_end/AllocationProfile.js',
- 'front_end/HeapSnapshot.js',
- 'front_end/HeapSnapshotLoader.js',
- 'front_end/HeapSnapshotWorkerDispatcher.js',
- 'front_end/JSHeapSnapshot.js',
- 'front_end/utilities.js',
+ '<@(devtools_heap_snapshot_worker_js_files)',
],
'search_path': 'front_end',
'outputs': ['<(PRODUCT_DIR)/resources/inspector/HeapSnapshotWorker.js'],
@@ -443,6 +499,22 @@
}],
},
{
+ 'target_name': 'concatenated_temp_storage_shared_worker_js',
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'concatenate_temp_storage_shared_worker_js',
+ 'script_name': 'scripts/inline_js_imports.py',
+ 'input_file': 'front_end/TempStorageSharedWorker.js',
+ 'inputs': [
+ '<@(_script_name)',
+ '<@(devtools_temp_storage_shared_worker_js_files)'
+ ],
+ 'search_path': 'front_end',
+ 'outputs': ['<(PRODUCT_DIR)/resources/inspector/TempStorageSharedWorker.js'],
+ 'action': ['python', '<@(_script_name)', '<@(_input_file)', '<@(_search_path)', '<@(_outputs)'],
+ }],
+ },
+ {
'target_name': 'concatenated_devtools_layers_js',
'type': 'none',
'actions': [{
diff --git a/Source/devtools/devtools.gypi b/Source/devtools/devtools.gypi
index 5c213c6..ef173a3 100644
--- a/Source/devtools/devtools.gypi
+++ b/Source/devtools/devtools.gypi
@@ -53,7 +53,8 @@
'front_end/CookieItemsView.js',
'front_end/CookieParser.js',
'front_end/CookiesTable.js',
- 'front_end/CSSFormatter.js',
+ 'front_end/CountersGraph.js',
+ 'front_end/CPUProfilerModel.js',
'front_end/CSSMetadata.js',
'front_end/CSSStyleModel.js',
'front_end/CSSStyleSheetMapping.js',
@@ -61,29 +62,19 @@
'front_end/DataGrid.js',
'front_end/DebuggerModel.js',
'front_end/DebuggerScriptMapping.js',
- 'front_end/DevToolsExtensionAPI.js',
'front_end/Tests.js',
'front_end/Dialog.js',
'front_end/DOMAgent.js',
'front_end/DOMBreakpointsSidebarPane.js',
- 'front_end/DOMCountersGraph.js',
'front_end/DOMExtension.js',
'front_end/DOMPresentationUtils.js',
'front_end/DOMStorage.js',
- 'front_end/DOMSyntaxHighlighter.js',
'front_end/DefaultScriptMapping.js',
'front_end/DockController.js',
'front_end/Drawer.js',
'front_end/EditFileSystemDialog.js',
- 'front_end/ElementsPanelDescriptor.js',
- 'front_end/ElementsTreeOutline.js',
'front_end/EmptyView.js',
- 'front_end/ExtensionAPI.js',
- 'front_end/ExtensionAuditCategory.js',
- 'front_end/ExtensionPanel.js',
- 'front_end/ExtensionRegistryStub.js',
- 'front_end/ExtensionServer.js',
- 'front_end/ExtensionView.js',
+ 'front_end/ExtensionServerProxy.js',
'front_end/FileManager.js',
'front_end/FileSystemMapping.js',
'front_end/FileSystemModel.js',
@@ -96,10 +87,12 @@
'front_end/GoToLineDialog.js',
'front_end/HAREntry.js',
'front_end/HandlerRegistry.js',
- 'front_end/HeapSnapshotWorker.js',
'front_end/HelpScreen.js',
+ 'front_end/HelpScreenUntilReload.js',
'front_end/ImageView.js',
'front_end/IndexedDBModel.js',
+ 'front_end/InplaceEditor.js',
+ 'front_end/InspectElementModeController.js',
'front_end/InspectorBackend.js',
'front_end/InspectorFrontendAPI.js',
'front_end/InspectorFrontendHostStub.js',
@@ -107,30 +100,29 @@
'front_end/inspector.js',
'front_end/IsolatedFileSystem.js',
'front_end/IsolatedFileSystemManager.js',
- 'front_end/JavaScriptFormatter.js',
'front_end/jsdifflib.js',
'front_end/KeyboardShortcut.js',
- 'front_end/LayersPanelDescriptor.js',
'front_end/Linkifier.js',
'front_end/LiveEditSupport.js',
+ 'front_end/ModuleManager.js',
'front_end/NativeBreakpointsSidebarPane.js',
'front_end/NetworkManager.js',
'front_end/NetworkLog.js',
- 'front_end/NetworkPanelDescriptor.js',
'front_end/NetworkRequest.js',
'front_end/NetworkUISourceCodeProvider.js',
- 'front_end/InspectElementModeController.js',
+ 'front_end/NotificationService.js',
'front_end/Object.js',
'front_end/ObjectPopoverHelper.js',
'front_end/ObjectPropertiesSection.js',
'front_end/OverridesSupport.js',
'front_end/OverviewGrid.js',
+ 'front_end/PaintProfiler.js',
'front_end/Panel.js',
'front_end/ParsedURL.js',
'front_end/Placard.js',
+ 'front_end/Platform.js',
'front_end/Popover.js',
'front_end/PresentationConsoleMessageHelper.js',
- 'front_end/ProfilesPanelDescriptor.js',
'front_end/Progress.js',
'front_end/ProgressIndicator.js',
'front_end/PropertiesSection.js',
@@ -146,17 +138,16 @@
'front_end/ScreencastView.js',
'front_end/Script.js',
'front_end/ScriptFormatter.js',
- 'front_end/ScriptFormatterWorker.js',
'front_end/ScriptSnippetModel.js',
'front_end/SearchableView.js',
'front_end/SettingsScreen.js',
'front_end/Section.js',
'front_end/Settings.js',
+ 'front_end/SettingsUI.js',
'front_end/ShortcutsScreen.js',
'front_end/ShowMoreDataGridNode.js',
'front_end/SidebarOverlay.js',
'front_end/SidebarPane.js',
- 'front_end/SidebarView.js',
'front_end/SidebarTreeElement.js',
'front_end/SimpleWorkspaceProvider.js',
'front_end/SnippetStorage.js',
@@ -164,9 +155,9 @@
'front_end/SourceFrame.js',
'front_end/SourceMap.js',
'front_end/SourceMapping.js',
- 'front_end/SourcesPanelDescriptor.js',
'front_end/Spectrum.js',
'front_end/SplitView.js',
+ 'front_end/StackView.js',
'front_end/StatusBarButton.js',
'front_end/StylesSourceMapping.js',
'front_end/SuggestBox.js',
@@ -179,7 +170,6 @@
'front_end/TextUtils.js',
'front_end/TimelineGrid.js',
'front_end/TimelineManager.js',
- 'front_end/TimelinePanelDescriptor.js',
'front_end/TracingAgent.js',
'front_end/treeoutline.js',
'front_end/UISourceCode.js',
@@ -190,12 +180,15 @@
'front_end/View.js',
'front_end/ViewportControl.js',
'front_end/WorkerManager.js',
+ 'front_end/WorkerFrontendManager.js',
'front_end/Workspace.js',
'front_end/WorkspaceController.js',
+ 'front_end/ZoomManager.js',
'front_end/dialog.css',
'front_end/inspector.css',
'front_end/tabbedPane.css',
'front_end/inspectorSyntaxHighlight.css',
+ 'front_end/modules.js',
'front_end/popover.css',
'<@(devtools_modules_js_files)',
'<@(devtools_standalone_files)',
@@ -208,7 +201,6 @@
'front_end/buildSystemOnly.js',
'front_end/cm/cmdevtools.css',
'front_end/cm/codemirror.css',
- 'front_end/cssNamedFlows.css',
'front_end/dataGrid.css',
'front_end/elementsPanel.css',
'front_end/filter.css',
@@ -239,17 +231,25 @@
'front_end/layersPanel.css',
],
'devtools_elements_js_files': [
- 'front_end/CSSNamedFlowCollectionsView.js',
- 'front_end/CSSNamedFlowView.js',
+ 'front_end/DOMSyntaxHighlighter.js',
+ 'front_end/ElementsTreeOutline.js',
'front_end/ElementsPanel.js',
'front_end/EventListenersSidebarPane.js',
'front_end/MetricsSidebarPane.js',
- 'front_end/OverridesView.js',
+ 'front_end/OverridesView.js',
'front_end/PlatformFontsSidebarPane.js',
'front_end/PropertiesSidebarPane.js',
'front_end/RenderingOptionsView.js',
'front_end/StylesSidebarPane.js',
],
+ 'devtools_extensions_js_files': [
+ 'front_end/ExtensionAPI.js',
+ 'front_end/ExtensionAuditCategory.js',
+ 'front_end/ExtensionPanel.js',
+ 'front_end/ExtensionRegistryStub.js',
+ 'front_end/ExtensionServer.js',
+ 'front_end/ExtensionView.js',
+ ],
'devtools_resources_js_files': [
'front_end/ApplicationCacheItemsView.js',
'front_end/DOMStorageItemsView.js',
@@ -278,13 +278,14 @@
'front_end/BreakpointsSidebarPane.js',
'front_end/CSSSourceFrame.js',
'front_end/CallStackSidebarPane.js',
+ 'front_end/EditingLocationHistoryManager.js',
'front_end/FilePathScoreFunction.js',
'front_end/FilteredItemSelectionDialog.js',
'front_end/JavaScriptSourceFrame.js',
- 'front_end/NavigatorOverlayController.js',
'front_end/NavigatorView.js',
'front_end/RevisionHistoryView.js',
'front_end/ScopeChainSidebarPane.js',
+ 'front_end/SimpleHistoryManager.js',
'front_end/SourcesNavigator.js',
'front_end/SourcesPanel.js',
'front_end/SourcesSearchScope.js',
@@ -293,31 +294,31 @@
'front_end/UISourceCodeFrame.js',
'front_end/WatchExpressionsSidebarPane.js',
'front_end/WorkersSidebarPane.js',
+ 'front_end/ThreadsToolbar.js',
],
'devtools_timeline_js_files': [
'front_end/MemoryStatistics.js',
'front_end/PieChart.js',
- 'front_end/TimelineFrameController.js',
+ 'front_end/TimelineFrameModel.js',
'front_end/TimelineModel.js',
'front_end/TimelinePresentationModel.js',
'front_end/TimelineOverviewPane.js',
'front_end/TimelineEventOverview.js',
+ 'front_end/TimelineFlameChart.js',
'front_end/TimelineFrameOverview.js',
'front_end/TimelineMemoryOverview.js',
+ 'front_end/TimelineView.js',
'front_end/TimelinePanel.js',
],
'devtools_profiles_js_files': [
- 'front_end/AllocationProfile.js',
'front_end/BottomUpProfileDataGridTree.js',
'front_end/CPUProfileView.js',
- 'front_end/HeapSnapshot.js',
+ 'front_end/HeapSnapshotCommon.js',
'front_end/HeapSnapshotDataGrids.js',
'front_end/HeapSnapshotGridNodes.js',
- 'front_end/HeapSnapshotLoader.js',
'front_end/HeapSnapshotProxy.js',
'front_end/HeapSnapshotView.js',
'front_end/HeapSnapshotWorkerDispatcher.js',
- 'front_end/JSHeapSnapshot.js',
'front_end/ProfileDataGridTree.js',
'front_end/ProfilesPanel.js',
'front_end/ProfileLauncherView.js',
@@ -325,8 +326,21 @@
'front_end/CanvasProfileView.js',
'front_end/CanvasReplayStateView.js',
],
+ 'devtools_heap_snapshot_worker_js_files': [
+ 'front_end/AllocationProfile.js',
+ 'front_end/HeapSnapshot.js',
+ 'front_end/HeapSnapshotCommon.js',
+ 'front_end/HeapSnapshotLoader.js',
+ 'front_end/HeapSnapshotWorker.js',
+ 'front_end/HeapSnapshotWorkerDispatcher.js',
+ 'front_end/JSHeapSnapshot.js',
+ 'front_end/TextUtils.js',
+ 'front_end/UIString.js',
+ 'front_end/utilities.js',
+ ],
'devtools_audits_js_files': [
'front_end/AuditCategories.js',
+ 'front_end/AuditCategory.js',
'front_end/AuditController.js',
'front_end/AuditFormatters.js',
'front_end/AuditLauncherView.js',
@@ -359,6 +373,7 @@
],
'devtools_modules_js_files': [
'<@(devtools_elements_js_files)',
+ '<@(devtools_extensions_js_files)',
'<@(devtools_resources_js_files)',
'<@(devtools_network_js_files)',
'<@(devtools_scripts_js_files)',
@@ -375,17 +390,12 @@
'front_end/Images/addIcon.png',
'front_end/Images/applicationCache.png',
'front_end/Images/back.png',
- 'front_end/Images/breakpointBorder.png',
- 'front_end/Images/breakpoint2.png',
- 'front_end/Images/breakpoint2_2x.png',
- 'front_end/Images/breakpointConditional2.png',
- 'front_end/Images/breakpointConditional2_2x.png',
- 'front_end/Images/breakpointConditionalBorder.png',
- 'front_end/Images/breakpointConditionalCounterBorder.png',
- 'front_end/Images/breakpointCounterBorder.png',
+ 'front_end/Images/breakpoint.png',
+ 'front_end/Images/breakpoint_2x.png',
+ 'front_end/Images/breakpointConditional.png',
+ 'front_end/Images/breakpointConditional_2x.png',
'front_end/Images/checker.png',
'front_end/Images/cookie.png',
- 'front_end/Images/namedFlowOverflow.png',
'front_end/Images/database.png',
'front_end/Images/databaseTable.png',
'front_end/Images/deleteIcon.png',
@@ -393,10 +403,6 @@
'front_end/Images/forward.png',
'front_end/Images/fileSystem.png',
'front_end/Images/frame.png',
- 'front_end/Images/glossyHeader.png',
- 'front_end/Images/glossyHeaderPressed.png',
- 'front_end/Images/glossyHeaderSelected.png',
- 'front_end/Images/glossyHeaderSelectedPressed.png',
'front_end/Images/graphLabelCalloutLeft.png',
'front_end/Images/graphLabelCalloutRight.png',
'front_end/Images/indexedDB.png',
@@ -415,11 +421,7 @@
'front_end/Images/profileGroupIcon.png',
'front_end/Images/profileIcon.png',
'front_end/Images/profileSmallIcon.png',
- 'front_end/Images/programCounterBorder.png',
'front_end/Images/radioDot.png',
- 'front_end/Images/regionEmpty.png',
- 'front_end/Images/regionFit.png',
- 'front_end/Images/regionOverset.png',
'front_end/Images/resourceCSSIcon.png',
'front_end/Images/resourceDocumentIcon.png',
'front_end/Images/resourceDocumentIconSmall.png',
@@ -432,13 +434,12 @@
'front_end/Images/sessionStorage.png',
'front_end/Images/settingsListRemove.png',
'front_end/Images/settingsListRemove_2x.png',
- 'front_end/Images/spinner.gif',
'front_end/Images/spinnerActive.gif',
'front_end/Images/spinnerActiveSelected.gif',
'front_end/Images/spinnerInactive.gif',
'front_end/Images/spinnerInactiveSelected.gif',
'front_end/Images/statusbarButtonGlyphs.png',
- 'front_end/Images/statusbarButtonGlyphs2x.png',
+ 'front_end/Images/statusbarButtonGlyphs_2x.png',
'front_end/Images/statusbarResizerHorizontal.png',
'front_end/Images/statusbarResizerVertical.png',
'front_end/Images/thumbActiveHoriz.png',
@@ -447,20 +448,6 @@
'front_end/Images/thumbVert.png',
'front_end/Images/thumbHoverHoriz.png',
'front_end/Images/thumbHoverVert.png',
- 'front_end/Images/timelineHollowPillBlue.png',
- 'front_end/Images/timelineHollowPillGray.png',
- 'front_end/Images/timelineHollowPillGreen.png',
- 'front_end/Images/timelineHollowPillOrange.png',
- 'front_end/Images/timelineHollowPillPurple.png',
- 'front_end/Images/timelineHollowPillRed.png',
- 'front_end/Images/timelineHollowPillYellow.png',
- 'front_end/Images/timelinePillBlue.png',
- 'front_end/Images/timelinePillGray.png',
- 'front_end/Images/timelinePillGreen.png',
- 'front_end/Images/timelinePillOrange.png',
- 'front_end/Images/timelinePillPurple.png',
- 'front_end/Images/timelinePillRed.png',
- 'front_end/Images/timelinePillYellow.png',
'front_end/Images/toolbarItemSelected.png',
'front_end/Images/trackHoriz.png',
'front_end/Images/trackVert.png',
@@ -471,10 +458,19 @@
'front_end/LayerTree.js',
'front_end/Layers3DView.js',
'front_end/LayerDetailsView.js',
+ 'front_end/PaintProfilerView.js',
],
'devtools_extension_api_files': [
'front_end/ExtensionAPI.js',
- 'front_end/DevToolsExtensionAPI.js'
+ ],
+ 'devtools_temp_storage_shared_worker_js_files': [
+ 'front_end/TempStorageSharedWorker.js',
+ ],
+ 'devtools_script_formatter_worker_js_files': [
+ 'front_end/CSSFormatter.js',
+ 'front_end/JavaScriptFormatter.js',
+ 'front_end/ScriptFormatterWorker.js',
+ 'front_end/utilities.js',
],
},
}
diff --git a/Source/devtools/devtools_extension_api.target.darwin-arm.mk b/Source/devtools/devtools_extension_api.target.darwin-arm.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.darwin-arm.mk
+++ b/Source/devtools/devtools_extension_api.target.darwin-arm.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_extension_api.target.darwin-mips.mk b/Source/devtools/devtools_extension_api.target.darwin-mips.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.darwin-mips.mk
+++ b/Source/devtools/devtools_extension_api.target.darwin-mips.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_extension_api.target.darwin-x86.mk b/Source/devtools/devtools_extension_api.target.darwin-x86.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.darwin-x86.mk
+++ b/Source/devtools/devtools_extension_api.target.darwin-x86.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_extension_api.target.linux-arm.mk b/Source/devtools/devtools_extension_api.target.linux-arm.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.linux-arm.mk
+++ b/Source/devtools/devtools_extension_api.target.linux-arm.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_extension_api.target.linux-mips.mk b/Source/devtools/devtools_extension_api.target.linux-mips.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.linux-mips.mk
+++ b/Source/devtools/devtools_extension_api.target.linux-mips.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_extension_api.target.linux-x86.mk b/Source/devtools/devtools_extension_api.target.linux-x86.mk
index 0c6ff0f..8b20d6a 100644
--- a/Source/devtools/devtools_extension_api.target.linux-x86.mk
+++ b/Source/devtools/devtools_extension_api.target.linux-x86.mk
@@ -18,9 +18,9 @@
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/DevToolsExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_extension_api.py $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/ExtensionAPI.js $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_devtools_extension_api_target_devtools_html ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js front_end/DevToolsExtensionAPI.js
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/resources/inspector; python scripts/generate_devtools_extension_api.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/ExtensionAPI.js
diff --git a/Source/devtools/devtools_html.target.darwin-arm.mk b/Source/devtools/devtools_html.target.darwin-arm.mk
index 0899828..e28ca82 100644
--- a/Source/devtools/devtools_html.target.darwin-arm.mk
+++ b/Source/devtools/devtools_html.target.darwin-arm.mk
@@ -63,6 +63,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -71,10 +72,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -85,7 +86,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -115,7 +115,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-abi \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -147,6 +146,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -155,10 +155,10 @@
-fno-ident \
-fdata-sections \
-ffunction-sections \
- -fomit-frame-pointer
+ -fomit-frame-pointer \
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -169,7 +169,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -199,7 +198,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-abi \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/devtools_html.target.darwin-mips.mk b/Source/devtools/devtools_html.target.darwin-mips.mk
index 0045c50..9b265eb 100644
--- a/Source/devtools/devtools_html.target.darwin-mips.mk
+++ b/Source/devtools/devtools_html.target.darwin-mips.mk
@@ -63,6 +63,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -71,10 +72,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -85,7 +86,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -115,7 +115,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-uninitialized \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -147,6 +146,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -155,10 +155,10 @@
-fno-ident \
-fdata-sections \
-ffunction-sections \
- -fomit-frame-pointer
+ -fomit-frame-pointer \
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -169,7 +169,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -199,7 +198,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-uninitialized \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/devtools_html.target.darwin-x86.mk b/Source/devtools/devtools_html.target.darwin-x86.mk
index 0f64ac8..cf351cc 100644
--- a/Source/devtools/devtools_html.target.darwin-x86.mk
+++ b/Source/devtools/devtools_html.target.darwin-x86.mk
@@ -64,6 +64,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-fno-stack-protector \
-Wno-address \
-Wno-format-security \
@@ -73,10 +74,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -87,7 +88,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -116,7 +116,6 @@
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Wno-deprecated \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -149,6 +148,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-fno-stack-protector \
-Wno-address \
-Wno-format-security \
@@ -159,11 +159,9 @@
-fdata-sections \
-ffunction-sections \
-fomit-frame-pointer \
- -fno-unwind-tables \
- -fno-asynchronous-unwind-tables
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -174,7 +172,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -203,7 +200,6 @@
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Wno-deprecated \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/devtools_html.target.linux-arm.mk b/Source/devtools/devtools_html.target.linux-arm.mk
index 0899828..e28ca82 100644
--- a/Source/devtools/devtools_html.target.linux-arm.mk
+++ b/Source/devtools/devtools_html.target.linux-arm.mk
@@ -63,6 +63,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -71,10 +72,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -85,7 +86,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -115,7 +115,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-abi \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -147,6 +146,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -155,10 +155,10 @@
-fno-ident \
-fdata-sections \
-ffunction-sections \
- -fomit-frame-pointer
+ -fomit-frame-pointer \
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -169,7 +169,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -199,7 +198,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-abi \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/devtools_html.target.linux-mips.mk b/Source/devtools/devtools_html.target.linux-mips.mk
index 0045c50..9b265eb 100644
--- a/Source/devtools/devtools_html.target.linux-mips.mk
+++ b/Source/devtools/devtools_html.target.linux-mips.mk
@@ -63,6 +63,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -71,10 +72,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -85,7 +86,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -115,7 +115,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-uninitialized \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -147,6 +146,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-Wno-address \
-Wno-format-security \
-Wno-return-type \
@@ -155,10 +155,10 @@
-fno-ident \
-fdata-sections \
-ffunction-sections \
- -fomit-frame-pointer
+ -fomit-frame-pointer \
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -169,7 +169,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -199,7 +198,6 @@
-fvisibility-inlines-hidden \
-Wno-deprecated \
-Wno-uninitialized \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/devtools_html.target.linux-x86.mk b/Source/devtools/devtools_html.target.linux-x86.mk
index 0f64ac8..cf351cc 100644
--- a/Source/devtools/devtools_html.target.linux-x86.mk
+++ b/Source/devtools/devtools_html.target.linux-x86.mk
@@ -64,6 +64,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-fno-stack-protector \
-Wno-address \
-Wno-format-security \
@@ -73,10 +74,10 @@
-g \
-fomit-frame-pointer \
-fdata-sections \
- -ffunction-sections
+ -ffunction-sections \
+ -funwind-tables
MY_DEFS_Debug := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -87,7 +88,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -116,7 +116,6 @@
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Wno-deprecated \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
@@ -149,6 +148,7 @@
-Wno-extra \
-Wno-ignored-qualifiers \
-Wno-type-limits \
+ -Wno-unused-but-set-variable \
-fno-stack-protector \
-Wno-address \
-Wno-format-security \
@@ -159,11 +159,9 @@
-fdata-sections \
-ffunction-sections \
-fomit-frame-pointer \
- -fno-unwind-tables \
- -fno-asynchronous-unwind-tables
+ -funwind-tables
MY_DEFS_Release := \
- '-DANGLE_DX11' \
'-DV8_DEPRECATION_WARNINGS' \
'-D_FILE_OFFSET_BITS=64' \
'-DNO_TCMALLOC' \
@@ -174,7 +172,6 @@
'-DENABLE_CONFIGURATION_POLICY' \
'-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
'-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
- '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' \
'-DUSE_OPENSSL=1' \
'-DENABLE_EGLIMAGE=1' \
'-DCLD_VERSION=1' \
@@ -203,7 +200,6 @@
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Wno-deprecated \
- -Wno-error=c++0x-compat \
-Wno-non-virtual-dtor \
-Wno-sign-promo \
-Wno-non-virtual-dtor
diff --git a/Source/devtools/front_end/AdvancedSearchController.js b/Source/devtools/front_end/AdvancedSearchController.js
index 8dcbe60..be54e0d 100644
--- a/Source/devtools/front_end/AdvancedSearchController.js
+++ b/Source/devtools/front_end/AdvancedSearchController.js
@@ -28,7 +28,6 @@
/**
* @constructor
- * @implements {WebInspector.ViewFactory}
*/
WebInspector.AdvancedSearchController = function()
{
@@ -38,7 +37,6 @@
WebInspector.settings.advancedSearchConfig = WebInspector.settings.createSetting("advancedSearchConfig", new WebInspector.SearchConfig("", true, false));
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);
- WebInspector.inspectorView.registerViewInDrawer("search", WebInspector.UIString("Search"), this);
}
/**
@@ -54,17 +52,6 @@
WebInspector.AdvancedSearchController.prototype = {
/**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id)
- {
- if (!this._searchView)
- this._searchView = new WebInspector.SearchView(this);
- return this._searchView;
- },
-
- /**
* @param {!KeyboardEvent} event
* @return {boolean}
*/
@@ -87,15 +74,6 @@
this.resetSearch();
},
- /**
- * @param {!WebInspector.SearchScope} searchScope
- */
- registerSearchScope: function(searchScope)
- {
- // FIXME: implement multiple search scopes.
- this._searchScope = searchScope;
- },
-
show: function()
{
var selection = window.getSelection();
@@ -132,7 +110,7 @@
{
this._isIndexing = true;
// FIXME: this._currentSearchScope should be initialized based on searchConfig
- this._currentSearchScope = this._searchScope;
+ this._currentSearchScope = this._searchScopes()[0];
if (this._progressIndicator)
this._progressIndicator.done();
this._progressIndicator = new WebInspector.ProgressIndicator();
@@ -190,7 +168,7 @@
{
this._searchConfig = searchConfig;
// FIXME: this._currentSearchScope should be initialized based on searchConfig
- this._currentSearchScope = this._searchScope;
+ this._currentSearchScope = this._searchScopes()[0];
if (this._progressIndicator)
this._progressIndicator.done();
@@ -216,6 +194,35 @@
if (this._currentSearchScope)
this._currentSearchScope.stopSearch();
delete this._searchConfig;
+ },
+
+ /**
+ * @return {!Array.<!WebInspector.SearchScope>}
+ */
+ _searchScopes: function()
+ {
+ // FIXME: implement multiple search scopes.
+ return /** @type {!Array.<!WebInspector.SearchScope>} */ (WebInspector.moduleManager.instances(WebInspector.SearchScope));
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Drawer.ViewFactory}
+ */
+WebInspector.AdvancedSearchController.ViewFactory = function()
+{
+}
+
+WebInspector.AdvancedSearchController.ViewFactory.prototype = {
+ /**
+ * @return {!WebInspector.View}
+ */
+ createView: function()
+ {
+ if (!WebInspector.advancedSearchController._searchView)
+ WebInspector.advancedSearchController._searchView = new WebInspector.SearchView(WebInspector.advancedSearchController);
+ return WebInspector.advancedSearchController._searchView;
}
}
@@ -230,7 +237,7 @@
this._controller = controller;
- this.element.className = "search-view vbox";
+ this.element.classList.add("search-view");
this._searchPanelElement = this.element.createChild("div", "search-drawer-header");
this._searchPanelElement.addEventListener("keydown", this._onKeyDown.bind(this), false);
@@ -381,11 +388,6 @@
this._search.select();
},
- afterShow: function()
- {
- this.focus();
- },
-
willHide: function()
{
this._controller.stopSearch();
@@ -455,7 +457,14 @@
var regexp = new RegExp(pattern, "g");
var queryParts = this.query.match(regexp) || [];
+ /**
+ * @type {!Array.<string>}
+ */
this._fileQueries = [];
+
+ /**
+ * @type {!Array.<string>}
+ */
this._queries = [];
for (var i = 0; i < queryParts.length; ++i) {
@@ -476,11 +485,17 @@
}
},
+ /**
+ * @return {!Array.<string>}
+ */
fileQueries: function()
{
return this._fileQueries;
},
+ /**
+ * @return {!Array.<string>}
+ */
queries: function()
{
return this._queries;
@@ -535,6 +550,12 @@
*/
performSearch: function(searchConfig, progress, searchResultCallback, searchFinishedCallback) { },
+ /**
+ * @param {!WebInspector.ProgressIndicator} progressIndicator
+ * @param {function(boolean)} callback
+ */
+ performIndexing: function(progressIndicator, callback) { },
+
stopSearch: function() { },
/**
@@ -602,12 +623,7 @@
*/
_createAnchor: function(uiSourceCode, lineNumber, columnNumber)
{
- var anchor = document.createElement("a");
- anchor.preferredPanel = "sources";
- anchor.href = sanitizeHref(uiSourceCode.originURL());
- anchor.uiSourceCode = uiSourceCode;
- anchor.lineNumber = lineNumber;
- return anchor;
+ return WebInspector.Linkifier.linkifyUsingRevealer(new WebInspector.UILocation(uiSourceCode, lineNumber, columnNumber), "", uiSourceCode.url, lineNumber);
},
/**
@@ -797,6 +813,6 @@
}
/**
- * @type {?WebInspector.AdvancedSearchController}
+ * @type {!WebInspector.AdvancedSearchController}
*/
-WebInspector.advancedSearchController = null;
+WebInspector.advancedSearchController;
diff --git a/Source/devtools/front_end/AllocationProfile.js b/Source/devtools/front_end/AllocationProfile.js
index d337178..ebda731 100644
--- a/Source/devtools/front_end/AllocationProfile.js
+++ b/Source/devtools/front_end/AllocationProfile.js
@@ -111,6 +111,9 @@
return traverseNode(traceTreeRaw, 0, null);
},
+ /**
+ * @return {!Array.<!WebInspector.HeapSnapshotCommon.SerializedTraceTop>}
+ */
serializeTraceTops: function()
{
if (this._traceTops)
@@ -136,6 +139,10 @@
return result;
},
+ /**
+ * @param {string} nodeId
+ * @return {!WebInspector.HeapSnapshotCommon.AllocationNodeCallers}
+ */
serializeCallers: function(nodeId)
{
var node = this._idToNode[nodeId];
@@ -157,10 +164,10 @@
for (var i = 0; i < callers.length; i++) {
branchingCallers.push(this._serializeCaller(callers[i]));
}
- return {
+ return /** @type {!WebInspector.HeapSnapshotCommon.AllocationNodeCallers} */ ({
nodesWithSingleCaller: nodesWithSingleCaller,
branchingCallers: branchingCallers
- };
+ });
},
_serializeCaller: function(node)
@@ -241,11 +248,17 @@
return result;
},
+ /**
+ * @return {!Array.<!WebInspector.AllocationBackTraceNode>}
+ */
callers: function()
{
return this._callers;
},
+ /**
+ * @return {boolean}
+ */
hasCallers: function()
{
return this._callers.length > 0;
@@ -278,6 +291,9 @@
this.totalSize += node.allocationSize;
},
+ /**
+ * @return {?WebInspector.AllocationBackTraceNode}
+ */
tracesWithThisTop: function()
{
if (!this._traceTops.length)
diff --git a/Source/devtools/front_end/AuditCategories.js b/Source/devtools/front_end/AuditCategories.js
index ffd3f63..848a455 100644
--- a/Source/devtools/front_end/AuditCategories.js
+++ b/Source/devtools/front_end/AuditCategories.js
@@ -30,13 +30,13 @@
/**
* @constructor
- * @extends {WebInspector.AuditCategory}
+ * @extends {WebInspector.AuditCategoryImpl}
*/
WebInspector.AuditCategories.PagePerformance = function() {
- WebInspector.AuditCategory.call(this, WebInspector.AuditCategories.PagePerformance.AuditCategoryName);
+ WebInspector.AuditCategoryImpl.call(this, WebInspector.AuditCategories.PagePerformance.AuditCategoryName);
}
-WebInspector.AuditCategories.PagePerformance.AuditCategoryName = "Web Page Performance";
+WebInspector.AuditCategories.PagePerformance.AuditCategoryName = WebInspector.UIString("Web Page Performance");
WebInspector.AuditCategories.PagePerformance.prototype = {
initialize: function()
@@ -47,18 +47,18 @@
this.addRule(new WebInspector.AuditRules.VendorPrefixedCSSProperties(), WebInspector.AuditRule.Severity.Warning);
},
- __proto__: WebInspector.AuditCategory.prototype
+ __proto__: WebInspector.AuditCategoryImpl.prototype
}
/**
* @constructor
- * @extends {WebInspector.AuditCategory}
+ * @extends {WebInspector.AuditCategoryImpl}
*/
WebInspector.AuditCategories.NetworkUtilization = function() {
- WebInspector.AuditCategory.call(this, WebInspector.AuditCategories.NetworkUtilization.AuditCategoryName);
+ WebInspector.AuditCategoryImpl.call(this, WebInspector.AuditCategories.NetworkUtilization.AuditCategoryName);
}
-WebInspector.AuditCategories.NetworkUtilization.AuditCategoryName = "Network Utilization";
+WebInspector.AuditCategories.NetworkUtilization.AuditCategoryName = WebInspector.UIString("Network Utilization");
WebInspector.AuditCategories.NetworkUtilization.prototype = {
initialize: function()
@@ -75,5 +75,5 @@
this.addRule(new WebInspector.AuditRules.ProxyCacheControlRule(), WebInspector.AuditRule.Severity.Warning);
},
- __proto__: WebInspector.AuditCategory.prototype
+ __proto__: WebInspector.AuditCategoryImpl.prototype
}
diff --git a/Source/devtools/front_end/LayersPanelDescriptor.js b/Source/devtools/front_end/AuditCategory.js
similarity index 67%
rename from Source/devtools/front_end/LayersPanelDescriptor.js
rename to Source/devtools/front_end/AuditCategory.js
index 95ad832..ee87afe 100644
--- a/Source/devtools/front_end/LayersPanelDescriptor.js
+++ b/Source/devtools/front_end/AuditCategory.js
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2014 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -27,14 +27,34 @@
*/
/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
+ * @interface
*/
-WebInspector.LayersPanelDescriptor = function()
+WebInspector.AuditCategory = function()
{
- WebInspector.PanelDescriptor.call(this, "layers", WebInspector.UIString("Layers"), "LayersPanel", "LayersPanel.js");
}
-WebInspector.LayersPanelDescriptor.prototype = {
- __proto__: WebInspector.PanelDescriptor.prototype
+WebInspector.AuditCategory.prototype = {
+ /**
+ * @return {string}
+ */
+ get id()
+ {
+ },
+
+ /**
+ * @return {string}
+ */
+ get displayName()
+ {
+ },
+
+ /**
+ * @param {!Array.<!WebInspector.NetworkRequest>} requests
+ * @param {function(!WebInspector.AuditRuleResult)} ruleResultCallback
+ * @param {function()} categoryDoneCallback
+ * @param {!WebInspector.Progress} progress
+ */
+ run: function(requests, ruleResultCallback, categoryDoneCallback, progress)
+ {
+ }
}
diff --git a/Source/devtools/front_end/AuditController.js b/Source/devtools/front_end/AuditController.js
index b38d749..5e8c3d9 100644
--- a/Source/devtools/front_end/AuditController.js
+++ b/Source/devtools/front_end/AuditController.js
@@ -48,6 +48,11 @@
{
this._progress.setTitle(WebInspector.UIString("Running audit"));
+ /**
+ * @param {!WebInspector.AuditCategoryResult} categoryResult
+ * @param {!WebInspector.AuditRuleResult} ruleResult
+ * @this {WebInspector.AuditController}
+ */
function ruleResultReadyCallback(categoryResult, ruleResult)
{
if (ruleResult && ruleResult.children)
@@ -60,6 +65,10 @@
var results = [];
var mainResourceURL = WebInspector.inspectedPageURL;
var categoriesDone = 0;
+
+ /**
+ * @this {WebInspector.AuditController}
+ */
function categoryDoneCallback()
{
if (++categoriesDone !== categories.length)
@@ -111,6 +120,9 @@
for (var i = 0; i < categoryIds.length; ++i)
categories.push(this._auditsPanel.categoriesById[categoryIds[i]]);
+ /**
+ * @this {WebInspector.AuditController}
+ */
function startAuditWhenResourcesReady()
{
startedCallback();
diff --git a/Source/devtools/front_end/AuditFormatters.js b/Source/devtools/front_end/AuditFormatters.js
index 5bea55f..e24ccce 100644
--- a/Source/devtools/front_end/AuditFormatters.js
+++ b/Source/devtools/front_end/AuditFormatters.js
@@ -36,11 +36,20 @@
}
WebInspector.AuditFormatters.Registry = {
+
+ /**
+ * @param {string} text
+ * @return {!Text}
+ */
text: function(text)
{
return document.createTextNode(text);
},
+ /**
+ * @param {string} snippetText
+ * @return {!Element}
+ */
snippet: function(snippetText)
{
var div = document.createElement("div");
@@ -49,6 +58,9 @@
return div;
},
+ /**
+ * @return {!Element}
+ */
concat: function()
{
var parent = document.createElement("span");
@@ -57,6 +69,12 @@
return parent;
},
+ /**
+ * @param {string} url
+ * @param {string=} displayText
+ * @param {boolean=} allowExternalNavigation
+ * @return {!Element}
+ */
url: function(url, displayText, allowExternalNavigation)
{
var a = document.createElement("a");
@@ -68,6 +86,11 @@
return a;
},
+ /**
+ * @param {string} url
+ * @param {number=} line
+ * @return {!Element}
+ */
resourceLink: function(url, line)
{
// FIXME: use WebInspector.Linkifier
@@ -78,6 +101,7 @@
WebInspector.AuditFormatters.prototype = {
/**
* @param {string|boolean|number|!Object} value
+ * @return {!Node}
*/
apply: function(value)
{
@@ -114,6 +138,7 @@
* @param {!Object} formatters
* @param {?Object} thisArgument
* @param {string|boolean|number|!Object} value
+ * @return {*}
*/
partiallyApply: function(formatters, thisArgument, value)
{
diff --git a/Source/devtools/front_end/AuditLauncherView.js b/Source/devtools/front_end/AuditLauncherView.js
index de57f57..10eaac3 100644
--- a/Source/devtools/front_end/AuditLauncherView.js
+++ b/Source/devtools/front_end/AuditLauncherView.js
@@ -158,6 +158,9 @@
this._buttonContainerElement.appendChild(this._progressIndicator.element);
this._displayResourceLoadingProgress = true;
+ /**
+ * @this {WebInspector.AuditLauncherView}
+ */
function onAuditStarted()
{
this._displayResourceLoadingProgress = false;
@@ -244,6 +247,10 @@
this._contentElement.appendChild(this._headerElement);
+ /**
+ * @param {?Event} event
+ * @this {WebInspector.AuditLauncherView}
+ */
function handleSelectAllClick(event)
{
this._selectAllClicked(event.target.checked, true);
diff --git a/Source/devtools/front_end/AuditResultView.js b/Source/devtools/front_end/AuditResultView.js
index f3eeadb..ea30f3f 100644
--- a/Source/devtools/front_end/AuditResultView.js
+++ b/Source/devtools/front_end/AuditResultView.js
@@ -36,7 +36,7 @@
WebInspector.AuditResultView = function(categoryResults)
{
WebInspector.SidebarPaneStack.call(this);
- this.element.classList.add("audit-result-view");
+ this.element.classList.add("audit-result-view", "fill");
function categorySorter(a, b) {
return (a.title || "").localeCompare(b.title || "");
diff --git a/Source/devtools/front_end/AuditRules.js b/Source/devtools/front_end/AuditRules.js
index 433ad2a..3f2cd0b 100644
--- a/Source/devtools/front_end/AuditRules.js
+++ b/Source/devtools/front_end/AuditRules.js
@@ -75,7 +75,7 @@
*/
WebInspector.AuditRules.GzipRule = function()
{
- WebInspector.AuditRule.call(this, "network-gzip", "Enable gzip compression");
+ WebInspector.AuditRule.call(this, "network-gzip", WebInspector.UIString("Enable gzip compression"));
}
WebInspector.AuditRules.GzipRule.prototype = {
@@ -108,9 +108,11 @@
result.violationCount++;
}
}
- if (!totalSavings)
- return callback(null);
- summary.value = String.sprintf("Compressing the following resources with gzip could reduce their transfer size by about two thirds (~%s):", Number.bytesToString(totalSavings));
+ if (!totalSavings) {
+ callback(null);
+ return;
+ }
+ summary.value = WebInspector.UIString("Compressing the following resources with gzip could reduce their transfer size by about two thirds (~%s):", Number.bytesToString(totalSavings));
callback(result);
},
@@ -162,13 +164,15 @@
if (extraResourceCount <= 0)
continue;
penalizedResourceCount += extraResourceCount - 1;
- summary.addChild(String.sprintf("%d %s resources served from %s.", domainResources.length, this._resourceTypeName, WebInspector.AuditRuleResult.resourceDomain(domain)));
+ summary.addChild(WebInspector.UIString("%d %s resources served from %s.", domainResources.length, this._resourceTypeName, WebInspector.AuditRuleResult.resourceDomain(domain)));
result.violationCount += domainResources.length;
}
- if (!penalizedResourceCount)
- return callback(null);
+ if (!penalizedResourceCount) {
+ callback(null);
+ return;
+ }
- summary.value = "There are multiple resources served from same domain. Consider combining them into as few files as possible.";
+ summary.value = WebInspector.UIString("There are multiple resources served from same domain. Consider combining them into as few files as possible.");
callback(result);
},
@@ -180,7 +184,7 @@
* @extends {WebInspector.AuditRules.CombineExternalResourcesRule}
*/
WebInspector.AuditRules.CombineJsResourcesRule = function(allowedPerDomain) {
- WebInspector.AuditRules.CombineExternalResourcesRule.call(this, "page-externaljs", "Combine external JavaScript", WebInspector.resourceTypes.Script, "JavaScript", allowedPerDomain);
+ WebInspector.AuditRules.CombineExternalResourcesRule.call(this, "page-externaljs", WebInspector.UIString("Combine external JavaScript"), WebInspector.resourceTypes.Script, "JavaScript", allowedPerDomain);
}
WebInspector.AuditRules.CombineJsResourcesRule.prototype = {
@@ -192,7 +196,7 @@
* @extends {WebInspector.AuditRules.CombineExternalResourcesRule}
*/
WebInspector.AuditRules.CombineCssResourcesRule = function(allowedPerDomain) {
- WebInspector.AuditRules.CombineExternalResourcesRule.call(this, "page-externalcss", "Combine external CSS", WebInspector.resourceTypes.Stylesheet, "CSS", allowedPerDomain);
+ WebInspector.AuditRules.CombineExternalResourcesRule.call(this, "page-externalcss", WebInspector.UIString("Combine external CSS"), WebInspector.resourceTypes.Stylesheet, "CSS", allowedPerDomain);
}
WebInspector.AuditRules.CombineCssResourcesRule.prototype = {
@@ -204,7 +208,7 @@
* @extends {WebInspector.AuditRule}
*/
WebInspector.AuditRules.MinimizeDnsLookupsRule = function(hostCountThreshold) {
- WebInspector.AuditRule.call(this, "network-minimizelookups", "Minimize DNS lookups");
+ WebInspector.AuditRule.call(this, "network-minimizelookups", WebInspector.UIString("Minimize DNS lookups"));
this._hostCountThreshold = hostCountThreshold;
}
@@ -230,10 +234,12 @@
summary.addSnippet(domain);
result.violationCount++;
}
- if (!summary.children || summary.children.length <= this._hostCountThreshold)
- return callback(null);
+ if (!summary.children || summary.children.length <= this._hostCountThreshold) {
+ callback(null);
+ return;
+ }
- summary.value = "The following domains only serve one resource each. If possible, avoid the extra DNS lookups by serving these resources from existing domains.";
+ summary.value = WebInspector.UIString("The following domains only serve one resource each. If possible, avoid the extra DNS lookups by serving these resources from existing domains.");
callback(result);
},
@@ -246,7 +252,7 @@
*/
WebInspector.AuditRules.ParallelizeDownloadRule = function(optimalHostnameCount, minRequestThreshold, minBalanceThreshold)
{
- WebInspector.AuditRule.call(this, "network-parallelizehosts", "Parallelize downloads across hostnames");
+ WebInspector.AuditRule.call(this, "network-parallelizehosts", WebInspector.UIString("Parallelize downloads across hostnames"));
this._optimalHostnameCount = optimalHostnameCount;
this._minRequestThreshold = minRequestThreshold;
this._minBalanceThreshold = minBalanceThreshold;
@@ -277,8 +283,10 @@
for (var url in domainToResourcesMap)
hosts.push(url);
- if (!hosts.length)
- return callback(null); // no hosts (local file or something)
+ if (!hosts.length) {
+ callback(null); // no hosts (local file or something)
+ return;
+ }
hosts.sort(hostSorter);
@@ -288,8 +296,10 @@
var busiestHostResourceCount = domainToResourcesMap[hosts[0]].length;
var requestCountAboveThreshold = busiestHostResourceCount - this._minRequestThreshold;
- if (requestCountAboveThreshold <= 0)
- return callback(null);
+ if (requestCountAboveThreshold <= 0) {
+ callback(null);
+ return;
+ }
var avgResourcesPerHost = 0;
for (var i = 0, size = hosts.length; i < size; ++i)
@@ -301,11 +311,13 @@
var pctAboveAvg = (requestCountAboveThreshold / avgResourcesPerHost) - 1.0;
var minBalanceThreshold = this._minBalanceThreshold;
- if (pctAboveAvg < minBalanceThreshold)
- return callback(null);
+ if (pctAboveAvg < minBalanceThreshold) {
+ callback(null);
+ return;
+ }
var requestsOnBusiestHost = domainToResourcesMap[hosts[0]];
- var entry = result.addChild(String.sprintf("This page makes %d parallelizable requests to %s. Increase download parallelization by distributing the following requests across multiple hostnames.", busiestHostResourceCount, hosts[0]), true);
+ var entry = result.addChild(WebInspector.UIString("This page makes %d parallelizable requests to %s. Increase download parallelization by distributing the following requests across multiple hostnames.", busiestHostResourceCount, hosts[0]), true);
for (var i = 0; i < requestsOnBusiestHost.length; ++i)
entry.addURL(requestsOnBusiestHost[i].url);
@@ -324,7 +336,7 @@
*/
WebInspector.AuditRules.UnusedCssRule = function()
{
- WebInspector.AuditRule.call(this, "page-unusedcss", "Remove unused CSS rules");
+ WebInspector.AuditRule.call(this, "page-unusedcss", WebInspector.UIString("Remove unused CSS rules"));
}
WebInspector.AuditRules.UnusedCssRule.prototype = {
@@ -393,7 +405,7 @@
var resource = WebInspector.resourceForURL(styleSheet.sourceURL);
var isInlineBlock = resource && resource.request && resource.request.type == WebInspector.resourceTypes.Document;
- var url = !isInlineBlock ? WebInspector.AuditRuleResult.linkifyDisplayName(styleSheet.sourceURL) : String.sprintf("Inline block #%d", ++inlineBlockOrdinal);
+ var url = !isInlineBlock ? WebInspector.AuditRuleResult.linkifyDisplayName(styleSheet.sourceURL) : WebInspector.UIString("Inline block #%d", ++inlineBlockOrdinal);
var pctUnused = Math.round(100 * unusedRules.length / styleSheet.rules.length);
if (!summary)
summary = result.addChild("", true);
@@ -409,7 +421,7 @@
return callback(null);
var totalUnusedPercent = Math.round(100 * totalUnusedStylesheetSize / totalStylesheetSize);
- summary.value = String.sprintf("%s rules (%d%) of CSS not used by the current page.", totalUnusedStylesheetSize, totalUnusedPercent);
+ summary.value = WebInspector.UIString("%s rules (%d%) of CSS not used by the current page.", totalUnusedStylesheetSize, totalUnusedPercent);
callback(result);
}
@@ -467,25 +479,16 @@
continuation(styleSheets);
}
- /**
- * @param {?Protocol.Error} error
- * @param {!Array.<!CSSAgent.CSSStyleSheetHeader>} styleSheetInfos
- */
- function allStylesCallback(error, styleSheetInfos)
- {
- if (progress.isCanceled())
- return;
-
- if (error || !styleSheetInfos || !styleSheetInfos.length)
- return evalCallback([]);
- var styleSheets = [];
- for (var i = 0; i < styleSheetInfos.length; ++i) {
- var info = styleSheetInfos[i];
- WebInspector.CSSStyleSheet.createForId(info.styleSheetId, styleSheetCallback.bind(null, styleSheets, info.sourceURL, i == styleSheetInfos.length - 1 ? evalCallback : null));
- }
+ var styleSheetInfos = WebInspector.cssModel.allStyleSheets();
+ if (!styleSheetInfos || !styleSheetInfos.length) {
+ evalCallback([]);
+ return;
}
-
- CSSAgent.getAllStyleSheets(allStylesCallback);
+ var styleSheets = [];
+ for (var i = 0; i < styleSheetInfos.length; ++i) {
+ var info = styleSheetInfos[i];
+ WebInspector.CSSStyleSheet.createForId(info.id, styleSheetCallback.bind(null, styleSheets, info.sourceURL, i == styleSheetInfos.length - 1 ? evalCallback : null));
+ }
},
__proto__: WebInspector.AuditRule.prototype
@@ -553,6 +556,11 @@
}
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @param {number} timeMs
+ * @return {boolean}
+ */
freshnessLifetimeGreaterThan: function(request, timeMs)
{
var dateHeader = this.responseHeader(request, "Date");
@@ -580,21 +588,39 @@
return (isNaN(freshnessLifetimeMs)) ? false : freshnessLifetimeMs > timeMs;
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @param {string} header
+ * @return {string|undefined}
+ */
responseHeader: function(request, header)
{
return request.responseHeaderValue(header);
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @param {string} header
+ * @return {boolean}
+ */
hasResponseHeader: function(request, header)
{
return request.responseHeaderValue(header) !== undefined;
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
isCompressible: function(request)
{
return request.type.isTextType();
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
isPubliclyCacheable: function(request)
{
if (this._isExplicitlyNonCacheable(request))
@@ -606,29 +632,47 @@
return request.url.indexOf("?") == -1 && !this.responseHeaderMatch(request, "Cache-Control", "private");
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @param {string} header
+ * @param {string} regexp
+ * @return {?Array.<string>}
+ */
responseHeaderMatch: function(request, header, regexp)
{
return request.responseHeaderValue(header)
? request.responseHeaderValue(header).match(new RegExp(regexp, "im"))
- : undefined;
+ : null;
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
hasExplicitExpiration: function(request)
{
return this.hasResponseHeader(request, "Date") &&
- (this.hasResponseHeader(request, "Expires") || this.responseHeaderMatch(request, "Cache-Control", "max-age"));
+ (this.hasResponseHeader(request, "Expires") || !!this.responseHeaderMatch(request, "Cache-Control", "max-age"));
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
_isExplicitlyNonCacheable: function(request)
{
var hasExplicitExp = this.hasExplicitExpiration(request);
- return this.responseHeaderMatch(request, "Cache-Control", "(no-cache|no-store|must-revalidate)") ||
- this.responseHeaderMatch(request, "Pragma", "no-cache") ||
+ return !!this.responseHeaderMatch(request, "Cache-Control", "(no-cache|no-store|must-revalidate)") ||
+ !!this.responseHeaderMatch(request, "Pragma", "no-cache") ||
(hasExplicitExp && !this.freshnessLifetimeGreaterThan(request, 0)) ||
- (!hasExplicitExp && request.url && request.url.indexOf("?") >= 0) ||
+ (!hasExplicitExp && !!request.url && request.url.indexOf("?") >= 0) ||
(!hasExplicitExp && !this.isCacheableResource(request));
},
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
isCacheableResource: function(request)
{
return request.statusCode !== undefined && WebInspector.AuditRules.CacheableResponseCodes[request.statusCode];
@@ -643,14 +687,14 @@
*/
WebInspector.AuditRules.BrowserCacheControlRule = function()
{
- WebInspector.AuditRules.CacheControlRule.call(this, "http-browsercache", "Leverage browser caching");
+ WebInspector.AuditRules.CacheControlRule.call(this, "http-browsercache", WebInspector.UIString("Leverage browser caching"));
}
WebInspector.AuditRules.BrowserCacheControlRule.prototype = {
handleNonCacheableResources: function(requests, result)
{
if (requests.length) {
- var entry = result.addChild("The following resources are explicitly non-cacheable. Consider making them cacheable if possible:", true);
+ var entry = result.addChild(WebInspector.UIString("The following resources are explicitly non-cacheable. Consider making them cacheable if possible:"), true);
result.violationCount += requests.length;
for (var i = 0; i < requests.length; ++i)
entry.addURL(requests[i].url);
@@ -659,15 +703,15 @@
runChecks: function(requests, result, callback)
{
- this.execCheck("The following resources are missing a cache expiration. Resources that do not specify an expiration may not be cached by browsers:",
+ this.execCheck(WebInspector.UIString("The following resources are missing a cache expiration. Resources that do not specify an expiration may not be cached by browsers:"),
this._missingExpirationCheck, requests, result);
- this.execCheck("The following resources specify a \"Vary\" header that disables caching in most versions of Internet Explorer:",
+ this.execCheck(WebInspector.UIString("The following resources specify a \"Vary\" header that disables caching in most versions of Internet Explorer:"),
this._varyCheck, requests, result);
- this.execCheck("The following cacheable resources have a short freshness lifetime:",
+ this.execCheck(WebInspector.UIString("The following cacheable resources have a short freshness lifetime:"),
this._oneMonthExpirationCheck, requests, result);
// Unable to implement the favicon check due to the WebKit limitations.
- this.execCheck("To further improve cache hit rate, specify an expiration one year in the future for the following cacheable resources:",
+ this.execCheck(WebInspector.UIString("To further improve cache hit rate, specify an expiration one year in the future for the following cacheable resources:"),
this._oneYearExpirationCheck, requests, result);
},
@@ -711,17 +755,17 @@
* @extends {WebInspector.AuditRules.CacheControlRule}
*/
WebInspector.AuditRules.ProxyCacheControlRule = function() {
- WebInspector.AuditRules.CacheControlRule.call(this, "http-proxycache", "Leverage proxy caching");
+ WebInspector.AuditRules.CacheControlRule.call(this, "http-proxycache", WebInspector.UIString("Leverage proxy caching"));
}
WebInspector.AuditRules.ProxyCacheControlRule.prototype = {
runChecks: function(requests, result, callback)
{
- this.execCheck("Resources with a \"?\" in the URL are not cached by most proxy caching servers:",
+ this.execCheck(WebInspector.UIString("Resources with a \"?\" in the URL are not cached by most proxy caching servers:"),
this._questionMarkCheck, requests, result);
- this.execCheck("Consider adding a \"Cache-Control: public\" header to the following resources:",
+ this.execCheck(WebInspector.UIString("Consider adding a \"Cache-Control: public\" header to the following resources:"),
this._publicCachingCheck, requests, result);
- this.execCheck("The following publicly cacheable resources contain a Set-Cookie header. This security vulnerability can cause cookies to be shared by multiple users.",
+ this.execCheck(WebInspector.UIString("The following publicly cacheable resources contain a Set-Cookie header. This security vulnerability can cause cookies to be shared by multiple users."),
this._setCookieCacheableCheck, requests, result);
},
@@ -752,7 +796,7 @@
*/
WebInspector.AuditRules.ImageDimensionsRule = function()
{
- WebInspector.AuditRule.call(this, "page-imagedims", "Specify image dimensions");
+ WebInspector.AuditRule.call(this, "page-imagedims", WebInspector.UIString("Specify image dimensions"));
}
WebInspector.AuditRules.ImageDimensionsRule.prototype = {
@@ -769,7 +813,7 @@
function doneCallback()
{
for (var url in urlToNoDimensionCount) {
- var entry = entry || result.addChild("A width and height should be specified for all images in order to speed up page display. The following image(s) are missing a width and/or height:", true);
+ var entry = entry || result.addChild(WebInspector.UIString("A width and height should be specified for all images in order to speed up page display. The following image(s) are missing a width and/or height:"), true);
var format = "%r";
if (urlToNoDimensionCount[url] > 1)
format += " (%d uses)";
@@ -887,7 +931,7 @@
*/
WebInspector.AuditRules.CssInHeadRule = function()
{
- WebInspector.AuditRule.call(this, "page-cssinhead", "Put CSS in the document head");
+ WebInspector.AuditRule.call(this, "page-cssinhead", WebInspector.UIString("Put CSS in the document head"));
}
WebInspector.AuditRules.CssInHeadRule.prototype = {
@@ -920,7 +964,7 @@
result.addFormatted("Link node %r should be moved to the document head in %r", urlViolations[1][i], url);
result.violationCount += urlViolations[1].length;
}
- summary.value = String.sprintf("CSS in the document body adversely impacts rendering performance.");
+ summary.value = WebInspector.UIString("CSS in the document body adversely impacts rendering performance.");
callback(result);
}
@@ -983,7 +1027,7 @@
*/
WebInspector.AuditRules.StylesScriptsOrderRule = function()
{
- WebInspector.AuditRule.call(this, "page-stylescriptorder", "Optimize the order of styles and scripts");
+ WebInspector.AuditRule.call(this, "page-stylescriptorder", WebInspector.UIString("Optimize the order of styles and scripts"));
}
WebInspector.AuditRules.StylesScriptsOrderRule.prototype = {
@@ -1007,13 +1051,13 @@
var cssBeforeInlineCount = resultValue[1];
if (lateCssUrls.length) {
- var entry = result.addChild("The following external CSS files were included after an external JavaScript file in the document head. To ensure CSS files are downloaded in parallel, always include external CSS before external JavaScript.", true);
+ var entry = result.addChild(WebInspector.UIString("The following external CSS files were included after an external JavaScript file in the document head. To ensure CSS files are downloaded in parallel, always include external CSS before external JavaScript."), true);
entry.addURLs(lateCssUrls);
result.violationCount += lateCssUrls.length;
}
if (cssBeforeInlineCount) {
- result.addChild(String.sprintf(" %d inline script block%s found in the head between an external CSS file and another resource. To allow parallel downloading, move the inline script before the external CSS file, or after the next resource.", cssBeforeInlineCount, cssBeforeInlineCount > 1 ? "s were" : " was"));
+ result.addChild(WebInspector.UIString(" %d inline script block%s found in the head between an external CSS file and another resource. To allow parallel downloading, move the inline script before the external CSS file, or after the next resource.", cssBeforeInlineCount, cssBeforeInlineCount > 1 ? "s were" : " was"));
result.violationCount += cssBeforeInlineCount;
}
callback(result);
@@ -1096,22 +1140,18 @@
*/
doRun: function(requests, result, callback, progress)
{
- CSSAgent.getAllStyleSheets(sheetsCallback.bind(this));
+ var headers = WebInspector.cssModel.allStyleSheets();
- function sheetsCallback(error, headers)
- {
- if (error)
- return callback(null);
+ if (!headers.length) {
+ callback(null);
+ return;
+ }
+ for (var i = 0; i < headers.length; ++i) {
+ var header = headers[i];
+ if (header.disabled)
+ continue; // Do not check disabled stylesheets.
- if (!headers.length)
- return callback(null);
- for (var i = 0; i < headers.length; ++i) {
- var header = headers[i];
- if (header.disabled)
- continue; // Do not check disabled stylesheets.
-
- this._visitStyleSheet(header.styleSheetId, i === headers.length - 1 ? finishedCallback : null, result, progress);
- }
+ this._visitStyleSheet(header.id, i === headers.length - 1 ? finishedCallback : null, result, progress);
}
function finishedCallback()
@@ -1124,6 +1164,10 @@
{
WebInspector.CSSStyleSheet.createForId(styleSheetId, sheetCallback.bind(this));
+ /**
+ * @param {?WebInspector.CSSStyleSheet} styleSheet
+ * @this {WebInspector.AuditRules.CSSRuleBase}
+ */
function sheetCallback(styleSheet)
{
if (progress.isCanceled())
@@ -1190,7 +1234,7 @@
*/
WebInspector.AuditRules.VendorPrefixedCSSProperties = function()
{
- WebInspector.AuditRules.CSSRuleBase.call(this, "page-vendorprefixedcss", "Use normal CSS property names instead of vendor-prefixed ones");
+ WebInspector.AuditRules.CSSRuleBase.call(this, "page-vendorprefixedcss", WebInspector.UIString("Use normal CSS property names instead of vendor-prefixed ones"));
this._webkitPrefix = "-webkit-";
}
@@ -1232,15 +1276,14 @@
var rule = style.parentRule;
this._mentionedProperties[normalPropertyName] = true;
if (!this._styleSheetResult)
- this._styleSheetResult = result.addChild(rule.sourceURL ? WebInspector.linkifyResourceAsNode(rule.sourceURL) : "<unknown>");
+ this._styleSheetResult = result.addChild(rule.sourceURL ? WebInspector.linkifyResourceAsNode(rule.sourceURL) : WebInspector.UIString("<unknown>"));
if (!this._ruleResult) {
var anchor = WebInspector.linkifyURLAsNode(rule.sourceURL, rule.selectorText);
- anchor.preferredPanel = "resources";
anchor.lineNumber = rule.lineNumberInSource();
this._ruleResult = this._styleSheetResult.addChild(anchor);
}
++result.violationCount;
- this._ruleResult.addSnippet(String.sprintf("\"" + this._webkitPrefix + "%s\" is used, but \"%s\" is supported.", normalPropertyName, normalPropertyName));
+ this._ruleResult.addSnippet(WebInspector.UIString("\"%s%s\" is used, but \"%s\" is supported.", this._webkitPrefix, normalPropertyName, normalPropertyName));
}
},
@@ -1306,7 +1349,7 @@
*/
WebInspector.AuditRules.CookieSizeRule = function(avgBytesThreshold)
{
- WebInspector.AuditRules.CookieRuleBase.call(this, "http-cookiesize", "Minimize cookie size");
+ WebInspector.AuditRules.CookieRuleBase.call(this, "http-cookiesize", WebInspector.UIString("Minimize cookie size"));
this._avgBytesThreshold = avgBytesThreshold;
this._maxBytesThreshold = 1000;
}
@@ -1390,17 +1433,17 @@
if (avgCookieSize > this._avgBytesThreshold && avgCookieSize < this._maxBytesThreshold)
bigAvgCookieDomains.push(WebInspector.AuditRuleResult.resourceDomain(domain) + ": " + Number.bytesToString(avgCookieSize));
}
- result.addChild(String.sprintf("The average cookie size for all requests on this page is %s", Number.bytesToString(avgAllCookiesSize)));
+ result.addChild(WebInspector.UIString("The average cookie size for all requests on this page is %s", Number.bytesToString(avgAllCookiesSize)));
var message;
if (hugeCookieDomains.length) {
- var entry = result.addChild("The following domains have a cookie size in excess of 1KB. This is harmful because requests with cookies larger than 1KB typically cannot fit into a single network packet.", true);
+ var entry = result.addChild(WebInspector.UIString("The following domains have a cookie size in excess of 1KB. This is harmful because requests with cookies larger than 1KB typically cannot fit into a single network packet."), true);
entry.addURLs(hugeCookieDomains);
result.violationCount += hugeCookieDomains.length;
}
if (bigAvgCookieDomains.length) {
- var entry = result.addChild(String.sprintf("The following domains have an average cookie size in excess of %d bytes. Reducing the size of cookies for these domains can reduce the time it takes to send requests.", this._avgBytesThreshold), true);
+ var entry = result.addChild(WebInspector.UIString("The following domains have an average cookie size in excess of %d bytes. Reducing the size of cookies for these domains can reduce the time it takes to send requests.", this._avgBytesThreshold), true);
entry.addURLs(bigAvgCookieDomains);
result.violationCount += bigAvgCookieDomains.length;
}
@@ -1415,7 +1458,7 @@
*/
WebInspector.AuditRules.StaticCookielessRule = function(minResources)
{
- WebInspector.AuditRules.CookieRuleBase.call(this, "http-staticcookieless", "Serve static content from a cookieless domain");
+ WebInspector.AuditRules.CookieRuleBase.call(this, "http-staticcookieless", WebInspector.UIString("Serve static content from a cookieless domain"));
this._minResources = minResources;
}
@@ -1443,7 +1486,7 @@
if (badUrls.length < this._minResources)
return;
- var entry = result.addChild(String.sprintf("%s of cookies were sent with the following static resources. Serve these static resources from a domain that does not set cookies:", Number.bytesToString(cookieBytes)), true);
+ var entry = result.addChild(WebInspector.UIString("%s of cookies were sent with the following static resources. Serve these static resources from a domain that does not set cookies:", Number.bytesToString(cookieBytes)), true);
entry.addURLs(badUrls);
result.violationCount = badUrls.length;
},
diff --git a/Source/devtools/front_end/AuditsPanel.js b/Source/devtools/front_end/AuditsPanel.js
index 3a06211..a11c6ff 100644
--- a/Source/devtools/front_end/AuditsPanel.js
+++ b/Source/devtools/front_end/AuditsPanel.js
@@ -30,17 +30,14 @@
/**
* @constructor
- * @extends {WebInspector.Panel}
+ * @extends {WebInspector.PanelWithSidebarTree}
*/
WebInspector.AuditsPanel = function()
{
- WebInspector.Panel.call(this, "audits");
+ WebInspector.PanelWithSidebarTree.call(this, "audits");
this.registerRequiredCSS("panelEnablerView.css");
this.registerRequiredCSS("auditsPanel.css");
- this.createSidebarViewWithTree();
- this.splitView.mainElement.classList.add("vbox");
-
this.auditsTreeElement = new WebInspector.SidebarSectionTreeElement("", {}, true);
this.sidebarTree.appendChild(this.auditsTreeElement);
this.auditsTreeElement.listItemElement.classList.add("hidden");
@@ -52,8 +49,6 @@
this.sidebarTree.appendChild(this.auditResultsTreeElement);
this.auditResultsTreeElement.expand();
- this.viewsContainerElement = this.splitView.mainElement;
-
this._constructCategories();
this._auditController = new WebInspector.AuditController(this);
@@ -157,7 +152,7 @@
this._visibleView = x;
if (x)
- x.show(this.viewsContainerElement);
+ x.show(this.mainElement());
},
wasShown: function()
@@ -173,21 +168,23 @@
this.auditResultsTreeElement.removeChildren();
},
- __proto__: WebInspector.Panel.prototype
+ __proto__: WebInspector.PanelWithSidebarTree.prototype
}
/**
* @constructor
+ * @implements {WebInspector.AuditCategory}
* @param {string} displayName
*/
-WebInspector.AuditCategory = function(displayName)
+WebInspector.AuditCategoryImpl = function(displayName)
{
this._displayName = displayName;
this._rules = [];
}
-WebInspector.AuditCategory.prototype = {
+WebInspector.AuditCategoryImpl.prototype = {
/**
+ * @override
* @return {string}
*/
get id()
@@ -197,6 +194,7 @@
},
/**
+ * @override
* @return {string}
*/
get displayName()
@@ -215,6 +213,7 @@
},
/**
+ * @override
* @param {!Array.<!WebInspector.NetworkRequest>} requests
* @param {function(!WebInspector.AuditRuleResult)} ruleResultCallback
* @param {function()} categoryDoneCallback
@@ -333,7 +332,7 @@
WebInspector.AuditCategoryResult.prototype = {
/**
- * @param {!WebInspector.AuditCategoryResult} ruleResult
+ * @param {!WebInspector.AuditRuleResult} ruleResult
*/
addRuleResult: function(ruleResult)
{
@@ -516,6 +515,7 @@
*/
WebInspector.AuditCategories = {};
+importScript("AuditCategory.js");
importScript("AuditCategories.js");
importScript("AuditController.js");
importScript("AuditFormatters.js");
diff --git a/Source/devtools/front_end/BreakpointManager.js b/Source/devtools/front_end/BreakpointManager.js
index 689dba8..4b2e1d3 100644
--- a/Source/devtools/front_end/BreakpointManager.js
+++ b/Source/devtools/front_end/BreakpointManager.js
@@ -68,13 +68,14 @@
/**
* @param {string} sourceFileId
* @param {number} lineNumber
+ * @param {number} columnNumber
* @return {string}
*/
-WebInspector.BreakpointManager._breakpointStorageId = function(sourceFileId, lineNumber)
+WebInspector.BreakpointManager._breakpointStorageId = function(sourceFileId, lineNumber, columnNumber)
{
if (!sourceFileId)
return "";
- return sourceFileId + ":" + lineNumber;
+ return sourceFileId + ":" + lineNumber + ":" + columnNumber;
}
WebInspector.BreakpointManager.prototype = {
@@ -107,7 +108,7 @@
var provisionalBreakpoints = this._provisionalBreakpointsForSourceFileId(sourceFileId);
for (var i = 0; i < breakpointItems.length; ++i) {
var breakpointItem = breakpointItems[i];
- var itemStorageId = WebInspector.BreakpointManager._breakpointStorageId(breakpointItem.sourceFileId, breakpointItem.lineNumber);
+ var itemStorageId = WebInspector.BreakpointManager._breakpointStorageId(breakpointItem.sourceFileId, breakpointItem.lineNumber, breakpointItem.columnNumber);
var provisionalBreakpoint = provisionalBreakpoints.get(itemStorageId);
if (provisionalBreakpoint) {
if (!this._breakpointsForPrimaryUISourceCode.get(uiSourceCode))
@@ -115,7 +116,7 @@
this._breakpointsForPrimaryUISourceCode.get(uiSourceCode).push(provisionalBreakpoint);
provisionalBreakpoint._updateInDebugger();
} else {
- this._innerSetBreakpoint(uiSourceCode, breakpointItem.lineNumber, breakpointItem.condition, breakpointItem.enabled);
+ this._innerSetBreakpoint(uiSourceCode, breakpointItem.lineNumber, breakpointItem.columnNumber, breakpointItem.condition, breakpointItem.enabled);
}
}
this._storage.unmute();
@@ -181,26 +182,28 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {number} lineNumber
+ * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
* @return {!WebInspector.BreakpointManager.Breakpoint}
*/
- setBreakpoint: function(uiSourceCode, lineNumber, condition, enabled)
+ setBreakpoint: function(uiSourceCode, lineNumber, columnNumber, condition, enabled)
{
this._debuggerModel.setBreakpointsActive(true);
- return this._innerSetBreakpoint(uiSourceCode, lineNumber, condition, enabled);
+ return this._innerSetBreakpoint(uiSourceCode, lineNumber, columnNumber, condition, enabled);
},
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {number} lineNumber
+ * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
* @return {!WebInspector.BreakpointManager.Breakpoint}
*/
- _innerSetBreakpoint: function(uiSourceCode, lineNumber, condition, enabled)
+ _innerSetBreakpoint: function(uiSourceCode, lineNumber, columnNumber, condition, enabled)
{
- var breakpoint = this.findBreakpoint(uiSourceCode, lineNumber);
+ var breakpoint = this.findBreakpoint(uiSourceCode, lineNumber, columnNumber);
if (breakpoint) {
breakpoint._updateBreakpoint(condition, enabled);
return breakpoint;
@@ -208,7 +211,7 @@
var projectId = uiSourceCode.project().id();
var path = uiSourceCode.path();
var sourceFileId = WebInspector.BreakpointManager._sourceFileId(uiSourceCode);
- breakpoint = new WebInspector.BreakpointManager.Breakpoint(this, projectId, path, sourceFileId, lineNumber, condition, enabled);
+ breakpoint = new WebInspector.BreakpointManager.Breakpoint(this, projectId, path, sourceFileId, lineNumber, columnNumber, condition, enabled);
if (!this._breakpointsForPrimaryUISourceCode.get(uiSourceCode))
this._breakpointsForPrimaryUISourceCode.put(uiSourceCode, []);
this._breakpointsForPrimaryUISourceCode.get(uiSourceCode).push(breakpoint);
@@ -218,13 +221,27 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {number} lineNumber
+ * @param {number} columnNumber
* @return {?WebInspector.BreakpointManager.Breakpoint}
*/
- findBreakpoint: function(uiSourceCode, lineNumber)
+ findBreakpoint: function(uiSourceCode, lineNumber, columnNumber)
{
var breakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
- var lineBreakpoints = breakpoints ? breakpoints[lineNumber] : null;
- return lineBreakpoints ? lineBreakpoints[0] : null;
+ var lineBreakpoints = breakpoints ? breakpoints.get(String(lineNumber)) : null;
+ var columnBreakpoints = lineBreakpoints ? lineBreakpoints.get(String(columnNumber)) : null;
+ return columnBreakpoints ? columnBreakpoints[0] : null;
+ },
+
+ /**
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ * @param {number} lineNumber
+ * @return {?WebInspector.BreakpointManager.Breakpoint}
+ */
+ findBreakpointOnLine: function(uiSourceCode, lineNumber)
+ {
+ var breakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
+ var lineBreakpoints = breakpoints ? breakpoints.get(String(lineNumber)) : null;
+ return lineBreakpoints ? lineBreakpoints.values()[0][0] : null;
},
/**
@@ -233,11 +250,14 @@
*/
breakpointsForUISourceCode: function(uiSourceCode)
{
- var breakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
- var allLineBreakpoints = breakpoints ? Object.values(breakpoints) : [];
var result = [];
- for (var i = 0; i < allLineBreakpoints.length; ++i)
- result = result.concat(allLineBreakpoints[i]);
+ var uiSourceCodeBreakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
+ var breakpoints = uiSourceCodeBreakpoints ? uiSourceCodeBreakpoints.values() : [];
+ for (var i = 0; i < breakpoints.length; ++i) {
+ var lineBreakpoints = breakpoints[i];
+ var columnBreakpointArrays = lineBreakpoints ? lineBreakpoints.values() : [];
+ result = result.concat.apply(result, columnBreakpointArrays);
+ }
return result;
},
@@ -255,29 +275,32 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {!Array.<{breakpoint: !WebInspector.BreakpointManager.Breakpoint, uiLocation: !WebInspector.UILocation}>}
+ * @return {!Array.<!{breakpoint: !WebInspector.BreakpointManager.Breakpoint, uiLocation: !WebInspector.UILocation}>}
*/
breakpointLocationsForUISourceCode: function(uiSourceCode)
{
- var breakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
- var breakpointLines = breakpoints ? Object.keys(breakpoints) : [];
+ var uiSourceCodeBreakpoints = this._breakpointsForUISourceCode.get(uiSourceCode);
+ var lineNumbers = uiSourceCodeBreakpoints ? uiSourceCodeBreakpoints.keys() : [];
var result = [];
- for (var i = 0; i < breakpointLines.length; ++i) {
- var lineNumber = parseInt(breakpointLines[i], 10);
- if (isNaN(lineNumber))
- continue;
- var lineBreakpoints = breakpoints[lineNumber];
- for (var j = 0; j < lineBreakpoints.length; ++j) {
- var breakpoint = lineBreakpoints[j];
- var uiLocation = new WebInspector.UILocation(uiSourceCode, lineNumber, 0);
- result.push({breakpoint: breakpoint, uiLocation: uiLocation});
+ for (var i = 0; i < lineNumbers.length; ++i) {
+ var lineBreakpoints = uiSourceCodeBreakpoints.get(lineNumbers[i]);
+ var columnNumbers = lineBreakpoints.keys();
+ for (var j = 0; j < columnNumbers.length; ++j) {
+ var columnBreakpoints = lineBreakpoints.get(columnNumbers[j]);
+ var lineNumber = parseInt(lineNumbers[i], 10);
+ var columnNumber = parseInt(columnNumbers[j], 10);
+ for (var k = 0; k < columnBreakpoints.length; ++k) {
+ var breakpoint = columnBreakpoints[k];
+ var uiLocation = new WebInspector.UILocation(uiSourceCode, lineNumber, columnNumber);
+ result.push({breakpoint: breakpoint, uiLocation: uiLocation});
+ }
}
}
return result;
},
/**
- * @return {!Array.<{breakpoint: !WebInspector.BreakpointManager.Breakpoint, uiLocation: !WebInspector.UILocation}>}
+ * @return {!Array.<!{breakpoint: !WebInspector.BreakpointManager.Breakpoint, uiLocation: !WebInspector.UILocation}>}
*/
allBreakpointLocations: function()
{
@@ -353,17 +376,20 @@
{
var breakpoints = this._breakpointsForUISourceCode.get(uiLocation.uiSourceCode);
if (!breakpoints) {
- breakpoints = {};
+ breakpoints = new StringMap();
this._breakpointsForUISourceCode.put(uiLocation.uiSourceCode, breakpoints);
}
-
- var lineBreakpoints = breakpoints[uiLocation.lineNumber];
+ var lineBreakpoints = breakpoints.get(String(uiLocation.lineNumber));
if (!lineBreakpoints) {
- lineBreakpoints = [];
- breakpoints[uiLocation.lineNumber] = lineBreakpoints;
+ lineBreakpoints = new StringMap();
+ breakpoints.put(String(uiLocation.lineNumber), lineBreakpoints);
}
-
- lineBreakpoints.push(breakpoint);
+ var columnBreakpoints = lineBreakpoints.get(String(uiLocation.columnNumber));
+ if (!columnBreakpoints) {
+ columnBreakpoints = [];
+ lineBreakpoints.put(String(uiLocation.columnNumber), columnBreakpoints);
+ }
+ columnBreakpoints.push(breakpoint);
this.dispatchEventToListeners(WebInspector.BreakpointManager.Events.BreakpointAdded, {breakpoint: breakpoint, uiLocation: uiLocation});
},
@@ -377,14 +403,18 @@
if (!breakpoints)
return;
- var lineBreakpoints = breakpoints[uiLocation.lineNumber];
+ var lineBreakpoints = breakpoints.get(String(uiLocation.lineNumber));
if (!lineBreakpoints)
return;
-
- lineBreakpoints.remove(breakpoint);
- if (!lineBreakpoints.length)
- delete breakpoints[uiLocation.lineNumber];
- if (Object.keys(breakpoints).length === 0)
+ var columnBreakpoints = lineBreakpoints.get(String(uiLocation.columnNumber));
+ if (!columnBreakpoints)
+ return;
+ columnBreakpoints.remove(breakpoint);
+ if (!columnBreakpoints.length)
+ lineBreakpoints.remove(String(uiLocation.columnNumber));
+ if (!lineBreakpoints.size())
+ breakpoints.remove(String(uiLocation.lineNumber));
+ if (!breakpoints.size())
this._breakpointsForUISourceCode.remove(uiLocation.uiSourceCode);
this.dispatchEventToListeners(WebInspector.BreakpointManager.Events.BreakpointRemoved, {breakpoint: breakpoint, uiLocation: uiLocation});
},
@@ -399,15 +429,17 @@
* @param {string} path
* @param {string} sourceFileId
* @param {number} lineNumber
+ * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
*/
-WebInspector.BreakpointManager.Breakpoint = function(breakpointManager, projectId, path, sourceFileId, lineNumber, condition, enabled)
+WebInspector.BreakpointManager.Breakpoint = function(breakpointManager, projectId, path, sourceFileId, lineNumber, columnNumber, condition, enabled)
{
this._breakpointManager = breakpointManager;
this._projectId = projectId;
this._path = path;
this._lineNumber = lineNumber;
+ this._columnNumber = columnNumber;
this._sourceFileId = sourceFileId;
/** @type {!Array.<!WebInspector.Script.Location>} */
this._liveLocations = [];
@@ -446,6 +478,14 @@
},
/**
+ * @return {number}
+ */
+ columnNumber: function()
+ {
+ return this._columnNumber;
+ },
+
+ /**
* @return {?WebInspector.UISourceCode}
*/
uiSourceCode: function()
@@ -555,12 +595,12 @@
var uiSourceCode = this._breakpointManager._workspace.uiSourceCode(this._projectId, this._path);
if (!uiSourceCode)
return;
- var rawLocation = uiSourceCode.uiLocationToRawLocation(this._lineNumber, 0);
+ var rawLocation = uiSourceCode.uiLocationToRawLocation(this._lineNumber, this._columnNumber);
var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (rawLocation);
if (debuggerModelLocation)
this._breakpointManager._debuggerModel.setBreakpointByScriptLocation(debuggerModelLocation, this._condition, this._didSetBreakpointInDebugger.bind(this));
else if (uiSourceCode.url)
- this._breakpointManager._debuggerModel.setBreakpointByURL(uiSourceCode.url, this._lineNumber, 0, this._condition, this._didSetBreakpointInDebugger.bind(this));
+ this._breakpointManager._debuggerModel.setBreakpointByURL(uiSourceCode.url, this._lineNumber, this._columnNumber, this._condition, this._didSetBreakpointInDebugger.bind(this));
},
/**
@@ -588,7 +628,7 @@
for (var i = 0; i < locations.length; ++i) {
var script = this._breakpointManager._debuggerModel.scriptForId(locations[i].scriptId);
var uiLocation = script.rawLocationToUILocation(locations[i].lineNumber, locations[i].columnNumber);
- if (this._breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber)) {
+ if (this._breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber)) {
// location clash
this.remove();
return;
@@ -612,11 +652,9 @@
{
for (var stringifiedLocation in this._uiLocations)
this._breakpointManager._uiLocationRemoved(this, this._uiLocations[stringifiedLocation]);
-
for (var i = 0; i < this._liveLocations.length; ++i)
this._liveLocations[i].dispose();
this._liveLocations = [];
-
this._uiLocations = {};
},
@@ -625,7 +663,7 @@
*/
_breakpointStorageId: function()
{
- return WebInspector.BreakpointManager._breakpointStorageId(this._sourceFileId, this._lineNumber);
+ return WebInspector.BreakpointManager._breakpointStorageId(this._sourceFileId, this._lineNumber, this._columnNumber);
},
_fakeBreakpointAtPrimaryLocation: function()
@@ -634,7 +672,7 @@
var uiSourceCode = this._breakpointManager._workspace.uiSourceCode(this._projectId, this._path);
if (!uiSourceCode)
return;
- var uiLocation = new WebInspector.UILocation(uiSourceCode, this._lineNumber, 0);
+ var uiLocation = new WebInspector.UILocation(uiSourceCode, this._lineNumber, this._columnNumber);
this._uiLocations[""] = uiLocation;
this._breakpointManager._uiLocationAdded(this, uiLocation);
}
@@ -654,7 +692,8 @@
this._breakpoints = {};
for (var i = 0; i < breakpoints.length; ++i) {
var breakpoint = /** @type {!WebInspector.BreakpointManager.Storage.Item} */ (breakpoints[i]);
- this._breakpoints[breakpoint.sourceFileId + ":" + breakpoint.lineNumber] = breakpoint;
+ breakpoint.columnNumber = breakpoint.columnNumber || 0;
+ this._breakpoints[breakpoint.sourceFileId + ":" + breakpoint.lineNumber + ":" + breakpoint.columnNumber] = breakpoint;
}
}
@@ -724,9 +763,10 @@
{
this.sourceFileId = breakpoint._sourceFileId;
this.lineNumber = breakpoint.lineNumber();
+ this.columnNumber = breakpoint.columnNumber();
this.condition = breakpoint.condition();
this.enabled = breakpoint.enabled();
}
-/** @type {?WebInspector.BreakpointManager} */
-WebInspector.breakpointManager = null;
+/** @type {!WebInspector.BreakpointManager} */
+WebInspector.breakpointManager;
diff --git a/Source/devtools/front_end/BreakpointsSidebarPane.js b/Source/devtools/front_end/BreakpointsSidebarPane.js
index 5061df0..deee4e7 100644
--- a/Source/devtools/front_end/BreakpointsSidebarPane.js
+++ b/Source/devtools/front_end/BreakpointsSidebarPane.js
@@ -25,12 +25,14 @@
/**
* @constructor
+ * @param {!WebInspector.DebuggerModel} debuggerModel
* @param {!WebInspector.BreakpointManager} breakpointManager
* @extends {WebInspector.SidebarPane}
*/
-WebInspector.JavaScriptBreakpointsSidebarPane = function(breakpointManager, showSourceLineDelegate)
+WebInspector.JavaScriptBreakpointsSidebarPane = function(debuggerModel, breakpointManager, showSourceLineDelegate)
{
WebInspector.SidebarPane.call(this, WebInspector.UIString("Breakpoints"));
+ this._debuggerModel = debuggerModel;
this.registerRequiredCSS("breakpointsList.css");
this._breakpointManager = breakpointManager;
@@ -61,11 +63,11 @@
_emptyElementContextMenu: function(event)
{
var contextMenu = new WebInspector.ContextMenu(event);
- var breakpointActive = WebInspector.debuggerModel.breakpointsActive();
+ var breakpointActive = this._debuggerModel.breakpointsActive();
var breakpointActiveTitle = breakpointActive ?
WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Deactivate breakpoints" : "Deactivate Breakpoints") :
WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Activate breakpoints" : "Activate Breakpoints");
- contextMenu.appendItem(breakpointActiveTitle, WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel, !breakpointActive));
+ contextMenu.appendItem(breakpointActiveTitle, this._debuggerModel.setBreakpointsActive.bind(this._debuggerModel, !breakpointActive));
contextMenu.show();
},
@@ -111,10 +113,16 @@
*/
function didRequestContent(content)
{
- var lineEndings = content.lineEndings();
- if (uiLocation.lineNumber < lineEndings.length)
- snippetElement.textContent = content.substring(lineEndings[uiLocation.lineNumber - 1], lineEndings[uiLocation.lineNumber]);
+ var lineNumber = uiLocation.lineNumber
+ var columnNumber = uiLocation.columnNumber;
+ var contentString = new String(content);
+ if (lineNumber < contentString.lineCount()) {
+ var lineText = contentString.lineAt(lineNumber);
+ var maxSnippetLength = 200;
+ snippetElement.textContent = lineText.substr(columnNumber).trimEnd(maxSnippetLength);
+ }
}
+
uiLocation.uiSourceCode.requestContent(didRequestContent.bind(this));
element._data = uiLocation;
@@ -197,11 +205,11 @@
}
contextMenu.appendSeparator();
- var breakpointActive = WebInspector.debuggerModel.breakpointsActive();
+ var breakpointActive = this._debuggerModel.breakpointsActive();
var breakpointActiveTitle = breakpointActive ?
WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Deactivate breakpoints" : "Deactivate Breakpoints") :
WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Activate breakpoints" : "Activate Breakpoints");
- contextMenu.appendItem(breakpointActiveTitle, WebInspector.debuggerModel.setBreakpointsActive.bind(WebInspector.debuggerModel, !breakpointActive));
+ contextMenu.appendItem(breakpointActiveTitle, this._debuggerModel.setBreakpointsActive.bind(this._debuggerModel, !breakpointActive));
function enabledBreakpointCount(breakpoints)
{
@@ -318,6 +326,12 @@
inputElementContainer.appendChild(inputElement);
this._addListElement(inputElementContainer, this.listElement.firstChild);
+ /**
+ * @param {boolean} accept
+ * @param {!Element} e
+ * @param {string} text
+ * @this {WebInspector.XHRBreakpointsSidebarPane}
+ */
function finishEditing(accept, e, text)
{
this._removeListElement(inputElementContainer);
@@ -327,8 +341,8 @@
}
}
- var config = new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false));
- WebInspector.startEditing(inputElement, config);
+ var config = new WebInspector.InplaceEditor.Config(finishEditing.bind(this, true), finishEditing.bind(this, false));
+ WebInspector.InplaceEditor.startEditing(inputElement, config);
},
_setBreakpoint: function(url, enabled)
@@ -384,11 +398,19 @@
_contextMenu: function(url, event)
{
var contextMenu = new WebInspector.ContextMenu(event);
+
+ /**
+ * @this {WebInspector.XHRBreakpointsSidebarPane}
+ */
function removeBreakpoint()
{
this._removeBreakpoint(url);
this._saveBreakpoints();
}
+
+ /**
+ * @this {WebInspector.XHRBreakpointsSidebarPane}
+ */
function removeAllBreakpoints()
{
for (var url in this._breakpointElements)
@@ -421,6 +443,12 @@
this.listElement.insertBefore(inputElement, element);
element.classList.add("hidden");
+ /**
+ * @param {boolean} accept
+ * @param {!Element} e
+ * @param {string} text
+ * @this {WebInspector.XHRBreakpointsSidebarPane}
+ */
function finishEditing(accept, e, text)
{
this._removeListElement(inputElement);
@@ -432,7 +460,7 @@
element.classList.remove("hidden");
}
- WebInspector.startEditing(inputElement, new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false)));
+ WebInspector.InplaceEditor.startEditing(inputElement, new WebInspector.InplaceEditor.Config(finishEditing.bind(this, true), finishEditing.bind(this, false)));
},
highlightBreakpoint: function(url)
diff --git a/Source/devtools/front_end/CPUProfileView.js b/Source/devtools/front_end/CPUProfileView.js
index c84bbf5..8e2ab10 100644
--- a/Source/devtools/front_end/CPUProfileView.js
+++ b/Source/devtools/front_end/CPUProfileView.js
@@ -32,8 +32,8 @@
{
WebInspector.View.call(this);
- this.element.classList.add("profile-view");
-
+ this.element.classList.add("cpu-profile-view");
+
this.showSelfTimeAsPercent = WebInspector.settings.createSetting("cpuProfilerShowSelfTimeAsPercent", true);
this.showTotalTimeAsPercent = WebInspector.settings.createSetting("cpuProfilerShowTotalTimeAsPercent", true);
this.showAverageTimeAsPercent = WebInspector.settings.createSetting("cpuProfilerShowAverageTimeAsPercent", true);
@@ -86,14 +86,10 @@
this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.DefaultFormatter(30));
- function didCreateTempFile()
- {
- ProfilerAgent.getCPUProfile(this.profile.uid, this._getCPUProfileCallback.bind(this));
- }
if (this.profile._profile) // If the profile has been loaded from file then use it.
this._processProfileData(this.profile._profile);
else
- this.profile._createTempFile(didCreateTempFile.bind(this));
+ this._processProfileData(this.profile.protocolProfile());
}
WebInspector.CPUProfileView._TypeFlame = "Flame";
@@ -124,23 +120,8 @@
},
/**
- * @param {?Protocol.Error} error
- * @param {!ProfilerAgent.CPUProfile} profile
+ * @param {?ProfilerAgent.CPUProfile} profile
*/
- _getCPUProfileCallback: function(error, profile)
- {
- if (error)
- return;
-
- if (!profile.head) {
- // Profiling was tentatively terminated with the "Clear all profiles." button.
- return;
- }
-
- this.profile._saveToTempFile(JSON.stringify(profile));
- this._processProfileData(profile);
- },
-
_processProfileData: function(profile)
{
this.profileHead = profile.head;
@@ -168,7 +149,7 @@
_getBottomUpProfileDataGridTree: function()
{
if (!this._bottomUpProfileDataGridTree)
- this._bottomUpProfileDataGridTree = new WebInspector.BottomUpProfileDataGridTree(this, this.profileHead);
+ this._bottomUpProfileDataGridTree = new WebInspector.BottomUpProfileDataGridTree(this, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profileHead));
return this._bottomUpProfileDataGridTree;
},
@@ -178,7 +159,7 @@
_getTopDownProfileDataGridTree: function()
{
if (!this._topDownProfileDataGridTree)
- this._topDownProfileDataGridTree = new WebInspector.TopDownProfileDataGridTree(this, this.profileHead);
+ this._topDownProfileDataGridTree = new WebInspector.TopDownProfileDataGridTree(this, /** @type {!ProfilerAgent.CPUProfileNode} */ (this.profileHead));
return this._topDownProfileDataGridTree;
},
@@ -379,16 +360,25 @@
this._jumpToSearchResult(this._currentSearchResultIndex);
},
+ /**
+ * @return {boolean}
+ */
showingFirstSearchResult: function()
{
return (this._currentSearchResultIndex === 0);
},
+ /**
+ * @return {boolean}
+ */
showingLastSearchResult: function()
{
return (this._searchResults && this._currentSearchResultIndex === (this._searchResults.length - 1));
},
+ /**
+ * @return {number}
+ */
currentSearchResultIndex: function() {
return this._currentSearchResultIndex;
},
@@ -423,10 +413,7 @@
var script = WebInspector.debuggerModel.scriptForId(node.scriptId)
if (!script)
return;
- var uiLocation = script.rawLocationToUILocation(node.lineNumber);
- if (!uiLocation)
- return;
- WebInspector.panel("sources").showUILocation(uiLocation);
+ WebInspector.Revealer.reveal(script.rawLocationToUILocation(node.lineNumber));
},
_changeView: function()
@@ -603,17 +590,17 @@
var head = this.profileHead;
head.parent = null;
head.head = null;
- var nodesToTraverse = [ { parent: head, children: head.children } ];
- while (nodesToTraverse.length > 0) {
- var pair = nodesToTraverse.pop();
- var parent = pair.parent;
- var children = pair.children;
+ var nodesToTraverse = [ head ];
+ while (nodesToTraverse.length) {
+ var parent = nodesToTraverse.pop();
+ var children = parent.children;
var length = children.length;
for (var i = 0; i < length; ++i) {
- children[i].head = head;
- children[i].parent = parent;
- if (children[i].children.length > 0)
- nodesToTraverse.push({ parent: children[i], children: children[i].children });
+ var child = children[i];
+ child.head = head;
+ child.parent = parent;
+ if (child.children.length)
+ nodesToTraverse.push(child);
}
}
},
@@ -632,7 +619,7 @@
var topLevelNodes = this.profileHead.children;
for (var i = 0; i < topLevelNodes.length; i++) {
var node = topLevelNodes[i];
- if (node.functionName == "(garbage collector)") {
+ if (node.functionName === "(garbage collector)") {
this._gcNode = node;
break;
}
@@ -645,14 +632,18 @@
/**
* @constructor
* @extends {WebInspector.ProfileType}
- * @implements {ProfilerAgent.Dispatcher}
+ * @implements {WebInspector.CPUProfilerModel.Delegate}
*/
WebInspector.CPUProfileType = function()
{
WebInspector.ProfileType.call(this, WebInspector.CPUProfileType.TypeId, WebInspector.UIString("Collect JavaScript CPU Profile"));
- InspectorBackend.registerProfilerDispatcher(this);
this._recording = false;
+
+ this._nextAnonymousConsoleProfileNumber = 1;
+ this._anonymousConsoleProfileIdToTitle = {};
+
WebInspector.CPUProfileType.instance = this;
+ WebInspector.cpuProfilerModel.setDelegate(this);
}
WebInspector.CPUProfileType.TypeId = "CPU";
@@ -698,21 +689,84 @@
},
/**
- * @param {!ProfilerAgent.ProfileHeader} profileHeader
+ * @param {string} id
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {string=} title
*/
- addProfileHeader: function(profileHeader)
+ consoleProfileStarted: function(id, scriptLocation, title)
{
- if (this._profileBeingRecorded) {
- this._profileBeingRecorded.title = profileHeader.title;
- this._profileBeingRecorded.sidebarElement.mainTitle = profileHeader.title;
- this._profileBeingRecorded.uid = profileHeader.uid;
- WebInspector.panels.profiles._showProfile(this._profileBeingRecorded);
- this._profileBeingRecorded = null;
- return;
+ var resolvedTitle = title;
+ if (!resolvedTitle) {
+ resolvedTitle = WebInspector.UIString("Profile %s", this._nextAnonymousConsoleProfileNumber++);
+ this._anonymousConsoleProfileIdToTitle[id] = resolvedTitle;
}
- this.addProfile(new WebInspector.CPUProfileHeader(this, profileHeader.title, profileHeader.uid));
+ var messageElement = document.createTextNode(WebInspector.UIString("Profile '%s' started.", resolvedTitle));
+ this._addMessageToConsole(WebInspector.ConsoleMessage.MessageType.Profile, scriptLocation, messageElement);
},
+ /**
+ * @param {string} protocolId
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {!ProfilerAgent.CPUProfile} cpuProfile
+ * @param {string=} title
+ */
+ consoleProfileFinished: function(protocolId, scriptLocation, cpuProfile, title)
+ {
+ var resolvedTitle = title;
+ if (typeof title === "undefined") {
+ resolvedTitle = this._anonymousConsoleProfileIdToTitle[protocolId];
+ delete this._anonymousConsoleProfileIdToTitle[protocolId];
+ }
+
+ var profile = new WebInspector.CPUProfileHeader(this, resolvedTitle);
+ profile.setProtocolProfile(cpuProfile);
+ this.addProfile(profile);
+
+ var messageElement = document.createElement("span");
+ messageElement.createTextChild("Profile '");
+ var a = messageElement.createChild("span", "link");
+ a.title = resolvedTitle;
+ a.textContent = resolvedTitle;
+ a.addEventListener("click", onClick.bind(this, profile.uid), true);
+ function onClick(profileUid, event)
+ {
+ var profile = WebInspector.ProfileTypeRegistry.instance.cpuProfileType.getProfile(profileUid);
+ if (profile)
+ WebInspector.showPanel("profiles").showProfile(profile);
+ }
+ messageElement.createTextChild("' finished.");
+
+ this._addMessageToConsole(WebInspector.ConsoleMessage.MessageType.ProfileEnd, scriptLocation, messageElement);
+ },
+
+ /**
+ * @param {string} type
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {!Node} messageElement
+ */
+ _addMessageToConsole: function(type, scriptLocation, messageElement)
+ {
+ var rawLocation = new WebInspector.DebuggerModel.Location(scriptLocation.scriptId, scriptLocation.lineNumber, scriptLocation.columnNumber || 0);
+ var uiLocation = WebInspector.debuggerModel.rawLocationToUILocation(rawLocation);
+ var url;
+ if (uiLocation)
+ url = uiLocation.url();
+ var message = WebInspector.ConsoleMessage.create(
+ WebInspector.ConsoleMessage.MessageSource.ConsoleAPI,
+ WebInspector.ConsoleMessage.MessageLevel.Debug,
+ "",
+ type,
+ url || undefined,
+ scriptLocation.lineNumber,
+ scriptLocation.columnNumber);
+
+ message.setMessageElement(messageElement);
+ WebInspector.console.addMessage(message);
+ },
+
+ /**
+ * @return {boolean}
+ */
isRecordingProfile: function()
{
return this._recording;
@@ -722,10 +776,11 @@
{
if (this._profileBeingRecorded)
return;
- this._profileBeingRecorded = new WebInspector.CPUProfileHeader(this, WebInspector.UIString("Recording\u2026"));
+ this._profileBeingRecorded = new WebInspector.CPUProfileHeader(this);
this.addProfile(this._profileBeingRecorded);
-
+ this._profileBeingRecorded.updateStatus(WebInspector.UIString("Recording\u2026"));
this._recording = true;
+ WebInspector.cpuProfilerModel.setRecording(true);
WebInspector.userMetrics.ProfilesCPUProfileTaken.record();
ProfilerAgent.start();
},
@@ -733,12 +788,29 @@
stopRecordingProfile: function()
{
this._recording = false;
- ProfilerAgent.stop();
+ WebInspector.cpuProfilerModel.setRecording(false);
+
+ /**
+ * @param {?string} error
+ * @param {?ProfilerAgent.CPUProfile} profile
+ * @this {WebInspector.CPUProfileType}
+ */
+ function didStopProfiling(error, profile)
+ {
+ if (!this._profileBeingRecorded)
+ return;
+ this._profileBeingRecorded.setProtocolProfile(profile);
+ this._profileBeingRecorded.updateStatus("");
+ var recordedProfile = this._profileBeingRecorded;
+ this._profileBeingRecorded = null;
+ WebInspector.panels.profiles.showProfile(recordedProfile);
+ }
+ ProfilerAgent.stop(didStopProfiling.bind(this));
},
/**
* @override
- * @param {!string} title
+ * @param {string} title
* @return {!WebInspector.ProfileHeader}
*/
createProfileLoadedFromFile: function(title)
@@ -749,21 +821,9 @@
/**
* @override
*/
- removeProfile: function(profile)
+ profileBeingRecordedRemoved: function()
{
- if (this._profileBeingRecorded === profile)
- this._recording = false;
- else if (!profile.fromFile())
- ProfilerAgent.removeProfile(profile.uid);
- WebInspector.ProfileType.prototype.removeProfile.call(this, profile);
- },
-
- /**
- * @override
- */
- resetProfiles: function()
- {
- this._reset();
+ this.stopRecordingProfile();
},
__proto__: WebInspector.ProfileType.prototype
@@ -775,12 +835,11 @@
* @implements {WebInspector.OutputStream}
* @implements {WebInspector.OutputStreamDelegate}
* @param {!WebInspector.CPUProfileType} type
- * @param {string} title
- * @param {number=} uid
+ * @param {string=} title
*/
-WebInspector.CPUProfileHeader = function(type, title, uid)
+WebInspector.CPUProfileHeader = function(type, title)
{
- WebInspector.ProfileHeader.call(this, type, title, uid);
+ WebInspector.ProfileHeader.call(this, type, title || WebInspector.UIString("Profile %d", type._nextProfileUid));
this._tempFile = null;
}
@@ -788,7 +847,7 @@
onTransferStarted: function()
{
this._jsonifiedProfile = "";
- this.sidebarElement.subtitle = WebInspector.UIString("Loading\u2026 %s", Number.bytesToString(this._jsonifiedProfile.length));
+ this.updateStatus(WebInspector.UIString("Loading\u2026 %s", Number.bytesToString(this._jsonifiedProfile.length)));
},
/**
@@ -796,15 +855,15 @@
*/
onChunkTransferred: function(reader)
{
- this.sidebarElement.subtitle = WebInspector.UIString("Loading\u2026 %d\%", Number.bytesToString(this._jsonifiedProfile.length));
+ this.updateStatus(WebInspector.UIString("Loading\u2026 %d\%", Number.bytesToString(this._jsonifiedProfile.length)));
},
onTransferFinished: function()
{
- this.sidebarElement.subtitle = WebInspector.UIString("Parsing\u2026");
+ this.updateStatus(WebInspector.UIString("Parsing\u2026"));
this._profile = JSON.parse(this._jsonifiedProfile);
this._jsonifiedProfile = null;
- this.sidebarElement.subtitle = WebInspector.UIString("Loaded");
+ this.updateStatus(WebInspector.UIString("Loaded"));
if (this._profileType._profileBeingRecorded === this)
this._profileType._profileBeingRecorded = null;
@@ -815,18 +874,20 @@
*/
onError: function(reader, e)
{
+ var subtitle;
switch(e.target.error.code) {
case e.target.error.NOT_FOUND_ERR:
- this.sidebarElement.subtitle = WebInspector.UIString("'%s' not found.", reader.fileName());
- break;
- case e.target.error.NOT_READABLE_ERR:
- this.sidebarElement.subtitle = WebInspector.UIString("'%s' is not readable", reader.fileName());
- break;
- case e.target.error.ABORT_ERR:
+ subtitle = WebInspector.UIString("'%s' not found.", reader.fileName());
break;
+ case e.target.error.NOT_READABLE_ERR:
+ subtitle = WebInspector.UIString("'%s' is not readable", reader.fileName());
+ break;
+ case e.target.error.ABORT_ERR:
+ return;
default:
- this.sidebarElement.subtitle = WebInspector.UIString("'%s' error %d", reader.fileName(), e.target.error.code);
+ subtitle = WebInspector.UIString("'%s' error %d", reader.fileName(), e.target.error.code);
}
+ this.updateStatus(subtitle);
},
/**
@@ -842,6 +903,15 @@
/**
* @override
*/
+ dispose: function()
+ {
+ this.removeTempFile();
+ },
+
+ /**
+ * @override
+ * @return {!WebInspector.ProfileSidebarTreeElement}
+ */
createSidebarTreeElement: function()
{
return new WebInspector.ProfileSidebarTreeElement(this, "profile-sidebar-tree-item");
@@ -849,9 +919,9 @@
/**
* @override
- * @param {!WebInspector.ProfilesPanel} profilesPanel
+ * @return {!WebInspector.CPUProfileView}
*/
- createView: function(profilesPanel)
+ createView: function()
{
return new WebInspector.CPUProfileView(this);
},
@@ -862,14 +932,16 @@
*/
canSaveToFile: function()
{
- return !!this._tempFile;
+ return !this.fromFile() && this._protocolProfile;
},
saveToFile: function()
{
var fileOutputStream = new WebInspector.FileOutputStream();
+
/**
* @param {boolean} accepted
+ * @this {WebInspector.CPUProfileHeader}
*/
function onOpenForSave(accepted)
{
@@ -882,7 +954,15 @@
else
fileOutputStream.close();
}
- this._tempFile.read(didRead.bind(this));
+ if (this._failedToCreateTempFile) {
+ WebInspector.log("Failed to open temp file with heap snapshot",
+ WebInspector.ConsoleMessage.MessageLevel.Error);
+ fileOutputStream.close();
+ } else if (this._tempFile) {
+ this._tempFile.read(didRead.bind(this));
+ } else {
+ this._onTempFileReady = onOpenForSave.bind(this, accepted);
+ }
}
this._fileName = this._fileName || "CPU-" + new Date().toISO8601Compact() + this._profileType.fileExtension();
fileOutputStream.open(this._fileName, onOpenForSave.bind(this));
@@ -893,39 +973,101 @@
*/
loadFromFile: function(file)
{
- this.sidebarElement.subtitle = WebInspector.UIString("Loading\u2026");
- this.sidebarElement.wait = true;
-
+ this.updateStatus(WebInspector.UIString("Loading\u2026"), true);
var fileReader = new WebInspector.ChunkedFileReader(file, 10000000, this);
fileReader.start(this);
},
+
/**
- * @param {!function()} callback
+ * @return {?ProfilerAgent.CPUProfile}
*/
- _createTempFile: function(callback)
+ protocolProfile: function()
{
- function didCreateFile(result)
- {
- this._tempFile = result;
- callback();
- }
- new WebInspector.TempFile("cpu-profiler", this.uid, didCreateFile.bind(this));
+ return this._protocolProfile;
},
/**
- * @param {!string} data
+ * @param {!ProfilerAgent.CPUProfile} cpuProfile
*/
- _saveToTempFile: function(data)
+ setProtocolProfile: function(cpuProfile)
{
- if (this._tempFile)
- this._tempFile.write(data);
+ this._protocolProfile = cpuProfile;
+ this._saveProfileDataToTempFile(cpuProfile);
+ if (this.canSaveToFile())
+ this.dispatchEventToListeners(WebInspector.ProfileHeader.Events.ProfileReceived);
+ },
+
+ /**
+ * @param {!ProfilerAgent.CPUProfile} data
+ */
+ _saveProfileDataToTempFile: function(data)
+ {
+ var serializedData = JSON.stringify(data);
+
+ /**
+ * @this {WebInspector.CPUProfileHeader}
+ */
+ function didCreateTempFile(tempFile)
+ {
+ this._writeToTempFile(tempFile, serializedData);
+ }
+ new WebInspector.TempFile("cpu-profiler", this.uid, didCreateTempFile.bind(this));
+ },
+
+ /**
+ * @param {?WebInspector.TempFile} tempFile
+ * @param {string} serializedData
+ */
+ _writeToTempFile: function(tempFile, serializedData)
+ {
+ this._tempFile = tempFile;
+ if (!tempFile) {
+ this._failedToCreateTempFile = true;
+ this._notifyTempFileReady();
+ return;
+ }
+ /**
+ * @param {boolean} success
+ * @this {WebInspector.CPUProfileHeader}
+ */
+ function didWriteToTempFile(success)
+ {
+ if (!success)
+ this._failedToCreateTempFile = true;
+ tempFile.finishWriting();
+ this._notifyTempFileReady();
+ }
+ tempFile.write(serializedData, didWriteToTempFile.bind(this));
+ },
+
+ _notifyTempFileReady: function()
+ {
+ if (this._onTempFileReady) {
+ this._onTempFileReady();
+ this._onTempFileReady = null;
+ }
},
__proto__: WebInspector.ProfileHeader.prototype
}
/**
+ * @return {!WebInspector.FlameChart.ColorGenerator}
+ */
+WebInspector.CPUProfileView.colorGenerator = function()
+{
+ if (!WebInspector.CPUProfileView._colorGenerator) {
+ var colorGenerator = new WebInspector.FlameChart.ColorGenerator();
+ colorGenerator.colorPairForID("(idle)::0", 50);
+ colorGenerator.colorPairForID("(program)::0", 50);
+ colorGenerator.colorPairForID("(garbage collector)::0", 50);
+ WebInspector.CPUProfileView._colorGenerator = colorGenerator;
+ }
+ return WebInspector.CPUProfileView._colorGenerator;
+}
+
+/**
* @constructor
* @implements {WebInspector.FlameChartDataProvider}
*/
@@ -933,23 +1075,30 @@
{
WebInspector.FlameChartDataProvider.call(this);
this._cpuProfileView = cpuProfileView;
+ this._colorGenerator = WebInspector.CPUProfileView.colorGenerator();
}
WebInspector.CPUFlameChartDataProvider.prototype = {
/**
- * @param {!WebInspector.FlameChart.ColorGenerator} colorGenerator
- * @return {!Object}
+ * @return {?WebInspector.FlameChart.TimelineData}
*/
- timelineData: function(colorGenerator)
+ timelineData: function()
{
- return this._timelineData || this._calculateTimelineData(colorGenerator);
+ return this._timelineData || this._calculateTimelineData();
},
/**
- * @param {!WebInspector.FlameChart.ColorGenerator} colorGenerator
- * @return {?Object}
+ * @return {!WebInspector.FlameChart.ColorGenerator}
*/
- _calculateTimelineData: function(colorGenerator)
+ colorGenerator: function()
+ {
+ return this._colorGenerator;
+ },
+
+ /**
+ * @return {?WebInspector.FlameChart.TimelineData}
+ */
+ _calculateTimelineData: function()
{
if (!this._cpuProfileView.profileHead)
return null;
@@ -1028,8 +1177,9 @@
continue;
}
+ var colorGenerator = this._colorGenerator;
while (node) {
- var colorPair = colorGenerator._colorPairForID(node.functionName + ":" + node.url + ":" + node.lineNumber);
+ var colorPair = colorGenerator.colorPairForID(node.functionName + ":" + node.url + ":" + node.lineNumber);
var indexesForColor = colorEntryIndexes[colorPair.index];
if (!indexesForColor)
indexesForColor = colorEntryIndexes[colorPair.index] = [];
@@ -1082,11 +1232,12 @@
entryDeoptFlags: entryDeoptFlags
};
- return this._timelineData;
+ return /** @type {!WebInspector.FlameChart.TimelineData} */ (this._timelineData);
},
/**
* @param {number} ms
+ * @return {string}
*/
_millisecondsToString: function(ms)
{
@@ -1099,6 +1250,7 @@
/**
* @param {number} entryIndex
+ * @return {?Array.<!{title: string, text: string}>}
*/
prepareHighlightedEntryInfo: function(entryIndex)
{
@@ -1147,8 +1299,6 @@
entryData: function(entryIndex)
{
return this._timelineData.entryNodes[entryIndex];
- },
-
- __proto__: WebInspector.FlameChartDataProvider
+ }
}
diff --git a/Source/devtools/front_end/CPUProfilerModel.js b/Source/devtools/front_end/CPUProfilerModel.js
new file mode 100644
index 0000000..e7cf719
--- /dev/null
+++ b/Source/devtools/front_end/CPUProfilerModel.js
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2014 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
+ * "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 GOOGLE INC.
+ * OR ITS 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.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.Object}
+ * @implements {ProfilerAgent.Dispatcher}
+ */
+WebInspector.CPUProfilerModel = function()
+{
+ /** @type {?WebInspector.CPUProfilerModel.Delegate} */
+ this._delegate = null;
+ this._isRecording = false;
+ InspectorBackend.registerProfilerDispatcher(this);
+ ProfilerAgent.enable();
+}
+
+WebInspector.CPUProfilerModel.EventTypes = {
+ ProfileStarted: "profile-started",
+ ProfileStopped: "profile-stopped"
+};
+
+WebInspector.CPUProfilerModel.prototype = {
+ /**
+ * @param {!WebInspector.CPUProfilerModel.Delegate} delegate
+ */
+ setDelegate: function(delegate)
+ {
+ this._delegate = delegate;
+ },
+
+ /**
+ * @param {string} id
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {!ProfilerAgent.CPUProfile} cpuProfile
+ * @param {string=} title
+ */
+ consoleProfileFinished: function(id, scriptLocation, cpuProfile, title)
+ {
+ // Make sure ProfilesPanel is initialized and CPUProfileType is created.
+ WebInspector.moduleManager.loadModule("profiles");
+ this._delegate.consoleProfileFinished(id, scriptLocation, cpuProfile, title);
+ },
+
+ /**
+ * @param {string} id
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {string=} title
+ */
+ consoleProfileStarted: function(id, scriptLocation, title)
+ {
+ // Make sure ProfilesPanel is initialized and CPUProfileType is created.
+ WebInspector.moduleManager.loadModule("profiles");
+ this._delegate.consoleProfileStarted(id, scriptLocation, title);
+ },
+
+ /**
+ * @param {boolean} isRecording
+ */
+ setRecording: function(isRecording)
+ {
+ this._isRecording = isRecording;
+ this.dispatchEventToListeners(isRecording ?
+ WebInspector.CPUProfilerModel.EventTypes.ProfileStarted :
+ WebInspector.CPUProfilerModel.EventTypes.ProfileStopped);
+ },
+
+ /**
+ * @return {boolean}
+ */
+ isRecordingProfile: function()
+ {
+ return this._isRecording;
+ },
+
+ __proto__: WebInspector.Object.prototype
+}
+
+/** @interface */
+WebInspector.CPUProfilerModel.Delegate = function() {};
+
+WebInspector.CPUProfilerModel.Delegate.prototype = {
+ /**
+ * @param {string} protocolId
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {string=} title
+ */
+ consoleProfileStarted: function(protocolId, scriptLocation, title) {},
+
+ /**
+ * @param {string} protocolId
+ * @param {!DebuggerAgent.Location} scriptLocation
+ * @param {!ProfilerAgent.CPUProfile} cpuProfile
+ * @param {string=} title
+ */
+ consoleProfileFinished: function(protocolId, scriptLocation, cpuProfile, title) {}
+}
+
+/**
+ * @type {!WebInspector.CPUProfilerModel}
+ */
+WebInspector.cpuProfilerModel;
diff --git a/Source/devtools/front_end/CSSFormatter.js b/Source/devtools/front_end/CSSFormatter.js
index c20c88a..b03d982 100644
--- a/Source/devtools/front_end/CSSFormatter.js
+++ b/Source/devtools/front_end/CSSFormatter.js
@@ -45,7 +45,7 @@
format: function()
{
this._lineEndings = this._lineEndings(this._content);
- var tokenize = WebInspector.CodeMirrorUtils.createTokenizer("text/css");
+ var tokenize = FormatterWorker.createTokenizer("text/css");
var lines = this._content.split("\n");
for (var i = 0; i < lines.length; ++i) {
@@ -73,14 +73,14 @@
/**
* @param {number} startLine
* @param {string} token
- * @param {string} type
+ * @param {?string} type
* @param {number} startColumn
*/
_tokenCallback: function(startLine, token, type, startColumn)
{
if (startLine !== this._lastLine)
this._state.eatWhitespace = true;
- if (/^css-property/.test(type) && !this._state.inPropertyValue)
+ if (/^property/.test(type) && !this._state.inPropertyValue)
this._state.seenProperty = true;
this._lastLine = startLine;
var isWhitespace = /^\s+$/.test(token);
@@ -122,7 +122,7 @@
this._builder.addToken(token, startPosition, startLine, startColumn);
- if (type === "css-comment" && !this._state.inPropertyValue && !this._state.seenProperty)
+ if (type === "comment" && !this._state.inPropertyValue && !this._state.seenProperty)
this._builder.addNewLine();
if (token === ";" && this._state.inPropertyValue) {
this._state.inPropertyValue = false;
diff --git a/Source/devtools/front_end/CSSMetadata.js b/Source/devtools/front_end/CSSMetadata.js
index 1d3376d..0c9ab1b 100644
--- a/Source/devtools/front_end/CSSMetadata.js
+++ b/Source/devtools/front_end/CSSMetadata.js
@@ -32,7 +32,7 @@
/**
* @constructor
- * @param {!Array.<!CSSAgent.CSSPropertyInfo|string>} properties
+ * @param {!Array.<!{name: string, longhands: !Array.<string>}|string>} properties
*/
WebInspector.CSSMetadata = function(properties)
{
@@ -45,7 +45,6 @@
this._values.push(property);
continue;
}
-
var propertyName = property.name;
this._values.push(propertyName);
@@ -214,6 +213,9 @@
"border-left-width": { values: [
"medium", "thick", "thin"
] },
+ "box-shadow": { values: [
+ "inset", "none"
+ ] },
"-webkit-writing-mode": { values: [
"lr", "rl", "tb", "lr-tb", "rl-tb", "tb-rl", "horizontal-tb", "vertical-rl", "vertical-lr", "horizontal-bt"
] },
@@ -429,7 +431,7 @@
"none", "hidden", "inset", "groove", "ridge", "outset", "dotted", "dashed", "solid", "double"
] },
"unicode-bidi": { values: [
- "normal", "bidi-override", "embed"
+ "normal", "bidi-override", "embed", "isolate", "isolate-override", "plaintext"
] },
"clip-rule": { values: [
"nonzero", "evenodd"
@@ -655,12 +657,11 @@
"border-left": { m: "background" },
"border-radius": { m: "background" },
"bottom": { m: "visuren" },
- "box-shadow": { m: "background" },
"color": { m: "color", a: "foreground" },
"counter-increment": { m: "generate" },
"counter-reset": { m: "generate" },
- "grid-definition-columns": { m: "grid" },
- "grid-definition-rows": { m: "grid" },
+ "grid-template-columns": { m: "grid" },
+ "grid-template-rows": { m: "grid" },
"height": { m: "box" },
"image-orientation": { m: "images" },
"left": { m: "visuren" },
@@ -718,14 +719,9 @@
return entry || null;
}
-WebInspector.CSSMetadata.requestCSSShorthandData = function()
+WebInspector.CSSMetadata.initializeWithSupportedProperties = function(properties)
{
- function propertyNamesCallback(error, properties)
- {
- if (!error)
- WebInspector.CSSMetadata.cssPropertiesMetainfo = new WebInspector.CSSMetadata(properties);
- }
- CSSAgent.getSupportedCSSProperties(propertyNamesCallback);
+ WebInspector.CSSMetadata.cssPropertiesMetainfo = new WebInspector.CSSMetadata(properties);
}
WebInspector.CSSMetadata.cssPropertiesMetainfoKeySet = function()
@@ -922,6 +918,9 @@
return foundIndex;
},
+ /**
+ * @return {!Object.<string, boolean>}
+ */
keySet: function()
{
if (!this._keySet)
@@ -929,16 +928,32 @@
return this._keySet;
},
+ /**
+ * @param {string} str
+ * @param {string} prefix
+ * @return {string}
+ */
next: function(str, prefix)
{
return this._closest(str, prefix, 1);
},
+ /**
+ * @param {string} str
+ * @param {string} prefix
+ * @return {string}
+ */
previous: function(str, prefix)
{
return this._closest(str, prefix, -1);
},
+ /**
+ * @param {string} str
+ * @param {string} prefix
+ * @param {number} shift
+ * @return {string}
+ */
_closest: function(str, prefix, shift)
{
if (!str)
@@ -977,3 +992,5 @@
return this._shorthands[longhand];
}
}
+
+WebInspector.CSSMetadata.initializeWithSupportedProperties([]);
diff --git a/Source/devtools/front_end/CSSNamedFlowCollectionsView.js b/Source/devtools/front_end/CSSNamedFlowCollectionsView.js
deleted file mode 100644
index 24da59c..0000000
--- a/Source/devtools/front_end/CSSNamedFlowCollectionsView.js
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright (C) 2012 Adobe Systems Incorporated. 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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE
- * COPYRIGHT HOLDER 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.SidebarView}
- */
-WebInspector.CSSNamedFlowCollectionsView = function()
-{
- WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Start);
- this.registerRequiredCSS("cssNamedFlows.css");
-
- this._namedFlows = {};
- this._contentNodes = {};
- this._regionNodes = {};
-
- this.element.classList.add("css-named-flow-collections-view");
- this.element.classList.add("fill");
-
- this._statusElement = document.createElement("span");
- this._statusElement.textContent = WebInspector.UIString("CSS Named Flows");
-
- var sidebarHeader = this.firstElement().createChild("div", "tabbed-pane-header selected sidebar-header");
- var tab = sidebarHeader.createChild("div", "tabbed-pane-header-tab");
- tab.createChild("span", "tabbed-pane-header-tab-title").textContent = WebInspector.UIString("CSS Named Flows");
-
- this._sidebarContentElement = this.firstElement().createChild("div", "sidebar-content outline-disclosure");
- this._flowListElement = this._sidebarContentElement.createChild("ol");
- this._flowTree = new TreeOutline(this._flowListElement);
-
- this._emptyElement = document.createElement("div");
- this._emptyElement.classList.add("info");
- this._emptyElement.textContent = WebInspector.UIString("No CSS Named Flows");
-
- this._tabbedPane = new WebInspector.TabbedPane();
- this._tabbedPane.closeableTabs = true;
- this._tabbedPane.show(this.secondElement());
-}
-
-WebInspector.CSSNamedFlowCollectionsView.prototype = {
- showInDrawer: function()
- {
- WebInspector.inspectorView.showCloseableViewInDrawer("css-flows", WebInspector.UIString("CSS Flows"), this);
- },
-
- reset: function()
- {
- if (!this._document)
- return;
-
- WebInspector.cssModel.getNamedFlowCollectionAsync(this._document.id, this._resetNamedFlows.bind(this));
- },
-
- /**
- * @param {!WebInspector.DOMDocument} document
- */
- _setDocument: function(document)
- {
- this._document = document;
- this.reset();
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _documentUpdated: function(event)
- {
- var document = /** @type {!WebInspector.DOMDocument} */ (event.data);
- this._setDocument(document);
- },
-
- /**
- * @param {boolean} hasContent
- */
- _setSidebarHasContent: function(hasContent)
- {
- if (hasContent) {
- if (!this._emptyElement.parentNode)
- return;
-
- this._sidebarContentElement.removeChild(this._emptyElement);
- this._sidebarContentElement.appendChild(this._flowListElement);
- } else {
- if (!this._flowListElement.parentNode)
- return;
-
- this._sidebarContentElement.removeChild(this._flowListElement);
- this._sidebarContentElement.appendChild(this._emptyElement);
- }
- },
-
- /**
- * @param {!WebInspector.NamedFlow} flow
- */
- _appendNamedFlow: function(flow)
- {
- var flowHash = this._hashNamedFlow(flow.documentNodeId, flow.name);
- var flowContainer = { flow: flow, flowHash: flowHash };
-
- for (var i = 0; i < flow.content.length; ++i)
- this._contentNodes[flow.content[i]] = flowHash;
- for (var i = 0; i < flow.regions.length; ++i)
- this._regionNodes[flow.regions[i].nodeId] = flowHash;
-
- var flowTreeItem = new WebInspector.FlowTreeElement(flowContainer);
- flowTreeItem.onselect = this._selectNamedFlowTab.bind(this, flowHash);
-
- flowContainer.flowTreeItem = flowTreeItem;
- this._namedFlows[flowHash] = flowContainer;
-
- if (!this._flowTree.children.length)
- this._setSidebarHasContent(true);
- this._flowTree.appendChild(flowTreeItem);
- },
-
- /**
- * @param {string} flowHash
- */
- _removeNamedFlow: function(flowHash)
- {
- var flowContainer = this._namedFlows[flowHash];
-
- if (this._tabbedPane._tabsById[flowHash])
- this._tabbedPane.closeTab(flowHash);
- this._flowTree.removeChild(flowContainer.flowTreeItem);
-
- var flow = flowContainer.flow;
- for (var i = 0; i < flow.content.length; ++i)
- delete this._contentNodes[flow.content[i]];
- for (var i = 0; i < flow.regions.length; ++i)
- delete this._regionNodes[flow.regions[i].nodeId];
-
- delete this._namedFlows[flowHash];
-
- if (!this._flowTree.children.length)
- this._setSidebarHasContent(false);
- },
-
- /**
- * @param {!WebInspector.NamedFlow} flow
- */
- _updateNamedFlow: function(flow)
- {
- var flowHash = this._hashNamedFlow(flow.documentNodeId, flow.name);
- var flowContainer = this._namedFlows[flowHash];
-
- if (!flowContainer)
- return;
-
- var oldFlow = flowContainer.flow;
- flowContainer.flow = flow;
-
- for (var i = 0; i < oldFlow.content.length; ++i)
- delete this._contentNodes[oldFlow.content[i]];
- for (var i = 0; i < oldFlow.regions.length; ++i)
- delete this._regionNodes[oldFlow.regions[i].nodeId];
-
- for (var i = 0; i < flow.content.length; ++i)
- this._contentNodes[flow.content[i]] = flowHash;
- for (var i = 0; i < flow.regions.length; ++i)
- this._regionNodes[flow.regions[i].nodeId] = flowHash;
-
- flowContainer.flowTreeItem.setOverset(flow.overset);
-
- if (flowContainer.flowView)
- flowContainer.flowView.flow = flow;
- },
-
- /**
- * @param {?WebInspector.NamedFlowCollection} namedFlowCollection
- */
- _resetNamedFlows: function(namedFlowCollection)
- {
- for (var flowHash in this._namedFlows)
- this._removeNamedFlow(flowHash);
-
- var namedFlows = namedFlowCollection ? namedFlowCollection.namedFlowMap : {};
- for (var flowName in namedFlows)
- this._appendNamedFlow(namedFlows[flowName]);
-
- if (!this._flowTree.children.length)
- this._setSidebarHasContent(false);
- else
- this._showNamedFlowForNode(WebInspector.panel("elements").treeOutline.selectedDOMNode());
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _namedFlowCreated: function(event)
- {
- // FIXME: We only have support for Named Flows in the main document.
- if (event.data.documentNodeId !== this._document.id)
- return;
-
- var flow = /** @type {!WebInspector.NamedFlow} */ (event.data);
- this._appendNamedFlow(flow);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _namedFlowRemoved: function(event)
- {
- // FIXME: We only have support for Named Flows in the main document.
- if (event.data.documentNodeId !== this._document.id)
- return;
-
- this._removeNamedFlow(this._hashNamedFlow(event.data.documentNodeId, event.data.flowName));
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _regionLayoutUpdated: function(event)
- {
- // FIXME: We only have support for Named Flows in the main document.
- if (event.data.documentNodeId !== this._document.id)
- return;
-
- var flow = /** @type {!WebInspector.NamedFlow} */ (event.data);
- this._updateNamedFlow(flow);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _regionOversetChanged: function(event)
- {
- // FIXME: We only have support for Named Flows in the main document.
- if (event.data.documentNodeId !== this._document.id)
- return;
-
- var flow = /** @type {!WebInspector.NamedFlow} */ (event.data);
- this._updateNamedFlow(flow);
- },
-
- /**
- * @param {!DOMAgent.NodeId} documentNodeId
- * @param {string} flowName
- */
- _hashNamedFlow: function(documentNodeId, flowName)
- {
- return documentNodeId + "|" + flowName;
- },
-
- /**
- * @param {string} flowHash
- */
- _showNamedFlow: function(flowHash)
- {
- this._selectNamedFlowInSidebar(flowHash);
- this._selectNamedFlowTab(flowHash);
- },
-
- /**
- * @param {string} flowHash
- */
- _selectNamedFlowInSidebar: function(flowHash)
- {
- this._namedFlows[flowHash].flowTreeItem.select(true);
- },
-
- /**
- * @param {string} flowHash
- * @return {boolean}
- */
- _selectNamedFlowTab: function(flowHash)
- {
- var flowContainer = this._namedFlows[flowHash];
-
- if (this._tabbedPane.selectedTabId === flowHash)
- return false;
-
- if (!this._tabbedPane.selectTab(flowHash)) {
- if (!flowContainer.flowView)
- flowContainer.flowView = new WebInspector.CSSNamedFlowView(flowContainer.flow);
-
- this._tabbedPane.appendTab(flowHash, flowContainer.flow.name, flowContainer.flowView);
- this._tabbedPane.selectTab(flowHash);
- }
- return false;
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _selectedNodeChanged: function(event)
- {
- var node = /** @type {!WebInspector.DOMNode} */ (event.data);
- this._showNamedFlowForNode(node);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _tabSelected: function(event)
- {
- this._selectNamedFlowInSidebar(event.data.tabId);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _tabClosed: function(event)
- {
- this._namedFlows[event.data.tabId].flowTreeItem.deselect();
- },
-
- /**
- * @param {?WebInspector.DOMNode} node
- */
- _showNamedFlowForNode: function(node)
- {
- if (!node)
- return;
-
- if (this._regionNodes[node.id]) {
- this._showNamedFlow(this._regionNodes[node.id]);
- return;
- }
-
- while (node) {
- if (this._contentNodes[node.id]) {
- this._showNamedFlow(this._contentNodes[node.id]);
- return;
- }
-
- node = node.parentNode;
- }
- },
-
- wasShown: function()
- {
- WebInspector.SidebarView.prototype.wasShown.call(this);
-
- WebInspector.domAgent.requestDocument(this._setDocument.bind(this));
-
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.DocumentUpdated, this._documentUpdated, this);
-
- WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.NamedFlowCreated, this._namedFlowCreated, this);
- WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.NamedFlowRemoved, this._namedFlowRemoved, this);
- WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.RegionLayoutUpdated, this._regionLayoutUpdated, this);
- WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.RegionOversetChanged, this._regionOversetChanged, this);
-
- WebInspector.panel("elements").treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedNodeChanged, this);
-
- this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this);
- this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabClosed, this._tabClosed, this);
- },
-
- willHide: function()
- {
- WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.DocumentUpdated, this._documentUpdated, this);
-
- WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.NamedFlowCreated, this._namedFlowCreated, this);
- WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.NamedFlowRemoved, this._namedFlowRemoved, this);
- WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.RegionLayoutUpdated, this._regionLayoutUpdated, this);
- WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.RegionOversetChanged, this._regionOversetChanged, this);
-
- WebInspector.panel("elements").treeOutline.removeEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedNodeChanged, this);
-
- this._tabbedPane.removeEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this);
- this._tabbedPane.removeEventListener(WebInspector.TabbedPane.EventTypes.TabClosed, this._tabClosed, this);
- },
-
- __proto__: WebInspector.SidebarView.prototype
-}
-
-/**
- * @constructor
- * @extends {TreeElement}
- */
-WebInspector.FlowTreeElement = function(flowContainer)
-{
- var container = document.createElement("div");
- container.createChild("div", "selection");
- container.createChild("span", "title").createChild("span").textContent = flowContainer.flow.name;
-
- TreeElement.call(this, container, flowContainer, false);
-
- this._overset = false;
- this.setOverset(flowContainer.flow.overset);
-}
-
-WebInspector.FlowTreeElement.prototype = {
- /**
- * @param {boolean} newOverset
- */
- setOverset: function(newOverset)
- {
- if (this._overset === newOverset)
- return;
-
- if (newOverset) {
- this.title.classList.add("named-flow-overflow");
- this.tooltip = WebInspector.UIString("Overflows.");
- } else {
- this.title.classList.remove("named-flow-overflow");
- this.tooltip = "";
- }
-
- this._overset = newOverset;
- },
-
- __proto__: TreeElement.prototype
-}
diff --git a/Source/devtools/front_end/CSSNamedFlowView.js b/Source/devtools/front_end/CSSNamedFlowView.js
deleted file mode 100644
index 0542b0e..0000000
--- a/Source/devtools/front_end/CSSNamedFlowView.js
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2012 Adobe Systems Incorporated. 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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE
- * COPYRIGHT HOLDER 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.View}
- * @param {!WebInspector.NamedFlow} flow
- */
-WebInspector.CSSNamedFlowView = function(flow)
-{
- WebInspector.View.call(this);
- this.element.classList.add("css-named-flow");
- this.element.classList.add("outline-disclosure");
-
- this._treeOutline = new TreeOutline(this.element.createChild("ol"), true);
-
- this._contentTreeItem = new TreeElement(WebInspector.UIString("content"), null, true);
- this._treeOutline.appendChild(this._contentTreeItem);
-
- this._regionsTreeItem = new TreeElement(WebInspector.UIString("region chain"), null, true);
- this._regionsTreeItem.expand();
- this._treeOutline.appendChild(this._regionsTreeItem);
-
- this._flow = flow;
-
- var content = flow.content;
- for (var i = 0; i < content.length; ++i)
- this._insertContentNode(content[i]);
-
- var regions = flow.regions;
- for (var i = 0; i < regions.length; ++i)
- this._insertRegion(regions[i]);
-}
-
-WebInspector.CSSNamedFlowView.OversetTypeMessageMap = {
- empty: "empty",
- fit: "fit",
- overset: "overset"
-}
-
-WebInspector.CSSNamedFlowView.prototype = {
- /**
- * @param {?WebInspector.DOMNode} rootDOMNode
- * @return {?WebInspector.ElementsTreeOutline}
- */
- _createFlowTreeOutline: function(rootDOMNode)
- {
- if (!rootDOMNode)
- return null;
-
- var treeOutline = new WebInspector.ElementsTreeOutline(false, false);
- treeOutline.element.classList.add("named-flow-element");
- treeOutline.setVisible(true);
- treeOutline.rootDOMNode = rootDOMNode;
- treeOutline.wireToDomAgent();
- WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.DocumentUpdated, treeOutline._elementsTreeUpdater._documentUpdated, treeOutline._elementsTreeUpdater);
-
- return treeOutline;
- },
-
- /**
- * @param {!DOMAgent.NodeId} contentNodeId
- * @param {number=} index
- */
- _insertContentNode: function(contentNodeId, index)
- {
- var treeOutline = this._createFlowTreeOutline(WebInspector.domAgent.nodeForId(contentNodeId));
- var treeItem = new TreeElement(treeOutline.element, treeOutline);
-
- if (index === undefined) {
- this._contentTreeItem.appendChild(treeItem);
- return;
- }
-
- this._contentTreeItem.insertChild(treeItem, index);
- },
-
- /**
- * @param {!CSSAgent.Region} region
- * @param {number=} index
- */
- _insertRegion: function(region, index)
- {
- var treeOutline = this._createFlowTreeOutline(WebInspector.domAgent.nodeForId(region.nodeId));
- treeOutline.element.classList.add("region-" + region.regionOverset);
-
- var treeItem = new TreeElement(treeOutline.element, treeOutline);
- var oversetText = WebInspector.UIString(WebInspector.CSSNamedFlowView.OversetTypeMessageMap[region.regionOverset]);
- treeItem.tooltip = WebInspector.UIString("Region is %s.", oversetText);
-
- if (index === undefined) {
- this._regionsTreeItem.appendChild(treeItem);
- return;
- }
-
- this._regionsTreeItem.insertChild(treeItem, index);
- },
-
- get flow()
- {
- return this._flow;
- },
-
- set flow(newFlow)
- {
- this._update(newFlow);
- },
-
- /**
- * @param {!TreeElement} regionTreeItem
- * @param {string} newRegionOverset
- * @param {string} oldRegionOverset
- */
- _updateRegionOverset: function(regionTreeItem, newRegionOverset, oldRegionOverset)
- {
- var element = regionTreeItem.representedObject.element;
- element.classList.remove("region-" + oldRegionOverset);
- element.classList.add("region-" + newRegionOverset);
-
- var oversetText = WebInspector.UIString(WebInspector.CSSNamedFlowView.OversetTypeMessageMap[newRegionOverset]);
- regionTreeItem.tooltip = WebInspector.UIString("Region is %s." , oversetText);
- },
-
- /**
- * @param {!Array.<!DOMAgent.NodeId>} oldContent
- * @param {!Array.<!DOMAgent.NodeId>} newContent
- */
- _mergeContentNodes: function(oldContent, newContent)
- {
- var nodeIdSet = {};
- for (var i = 0; i < newContent.length; ++i)
- nodeIdSet[newContent[i]] = true;
-
- var oldContentIndex = 0;
- var newContentIndex = 0;
- var contentTreeChildIndex = 0;
-
- while (oldContentIndex < oldContent.length || newContentIndex < newContent.length) {
- if (oldContentIndex === oldContent.length) {
- this._insertContentNode(newContent[newContentIndex]);
- ++newContentIndex;
- continue;
- }
-
- if (newContentIndex === newContent.length) {
- this._contentTreeItem.removeChildAtIndex(contentTreeChildIndex);
- ++oldContentIndex;
- continue;
- }
-
- if (oldContent[oldContentIndex] === newContent[newContentIndex]) {
- ++oldContentIndex;
- ++newContentIndex;
- ++contentTreeChildIndex;
- continue;
- }
-
- if (nodeIdSet[oldContent[oldContentIndex]]) {
- this._insertContentNode(newContent[newContentIndex], contentTreeChildIndex);
- ++newContentIndex;
- ++contentTreeChildIndex;
- continue;
- }
-
- this._contentTreeItem.removeChildAtIndex(contentTreeChildIndex);
- ++oldContentIndex;
- }
- },
-
- /**
- * @param {!Array.<!CSSAgent.Region>} oldRegions
- * @param {!Array.<!CSSAgent.Region>} newRegions
- */
- _mergeRegions: function(oldRegions, newRegions)
- {
- var nodeIdSet = {};
- for (var i = 0; i < newRegions.length; ++i)
- nodeIdSet[newRegions[i].nodeId] = true;
-
- var oldRegionsIndex = 0;
- var newRegionsIndex = 0;
- var regionsTreeChildIndex = 0;
-
- while (oldRegionsIndex < oldRegions.length || newRegionsIndex < newRegions.length) {
- if (oldRegionsIndex === oldRegions.length) {
- this._insertRegion(newRegions[newRegionsIndex]);
- ++newRegionsIndex;
- continue;
- }
-
- if (newRegionsIndex === newRegions.length) {
- this._regionsTreeItem.removeChildAtIndex(regionsTreeChildIndex);
- ++oldRegionsIndex;
- continue;
- }
-
- if (oldRegions[oldRegionsIndex].nodeId === newRegions[newRegionsIndex].nodeId) {
- if (oldRegions[oldRegionsIndex].regionOverset !== newRegions[newRegionsIndex].regionOverset)
- this._updateRegionOverset(this._regionsTreeItem.children[regionsTreeChildIndex], newRegions[newRegionsIndex].regionOverset, oldRegions[oldRegionsIndex].regionOverset);
- ++oldRegionsIndex;
- ++newRegionsIndex;
- ++regionsTreeChildIndex;
- continue;
- }
-
- if (nodeIdSet[oldRegions[oldRegionsIndex].nodeId]) {
- this._insertRegion(newRegions[newRegionsIndex], regionsTreeChildIndex);
- ++newRegionsIndex;
- ++regionsTreeChildIndex;
- continue;
- }
-
- this._regionsTreeItem.removeChildAtIndex(regionsTreeChildIndex);
- ++oldRegionsIndex;
- }
- },
-
- /**
- * @param {!WebInspector.NamedFlow} newFlow
- */
- _update: function(newFlow)
- {
- this._mergeContentNodes(this._flow.content, newFlow.content);
- this._mergeRegions(this._flow.regions, newFlow.regions);
-
- this._flow = newFlow;
- },
-
- __proto__: WebInspector.View.prototype
-}
diff --git a/Source/devtools/front_end/CSSSourceFrame.js b/Source/devtools/front_end/CSSSourceFrame.js
index 06d2d9a..3feba90 100644
--- a/Source/devtools/front_end/CSSSourceFrame.js
+++ b/Source/devtools/front_end/CSSSourceFrame.js
@@ -42,7 +42,7 @@
WebInspector.CSSSourceFrame.prototype = {
_registerShortcuts: function()
{
- var shortcutKeys = WebInspector.SourcesPanelDescriptor.ShortcutKeys;
+ var shortcutKeys = WebInspector.ShortcutsScreen.SourcesPanelShortcuts;
for (var i = 0; i < shortcutKeys.IncreaseCSSUnitByOne.length; ++i)
this.addShortcut(shortcutKeys.IncreaseCSSUnitByOne[i].key, this._handleUnitModification.bind(this, 1));
for (var i = 0; i < shortcutKeys.DecreaseCSSUnitByOne.length; ++i)
diff --git a/Source/devtools/front_end/CSSStyleModel.js b/Source/devtools/front_end/CSSStyleModel.js
index d2f2fd2..1c8526b 100644
--- a/Source/devtools/front_end/CSSStyleModel.js
+++ b/Source/devtools/front_end/CSSStyleModel.js
@@ -41,8 +41,6 @@
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedoRequested, this._undoRedoRequested, this);
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.UndoRedoCompleted, this._undoRedoCompleted, this);
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameCreatedOrNavigated, this._mainFrameCreatedOrNavigated, this);
- this._namedFlowCollections = {};
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.DocumentUpdated, this._resetNamedFlowCollections, this);
InspectorBackend.registerCSSDispatcher(new WebInspector.CSSDispatcher(this));
CSSAgent.enable(this._wasEnabled.bind(this));
this._resetStyleSheets();
@@ -68,10 +66,6 @@
StyleSheetChanged: "StyleSheetChanged",
StyleSheetRemoved: "StyleSheetRemoved",
MediaQueryResultChanged: "MediaQueryResultChanged",
- NamedFlowCreated: "NamedFlowCreated",
- NamedFlowRemoved: "NamedFlowRemoved",
- RegionLayoutUpdated: "RegionLayoutUpdated",
- RegionOversetChanged: "RegionOversetChanged"
}
WebInspector.CSSStyleModel.MediaTypes = ["all", "braille", "embossed", "handheld", "print", "projection", "screen", "speech", "tty", "tv"];
@@ -156,7 +150,7 @@
/**
* @param {number} nodeId
- * @param {function(?String, ?Array.<!CSSAgent.PlatformFontUsage>)} callback
+ * @param {function(?string, ?Array.<!CSSAgent.PlatformFontUsage>)} callback
*/
getPlatformFontsForNode: function(nodeId, callback)
{
@@ -171,6 +165,14 @@
},
/**
+ * @return {!Array.<!WebInspector.CSSStyleSheetHeader>}
+ */
+ allStyleSheets: function()
+ {
+ return Object.values(this._styleSheetIdToHeader);
+ },
+
+ /**
* @param {!DOMAgent.NodeId} nodeId
* @param {function(?WebInspector.CSSStyleDeclaration, ?WebInspector.CSSStyleDeclaration)} userCallback
*/
@@ -204,65 +206,6 @@
},
/**
- * @param {!DOMAgent.NodeId} documentNodeId
- * @param {function(?WebInspector.NamedFlowCollection)} userCallback
- */
- getNamedFlowCollectionAsync: function(documentNodeId, userCallback)
- {
- var namedFlowCollection = this._namedFlowCollections[documentNodeId];
- if (namedFlowCollection) {
- userCallback(namedFlowCollection);
- return;
- }
-
- /**
- * @param {function(?WebInspector.NamedFlowCollection)} userCallback
- * @param {?Protocol.Error} error
- * @param {?Array.<!CSSAgent.NamedFlow>} namedFlowPayload
- */
- function callback(userCallback, error, namedFlowPayload)
- {
- if (error || !namedFlowPayload)
- userCallback(null);
- else {
- var namedFlowCollection = new WebInspector.NamedFlowCollection(namedFlowPayload);
- this._namedFlowCollections[documentNodeId] = namedFlowCollection;
- userCallback(namedFlowCollection);
- }
- }
-
- CSSAgent.getNamedFlowCollection(documentNodeId, callback.bind(this, userCallback));
- },
-
- /**
- * @param {!DOMAgent.NodeId} documentNodeId
- * @param {string} flowName
- * @param {function(?WebInspector.NamedFlow)} userCallback
- */
- getFlowByNameAsync: function(documentNodeId, flowName, userCallback)
- {
- var namedFlowCollection = this._namedFlowCollections[documentNodeId];
- if (namedFlowCollection) {
- userCallback(namedFlowCollection.flowByName(flowName));
- return;
- }
-
- /**
- * @param {function(?WebInspector.NamedFlow)} userCallback
- * @param {?WebInspector.NamedFlowCollection} namedFlowCollection
- */
- function callback(userCallback, namedFlowCollection)
- {
- if (!namedFlowCollection)
- userCallback(null);
- else
- userCallback(namedFlowCollection.flowByName(flowName));
- }
-
- this.getNamedFlowCollectionAsync(documentNodeId, callback.bind(this, userCallback));
- },
-
- /**
* @param {!CSSAgent.CSSRuleId} ruleId
* @param {!DOMAgent.NodeId} nodeId
* @param {string} newSelector
@@ -277,7 +220,8 @@
* @param {function()} failureCallback
* @param {?Protocol.Error} error
* @param {string} newSelector
- * @param {?CSSAgent.CSSRule} rulePayload
+ * @param {!CSSAgent.CSSRule} rulePayload
+ * @this {WebInspector.CSSStyleModel}
*/
function callback(nodeId, successCallback, failureCallback, newSelector, error, rulePayload)
{
@@ -345,13 +289,11 @@
addRule: function(nodeId, selector, successCallback, failureCallback)
{
/**
- * @param {function(!WebInspector.CSSRule, boolean)} successCallback
- * @param {function()} failureCallback
- * @param {string} selector
* @param {?Protocol.Error} error
- * @param {?CSSAgent.CSSRule} rulePayload
+ * @param {!CSSAgent.CSSRule} rulePayload
+ * @this {WebInspector.CSSStyleModel}
*/
- function callback(successCallback, failureCallback, selector, error, rulePayload)
+ function callback(error, rulePayload)
{
this._pendingCommandsMajorState.pop();
if (error) {
@@ -364,7 +306,7 @@
}
this._pendingCommandsMajorState.push(true);
- CSSAgent.addRule(nodeId, selector, callback.bind(this, successCallback, failureCallback, selector));
+ CSSAgent.addRule(nodeId, selector, callback.bind(this));
},
mediaQueryResultChanged: function()
@@ -490,73 +432,22 @@
},
/**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- _namedFlowCreated: function(namedFlowPayload)
- {
- var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
- var namedFlowCollection = this._namedFlowCollections[namedFlow.documentNodeId];
-
- if (!namedFlowCollection)
- return;
-
- namedFlowCollection._appendNamedFlow(namedFlow);
- this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.NamedFlowCreated, namedFlow);
- },
-
- /**
- * @param {!DOMAgent.NodeId} documentNodeId
- * @param {string} flowName
- */
- _namedFlowRemoved: function(documentNodeId, flowName)
- {
- var namedFlowCollection = this._namedFlowCollections[documentNodeId];
-
- if (!namedFlowCollection)
- return;
-
- namedFlowCollection._removeNamedFlow(flowName);
- this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.NamedFlowRemoved, { documentNodeId: documentNodeId, flowName: flowName });
- },
-
- /**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- _regionLayoutUpdated: function(namedFlowPayload)
- {
- var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
- var namedFlowCollection = this._namedFlowCollections[namedFlow.documentNodeId];
-
- if (!namedFlowCollection)
- return;
-
- namedFlowCollection._appendNamedFlow(namedFlow);
- this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.RegionLayoutUpdated, namedFlow);
- },
-
- /**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- _regionOversetChanged: function(namedFlowPayload)
- {
- var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
- var namedFlowCollection = this._namedFlowCollections[namedFlow.documentNodeId];
-
- if (!namedFlowCollection)
- return;
-
- namedFlowCollection._appendNamedFlow(namedFlow);
- this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.RegionOversetChanged, namedFlow);
- },
-
- /**
* @param {!CSSAgent.StyleSheetId} styleSheetId
* @param {string} newText
* @param {boolean} majorChange
- * @param {function(?string)} userCallback
+ * @param {function(?Protocol.Error)} userCallback
*/
setStyleSheetText: function(styleSheetId, newText, majorChange, userCallback)
{
+ var header = this._styleSheetIdToHeader[styleSheetId];
+ console.assert(header);
+ this._pendingCommandsMajorState.push(majorChange);
+ header.setContent(newText, callback.bind(this));
+
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.CSSStyleModel}
+ */
function callback(error)
{
this._pendingCommandsMajorState.pop();
@@ -566,8 +457,6 @@
if (!error && userCallback)
userCallback(error);
}
- this._pendingCommandsMajorState.push(majorChange);
- CSSAgent.setStyleSheetText(styleSheetId, newText, callback.bind(this));
},
_undoRedoRequested: function()
@@ -593,11 +482,6 @@
this._styleSheetIdToHeader = {};
},
- _resetNamedFlowCollections: function()
- {
- this._namedFlowCollections = {};
- },
-
updateLocations: function()
{
var headers = Object.values(this._styleSheetIdToHeader);
@@ -904,6 +788,7 @@
/**
* @param {number=} index
+ * @return {!WebInspector.CSSProperty}
*/
newBlankProperty: function(index)
{
@@ -952,41 +837,6 @@
{
this.insertPropertyAt(this.allProperties.length, name, value, userCallback);
},
-
- /**
- * @param {string} text
- * @param {function(?WebInspector.CSSStyleDeclaration)=} userCallback
- */
- setText: function(text, userCallback)
- {
- /**
- * @param {?string} error
- * @param {!CSSAgent.CSSStyle} payload
- */
- function callback(error, payload)
- {
- WebInspector.cssModel._pendingCommandsMajorState.pop();
- if (!userCallback)
- return;
-
- if (error) {
- console.error(error);
- userCallback(null);
- } else
- userCallback(WebInspector.CSSStyleDeclaration.parsePayload(payload));
- }
-
- if (!this.id)
- throw "No style id";
-
- if (typeof this.cssText === "undefined") {
- userCallback(null);
- return;
- }
-
- WebInspector.cssModel._pendingCommandsMajorState.push(true);
- CSSAgent.setStyleText(this.id, text, callback);
- }
}
/**
@@ -1180,8 +1030,6 @@
},
/**
- * Replaces "propertyName: propertyValue [!important];" in the stylesheet by an arbitrary propertyText.
- *
* @param {string} propertyText
* @param {boolean} majorChange
* @param {boolean} overwrite
@@ -1201,6 +1049,7 @@
/**
* @param {?string} error
* @param {!CSSAgent.CSSStyle} stylePayload
+ * @this {WebInspector.CSSProperty}
*/
function callback(error, stylePayload)
{
@@ -1208,7 +1057,6 @@
if (!error) {
if (majorChange)
WebInspector.domAgent.markUndoableState();
- this.text = propertyText;
var style = WebInspector.CSSStyleDeclaration.parsePayload(stylePayload);
var newProperty = style.allProperties[this.index];
@@ -1216,7 +1064,6 @@
newProperty.setDisabled(false, enabledCallback);
return;
}
-
if (userCallback)
userCallback(style);
} else {
@@ -1256,33 +1103,15 @@
{
if (!this.ownerStyle && userCallback)
userCallback(null);
- if (disabled === this.disabled && userCallback)
- userCallback(this.ownerStyle);
-
- /**
- * @param {?string} error
- * @param {!CSSAgent.CSSStyle} stylePayload
- */
- function callback(error, stylePayload)
- {
- WebInspector.cssModel._pendingCommandsMajorState.pop();
- if (error) {
- if (userCallback)
- userCallback(null);
- return;
- }
- WebInspector.domAgent.markUndoableState();
- if (userCallback) {
- var style = WebInspector.CSSStyleDeclaration.parsePayload(stylePayload);
- userCallback(style);
- }
+ if (disabled === this.disabled) {
+ if (userCallback)
+ userCallback(this.ownerStyle);
+ return;
}
-
- if (!this.ownerStyle.id)
- throw "No owner style id";
-
- WebInspector.cssModel._pendingCommandsMajorState.push(false);
- CSSAgent.toggleProperty(this.ownerStyle.id, this.index, disabled, callback.bind(this));
+ if (disabled)
+ this.setText("/* " + this.text + " */", true, true, userCallback);
+ else
+ this.setText(this.text.substring(2, this.text.length - 2).trim(), true, true, userCallback);
},
/**
@@ -1508,6 +1337,7 @@
/**
* @override
+ * @return {string}
*/
contentURL: function()
{
@@ -1516,6 +1346,7 @@
/**
* @override
+ * @return {!WebInspector.ResourceType}
*/
contentType: function()
{
@@ -1523,12 +1354,26 @@
},
/**
+ * @param {string} text
+ * @return {string}
+ */
+ _trimSourceURL: function(text)
+ {
+ var sourceURLRegex = /\n[\040\t]*\/\*[#@][\040\t]sourceURL=[\040\t]*([^\s]*)[\040\t]*\*\/[\040\t]*$/mg;
+ return text.replace(sourceURLRegex, "");
+ },
+
+ /**
* @override
+ * @param {function(?string)} callback
*/
requestContent: function(callback)
{
CSSAgent.getStyleSheetText(this.id, textCallback.bind(this));
+ /**
+ * @this {WebInspector.CSSStyleSheetHeader}
+ */
function textCallback(error, text)
{
if (error) {
@@ -1536,6 +1381,7 @@
text = "";
// Fall through.
}
+ text = this._trimSourceURL(text);
callback(text);
}
},
@@ -1552,26 +1398,37 @@
// searchInContent should call back later.
this.requestContent(performSearch);
- }
+ },
+
+ /**
+ * @param {string} newText
+ * @param {function(?Protocol.Error)} callback
+ */
+ setContent: function(newText, callback)
+ {
+ newText = this._trimSourceURL(newText);
+ if (this.hasSourceURL)
+ newText += "\n/*# sourceURL=" + this.sourceURL + " */";
+ CSSAgent.setStyleSheetText(this.id, newText, callback);
+ },
}
/**
* @constructor
- * @param {!CSSAgent.CSSStyleSheetBody} payload
+ * @param {!CSSAgent.StyleSheetId} styleSheetId
+ * @param {!Array.<!CSSAgent.CSSRule>} payload
*/
-WebInspector.CSSStyleSheet = function(payload)
+WebInspector.CSSStyleSheet = function(styleSheetId, payload)
{
- this.id = payload.styleSheetId;
+ this.id = styleSheetId;
this.rules = [];
this.styles = {};
- for (var i = 0; i < payload.rules.length; ++i) {
- var rule = WebInspector.CSSRule.parsePayload(payload.rules[i]);
+ for (var i = 0; i < payload.length; ++i) {
+ var rule = WebInspector.CSSRule.parsePayload(payload[i]);
this.rules.push(rule);
if (rule.style)
this.styles[rule.style.id] = rule.style;
}
- if ("text" in payload)
- this._text = payload.text;
}
/**
@@ -1589,43 +1446,9 @@
if (error)
userCallback(null);
else
- userCallback(new WebInspector.CSSStyleSheet(styleSheetPayload));
+ userCallback(new WebInspector.CSSStyleSheet(styleSheetId, styleSheetPayload.rules));
}
- CSSAgent.getStyleSheet(styleSheetId, callback.bind(this));
-}
-
-WebInspector.CSSStyleSheet.prototype = {
- /**
- * @return {string|undefined}
- */
- getText: function()
- {
- return this._text;
- },
-
- /**
- * @param {string} newText
- * @param {boolean} majorChange
- * @param {function(?string)=} userCallback
- */
- setText: function(newText, majorChange, userCallback)
- {
- /**
- * @param {?string} error
- */
- function callback(error)
- {
- if (!error)
- WebInspector.domAgent.markUndoableState();
-
- WebInspector.cssModel._pendingCommandsMajorState.pop();
- if (userCallback)
- userCallback(error);
- }
-
- WebInspector.cssModel._pendingCommandsMajorState.push(majorChange);
- CSSAgent.setStyleSheetText(this.id, newText, callback.bind(this));
- }
+ CSSAgent.getStyleSheet(styleSheetId, callback);
}
/**
@@ -1667,107 +1490,6 @@
{
this._cssModel._styleSheetRemoved(id);
},
-
- /**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- namedFlowCreated: function(namedFlowPayload)
- {
- this._cssModel._namedFlowCreated(namedFlowPayload);
- },
-
- /**
- * @param {!DOMAgent.NodeId} documentNodeId
- * @param {string} flowName
- */
- namedFlowRemoved: function(documentNodeId, flowName)
- {
- this._cssModel._namedFlowRemoved(documentNodeId, flowName);
- },
-
- /**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- regionLayoutUpdated: function(namedFlowPayload)
- {
- this._cssModel._regionLayoutUpdated(namedFlowPayload);
- },
-
- /**
- * @param {!CSSAgent.NamedFlow} namedFlowPayload
- */
- regionOversetChanged: function(namedFlowPayload)
- {
- this._cssModel._regionOversetChanged(namedFlowPayload);
- }
-}
-
-/**
- * @constructor
- * @param {!CSSAgent.NamedFlow} payload
- */
-WebInspector.NamedFlow = function(payload)
-{
- this.documentNodeId = payload.documentNodeId;
- this.name = payload.name;
- this.overset = payload.overset;
- this.content = payload.content;
- this.regions = payload.regions;
-}
-
-/**
- * @param {!CSSAgent.NamedFlow} payload
- * @return {!WebInspector.NamedFlow}
- */
-WebInspector.NamedFlow.parsePayload = function(payload)
-{
- return new WebInspector.NamedFlow(payload);
-}
-
-/**
- * @constructor
- * @param {!Array.<!CSSAgent.NamedFlow>} payload
- */
-WebInspector.NamedFlowCollection = function(payload)
-{
- /** @type {!Object.<string, !WebInspector.NamedFlow>} */
- this.namedFlowMap = {};
-
- for (var i = 0; i < payload.length; ++i) {
- var namedFlow = WebInspector.NamedFlow.parsePayload(payload[i]);
- this.namedFlowMap[namedFlow.name] = namedFlow;
- }
-}
-
-WebInspector.NamedFlowCollection.prototype = {
- /**
- * @param {!WebInspector.NamedFlow} namedFlow
- */
- _appendNamedFlow: function(namedFlow)
- {
- this.namedFlowMap[namedFlow.name] = namedFlow;
- },
-
- /**
- * @param {string} flowName
- */
- _removeNamedFlow: function(flowName)
- {
- delete this.namedFlowMap[flowName];
- },
-
- /**
- * @param {string} flowName
- * @return {?WebInspector.NamedFlow}
- */
- flowByName: function(flowName)
- {
- var namedFlow = this.namedFlowMap[flowName];
-
- if (!namedFlow)
- return null;
- return namedFlow;
- }
}
/**
@@ -1811,6 +1533,7 @@
* @param {!DOMAgent.NodeId} nodeId
* @param {?Protocol.Error} error
* @param {!Array.<!CSSAgent.CSSComputedStyleProperty>} computedPayload
+ * @this {WebInspector.CSSStyleModel.ComputedStyleLoader}
*/
function resultCallback(nodeId, error, computedPayload)
{
@@ -1829,6 +1552,6 @@
}
/**
- * @type {?WebInspector.CSSStyleModel}
+ * @type {!WebInspector.CSSStyleModel}
*/
-WebInspector.cssModel = null;
+WebInspector.cssModel;
diff --git a/Source/devtools/front_end/CallStackSidebarPane.js b/Source/devtools/front_end/CallStackSidebarPane.js
index 15a0121..59ebe18 100644
--- a/Source/devtools/front_end/CallStackSidebarPane.js
+++ b/Source/devtools/front_end/CallStackSidebarPane.js
@@ -33,11 +33,12 @@
this.bodyElement.addEventListener("keydown", this._keyDown.bind(this), true);
this.bodyElement.tabIndex = 0;
- var asyncCheckbox = this.titleElement.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Async"), WebInspector.settings.enableAsyncStackTraces, true, undefined, WebInspector.UIString("Capture async stack traces")));
- asyncCheckbox.classList.add("scripts-callstack-async");
- asyncCheckbox.addEventListener("click", consumeEvent, false);
-
- WebInspector.settings.enableAsyncStackTraces.addChangeListener(this._asyncStackTracesStateChanged, this);
+ if (WebInspector.experimentsSettings.asyncStackTraces.isEnabled()) {
+ var asyncCheckbox = this.titleElement.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Async"), WebInspector.settings.enableAsyncStackTraces, true, undefined, WebInspector.UIString("Capture async stack traces")));
+ asyncCheckbox.classList.add("scripts-callstack-async");
+ asyncCheckbox.addEventListener("click", consumeEvent, false);
+ WebInspector.settings.enableAsyncStackTraces.addChangeListener(this._asyncStackTracesStateChanged, this);
+ }
}
WebInspector.CallStackSidebarPane.Events = {
@@ -66,8 +67,13 @@
this._appendSidebarPlacards(callFrames);
while (asyncStackTrace) {
- var title = "[" + (asyncStackTrace.description || WebInspector.UIString("Async Call")) + "]";
+ var title = asyncStackTrace.description;
+ if (title)
+ title += " " + WebInspector.UIString("(async)");
+ else
+ title = WebInspector.UIString("Async Call");
var asyncPlacard = new WebInspector.Placard(title, "");
+ asyncPlacard.element.classList.add("placard-label");
this.bodyElement.appendChild(asyncPlacard.element);
this._appendSidebarPlacards(asyncStackTrace.callFrames, asyncPlacard);
asyncStackTrace = asyncStackTrace.asyncStackTrace;
@@ -100,7 +106,7 @@
{
var contextMenu = new WebInspector.ContextMenu(event);
- if (!placard._callFrame.isAsync() && WebInspector.debuggerModel.canSetScriptSource())
+ if (!placard._callFrame.isAsync())
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Restart frame" : "Restart Frame"), this._restartFrame.bind(this, placard));
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy stack trace" : "Copy Stack Trace"), this._copyStackTrace.bind(this));
@@ -161,9 +167,8 @@
{
var index = this._selectedCallFrameIndex();
if (index === -1)
- return true;
- this._selectPlacardByIndex(index + 1);
- return true;
+ return false;
+ return this._selectPlacardByIndex(index + 1);
},
/**
@@ -173,19 +178,20 @@
{
var index = this._selectedCallFrameIndex();
if (index === -1)
- return true;
- this._selectPlacardByIndex(index - 1);
- return true;
+ return false;
+ return this._selectPlacardByIndex(index - 1);
},
/**
* @param {number} index
+ * @return {boolean}
*/
_selectPlacardByIndex: function(index)
{
if (index < 0 || index >= this.placards.length)
- return;
- this._placardSelected(this.placards[index])
+ return false;
+ this._placardSelected(this.placards[index]);
+ return true;
},
/**
@@ -209,6 +215,7 @@
*/
_placardSelected: function(placard)
{
+ placard.element.scrollIntoViewIfNeeded();
this.dispatchEventToListeners(WebInspector.CallStackSidebarPane.Events.CallFrameSelected, placard._callFrame);
},
@@ -228,8 +235,8 @@
*/
registerShortcuts: function(registerShortcutDelegate)
{
- registerShortcutDelegate(WebInspector.SourcesPanelDescriptor.ShortcutKeys.NextCallFrame, this._selectNextCallFrameOnStack.bind(this));
- registerShortcutDelegate(WebInspector.SourcesPanelDescriptor.ShortcutKeys.PrevCallFrame, this._selectPreviousCallFrameOnStack.bind(this));
+ registerShortcutDelegate(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.NextCallFrame, this._selectNextCallFrameOnStack.bind(this));
+ registerShortcutDelegate(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame, this._selectPreviousCallFrameOnStack.bind(this));
},
/**
@@ -251,14 +258,8 @@
{
if (event.altKey || event.shiftKey || event.metaKey || event.ctrlKey)
return;
-
- if (event.keyIdentifier === "Up") {
- this._selectPreviousCallFrameOnStack();
- event.consume();
- } else if (event.keyIdentifier === "Down") {
- this._selectNextCallFrameOnStack();
- event.consume();
- }
+ if (event.keyIdentifier === "Up" && this._selectPreviousCallFrameOnStack() || event.keyIdentifier === "Down" && this._selectNextCallFrameOnStack())
+ event.consume(true);
},
__proto__: WebInspector.SidebarPane.prototype
diff --git a/Source/devtools/front_end/CanvasProfileView.js b/Source/devtools/front_end/CanvasProfileView.js
index e0c17ef..15d9a72 100644
--- a/Source/devtools/front_end/CanvasProfileView.js
+++ b/Source/devtools/front_end/CanvasProfileView.js
@@ -44,20 +44,20 @@
this._linkifier = new WebInspector.Linkifier();
const defaultReplayLogWidthPercent = 0.34;
- this._replayInfoSplitView = new WebInspector.SplitView(true, "canvasProfileViewReplaySplitLocation", defaultReplayLogWidthPercent);
+ this._replayInfoSplitView = new WebInspector.SplitView(true, true, "canvasProfileViewReplaySplitLocation", defaultReplayLogWidthPercent);
this._replayInfoSplitView.setMainElementConstraints(defaultReplayLogWidthPercent, defaultReplayLogWidthPercent);
this._replayInfoSplitView.show(this.element);
- this._imageSplitView = new WebInspector.SplitView(false, "canvasProfileViewSplitLocation", 300);
- this._imageSplitView.show(this._replayInfoSplitView.firstElement());
+ this._imageSplitView = new WebInspector.SplitView(false, true, "canvasProfileViewSplitLocation", 300);
+ this._imageSplitView.show(this._replayInfoSplitView.mainElement());
- var replayImageContainer = this._imageSplitView.firstElement().createChild("div");
+ var replayImageContainer = this._imageSplitView.mainElement().createChild("div");
replayImageContainer.id = "canvas-replay-image-container";
this._replayImageElement = replayImageContainer.createChild("img", "canvas-replay-image");
this._debugInfoElement = replayImageContainer.createChild("div", "canvas-debug-info hidden");
this._spinnerIcon = replayImageContainer.createChild("img", "canvas-spinner-icon hidden");
- var replayLogContainer = this._imageSplitView.secondElement();
+ var replayLogContainer = this._imageSplitView.sidebarElement();
var controlsContainer = replayLogContainer.createChild("div", "status-bar");
var logGridContainer = replayLogContainer.createChild("div", "canvas-replay-log");
@@ -75,7 +75,7 @@
this._installReplayInfoSidebarWidgets(controlsContainer);
this._replayStateView = new WebInspector.CanvasReplayStateView(this._traceLogPlayer);
- this._replayStateView.show(this._replayInfoSplitView.secondElement());
+ this._replayStateView.show(this._replayInfoSplitView.sidebarElement());
/** @type {!Object.<string, boolean>} */
this._replayContexts = {};
@@ -143,6 +143,9 @@
controlsContainer.appendChild(this._toggleReplayStateSidebarButton.element);
this._enableReplayInfoSidebar(false);
+ /**
+ * @this {WebInspector.CanvasProfileView}
+ */
function clickHandler()
{
this._enableReplayInfoSidebar(this._toggleReplayStateSidebarButton.state === "left");
@@ -161,7 +164,7 @@
} else {
this._toggleReplayStateSidebarButton.state = "left";
this._toggleReplayStateSidebarButton.title = WebInspector.UIString("Show sidebar.");
- this._replayInfoSplitView.showOnlyFirst();
+ this._replayInfoSplitView.hideSidebar();
}
this._replayInfoResizeWidgetElement.enableStyleClass("hidden", !show);
},
@@ -205,6 +208,7 @@
/**
* @param {?CanvasAgent.ResourceState} resourceState
+ * @this {WebInspector.CanvasProfileView}
*/
function didReceiveResourceState(resourceState)
{
@@ -305,13 +309,14 @@
/**
* @param {?CanvasAgent.ResourceState} resourceState
* @param {number} replayTime
+ * @this {WebInspector.CanvasProfileView}
*/
function didReplayTraceLog(resourceState, replayTime)
{
delete this._pendingReplayTraceLogEvent;
this._enableWaitIcon(false);
- this._debugInfoElement.textContent = "Replay time: " + Number.secondsToString(replayTime / 1000, true);
+ this._debugInfoElement.textContent = WebInspector.UIString("Replay time: %s", Number.secondsToString(replayTime / 1000, true));
this._onReplayContextChanged();
if (index !== this._selectedCallIndex())
@@ -328,6 +333,7 @@
{
/**
* @param {?CanvasAgent.TraceLog} traceLog
+ * @this {WebInspector.CanvasProfileView}
*/
function didReceiveTraceLog(traceLog)
{
@@ -395,7 +401,7 @@
var index = rootNode.children.length;
var data = {};
data[0] = "";
- data[1] = "Frame #" + (index + 1);
+ data[1] = WebInspector.UIString("Frame #%d", index + 1);
data[2] = "";
frameNode = new WebInspector.DataGridNode(data);
frameNode.selectable = true;
@@ -424,7 +430,7 @@
var index = self._drawCallGroupsCount || 0;
var data = {};
data[0] = "";
- data[1] = "Draw call group #" + (index + 1);
+ data[1] = WebInspector.UIString("Draw call group #%d", index + 1);
data[2] = "";
var node = new WebInspector.DataGridNode(data);
node.selectable = true;
@@ -537,6 +543,7 @@
* @param {?Protocol.Error} error
* @param {!RuntimeAgent.RemoteObject=} result
* @param {!CanvasAgent.ResourceState=} resourceState
+ * @this {WebInspector.CanvasProfileView}
*/
function showObjectPopover(error, result, resourceState)
{
@@ -619,7 +626,6 @@
WebInspector.CanvasProfileType = function()
{
WebInspector.ProfileType.call(this, WebInspector.CanvasProfileType.TypeId, WebInspector.UIString("Capture Canvas Frame"));
- this._nextProfileUid = 1;
this._recording = false;
this._lastProfileHeader = null;
@@ -637,9 +643,9 @@
this._frameSelector = new WebInspector.StatusBarComboBox(this._dispatchViewUpdatedEvent.bind(this));
this._frameSelector.element.title = WebInspector.UIString("Frame containing the canvases to capture.");
this._frameSelector.element.classList.add("hidden");
- WebInspector.runtimeModel.contextLists().forEach(this._addFrame, this);
- WebInspector.runtimeModel.addEventListener(WebInspector.RuntimeModel.Events.FrameExecutionContextListAdded, this._frameAdded, this);
- WebInspector.runtimeModel.addEventListener(WebInspector.RuntimeModel.Events.FrameExecutionContextListRemoved, this._frameRemoved, this);
+ WebInspector.resourceTreeModel.frames().forEach(this._addFrame, this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, this._frameAdded, this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, this._frameRemoved, this);
this._dispatcher = new WebInspector.CanvasDispatcher(this);
this._canvasAgentEnabled = false;
@@ -721,8 +727,7 @@
{
if (error || this._lastProfileHeader && this._lastProfileHeader.traceLogId() === traceLogId)
return;
- var profileHeader = new WebInspector.CanvasProfileHeader(this, WebInspector.UIString("Trace Log %d", this._nextProfileUid), this._nextProfileUid, traceLogId, frameId);
- ++this._nextProfileUid;
+ var profileHeader = new WebInspector.CanvasProfileHeader(this, traceLogId, frameId);
this._lastProfileHeader = profileHeader;
this.addProfile(profileHeader);
profileHeader._updateCapturingStatus();
@@ -749,15 +754,6 @@
/**
* @override
- */
- _reset: function()
- {
- WebInspector.ProfileType.prototype._reset.call(this);
- this._nextProfileUid = 1;
- },
-
- /**
- * @override
* @param {!WebInspector.ProfileHeader} profile
*/
removeProfile: function(profile)
@@ -811,8 +807,10 @@
{
if (this._canvasAgentEnabled === enable)
return;
+
/**
* @param {?Protocol.Error} error
+ * @this {WebInspector.CanvasProfileType}
*/
function callback(error)
{
@@ -841,19 +839,19 @@
*/
_frameAdded: function(event)
{
- var contextList = /** @type {!WebInspector.FrameExecutionContextList} */ (event.data);
- this._addFrame(contextList);
+ var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
+ this._addFrame(frame);
},
/**
- * @param {!WebInspector.FrameExecutionContextList} contextList
+ * @param {!WebInspector.ResourceTreeFrame} frame
*/
- _addFrame: function(contextList)
+ _addFrame: function(frame)
{
- var frameId = contextList.frameId;
+ var frameId = frame.id;
var option = document.createElement("option");
- option.text = contextList.displayName;
- option.title = contextList.url;
+ option.text = frame.displayName();
+ option.title = frame.url;
option.value = frameId;
this._frameOptions[frameId] = option;
@@ -869,8 +867,8 @@
*/
_frameRemoved: function(event)
{
- var contextList = /** @type {!WebInspector.FrameExecutionContextList} */ (event.data);
- var frameId = contextList.frameId;
+ var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
+ var frameId = frame.id;
var option = this._frameOptions[frameId];
if (option && this._framesWithCanvases[frameId]) {
this._frameSelector.removeOption(option);
@@ -987,14 +985,12 @@
* @constructor
* @extends {WebInspector.ProfileHeader}
* @param {!WebInspector.CanvasProfileType} type
- * @param {string} title
- * @param {number=} uid
* @param {!CanvasAgent.TraceLogId=} traceLogId
* @param {!PageAgent.FrameId=} frameId
*/
-WebInspector.CanvasProfileHeader = function(type, title, uid, traceLogId, frameId)
+WebInspector.CanvasProfileHeader = function(type, traceLogId, frameId)
{
- WebInspector.ProfileHeader.call(this, type, title, uid);
+ WebInspector.ProfileHeader.call(this, type, WebInspector.UIString("Trace Log %d", traceLogId));
/** @type {!CanvasAgent.TraceLogId} */
this._traceLogId = traceLogId || "";
this._frameId = frameId;
@@ -1039,9 +1035,9 @@
/**
* @override
- * @param {!WebInspector.ProfilesPanel} profilesPanel
+ * @return {!WebInspector.CanvasProfileView}
*/
- createView: function(profilesPanel)
+ createView: function()
{
return new WebInspector.CanvasProfileView(this);
},
@@ -1062,7 +1058,7 @@
*/
_updateCapturingStatus: function(traceLog)
{
- if (!this.sidebarElement || !this._traceLogId)
+ if (!this._traceLogId)
return;
if (traceLog) {
@@ -1070,8 +1066,8 @@
this._traceLogSize = traceLog.totalAvailableCalls;
}
- this.sidebarElement.subtitle = this._alive ? WebInspector.UIString("Capturing\u2026 %d calls", this._traceLogSize) : WebInspector.UIString("Captured %d calls", this._traceLogSize);
- this.sidebarElement.wait = this._alive;
+ var subtitle = this._alive ? WebInspector.UIString("Capturing\u2026 %d calls", this._traceLogSize) : WebInspector.UIString("Captured %d calls", this._traceLogSize);
+ this.updateStatus(subtitle, this._alive);
if (this._alive) {
clearTimeout(this._requestStatusTimer);
@@ -1083,6 +1079,7 @@
{
/**
* @param {?CanvasAgent.TraceLog} traceLog
+ * @this {WebInspector.CanvasProfileHeader}
*/
function didReceiveTraceLog(traceLog)
{
@@ -1183,6 +1180,7 @@
/**
* @param {?Protocol.Error} error
* @param {!CanvasAgent.TraceLog} traceLog
+ * @this {WebInspector.CanvasTraceLogPlayerProxy}
*/
function callback(error, traceLog)
{
@@ -1214,13 +1212,16 @@
userCallback(null); // Has not been replayed yet.
return;
}
- if (this._currentResourceStates[resourceId]) {
- userCallback(this._currentResourceStates[resourceId]);
+ var effectiveResourceId = /** @type {!CanvasAgent.ResourceId} */ (resourceId);
+ if (this._currentResourceStates[effectiveResourceId]) {
+ userCallback(this._currentResourceStates[effectiveResourceId]);
return;
}
+
/**
* @param {?Protocol.Error} error
* @param {!CanvasAgent.ResourceState} resourceState
+ * @this {WebInspector.CanvasTraceLogPlayerProxy}
*/
function callback(error, resourceState)
{
@@ -1228,11 +1229,11 @@
userCallback(null);
return;
}
- this._currentResourceStates[resourceId] = resourceState;
+ this._currentResourceStates[effectiveResourceId] = resourceState;
userCallback(resourceState);
this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasResourceStateReceived, resourceState);
}
- CanvasAgent.getResourceState(this._traceLogId, resourceId, callback.bind(this));
+ CanvasAgent.getResourceState(this._traceLogId, effectiveResourceId, callback.bind(this));
},
/**
@@ -1245,6 +1246,7 @@
* @param {?Protocol.Error} error
* @param {!CanvasAgent.ResourceState} resourceState
* @param {number} replayTime
+ * @this {WebInspector.CanvasTraceLogPlayerProxy}
*/
function callback(error, resourceState, replayTime)
{
diff --git a/Source/devtools/front_end/CanvasReplayStateView.js b/Source/devtools/front_end/CanvasReplayStateView.js
index caa85bb..863951f 100644
--- a/Source/devtools/front_end/CanvasReplayStateView.js
+++ b/Source/devtools/front_end/CanvasReplayStateView.js
@@ -54,7 +54,7 @@
/** @type {!Object.<string, !Object.<string, boolean>>} */
this._gridNodesExpandedState = {};
- /** @type {!Object.<string, {scrollTop:number, scrollLeft:number}>} */
+ /** @type {!Object.<string, !{scrollTop: number, scrollLeft: number}>} */
this._gridScrollPositions = {};
/** @type {?CanvasAgent.ResourceId} */
@@ -262,8 +262,10 @@
{
this._updateCurrentOption();
var selectedResourceId = this._resourceSelector.selectedOption().value;
+
/**
* @param {?CanvasAgent.ResourceState} resourceState
+ * @this {WebInspector.CanvasReplayStateView}
*/
function didReceiveResourceState(resourceState)
{
@@ -280,8 +282,8 @@
_onCanvasTraceLogReceived: function(event)
{
var traceLog = /** @type {!CanvasAgent.TraceLog} */ (event.data);
- if (traceLog)
- this._collectResourcesFromTraceLog(traceLog);
+ console.assert(traceLog);
+ this._collectResourcesFromTraceLog(traceLog);
},
/**
@@ -290,8 +292,8 @@
_onCanvasResourceStateReceived: function(event)
{
var resourceState = /** @type {!CanvasAgent.ResourceState} */ (event.data);
- if (resourceState)
- this._collectResourcesFromResourceState(resourceState);
+ console.assert(resourceState);
+ this._collectResourcesFromResourceState(resourceState);
},
/**
@@ -350,6 +352,7 @@
* @param {!Array.<!CanvasAgent.ResourceStateDescriptor>|undefined} descriptors
* @param {!WebInspector.DataGridNode} parent
* @param {!Object=} nameToOldChildren
+ * @this {WebInspector.CanvasReplayStateView}
*/
function appendResourceStateDescriptors(descriptors, parent, nameToOldChildren)
{
@@ -381,16 +384,14 @@
*/
_updateDataGridHighlights: function(nodes)
{
- for (var i = 0, n = this._highlightedGridNodes.length; i < n; ++i) {
- var node = this._highlightedGridNodes[i];
- node.element.classList.remove("canvas-grid-node-highlighted");
- }
+ for (var i = 0, n = this._highlightedGridNodes.length; i < n; ++i)
+ this._highlightedGridNodes[i].element.classList.remove("canvas-grid-node-highlighted");
this._highlightedGridNodes = nodes;
for (var i = 0, n = this._highlightedGridNodes.length; i < n; ++i) {
var node = this._highlightedGridNodes[i];
- node.element.classList.add("canvas-grid-node-highlighted");
+ WebInspector.runCSSAnimationOnce(node.element, "canvas-grid-node-highlighted");
node.reveal();
}
},
diff --git a/Source/devtools/front_end/CodeMirrorTextEditor.js b/Source/devtools/front_end/CodeMirrorTextEditor.js
index cd74282..4a4d63a 100644
--- a/Source/devtools/front_end/CodeMirrorTextEditor.js
+++ b/Source/devtools/front_end/CodeMirrorTextEditor.js
@@ -151,12 +151,21 @@
this._codeMirror.on("beforeChange", this._beforeChange.bind(this));
this._codeMirror.on("gutterClick", this._gutterClick.bind(this));
this._codeMirror.on("cursorActivity", this._cursorActivity.bind(this));
+ this._codeMirror.on("beforeSelectionChange", this._beforeSelectionChange.bind(this));
this._codeMirror.on("scroll", this._scroll.bind(this));
this._codeMirror.on("focus", this._focus.bind(this));
this._codeMirror.on("blur", this._blur.bind(this));
this.element.addEventListener("contextmenu", this._contextMenu.bind(this), false);
+ /**
+ * @this {WebInspector.CodeMirrorTextEditor}
+ */
+ function updateAnticipateJumpFlag(value)
+ {
+ this._isHandlingMouseDownEvent = value;
+ }
+ this.element.addEventListener("mousedown", updateAnticipateJumpFlag.bind(this, true), true);
+ this.element.addEventListener("mousedown", updateAnticipateJumpFlag.bind(this, false), false);
- this.element.classList.add("fill");
this.element.style.overflow = "hidden";
this.element.firstChild.classList.add("source-code");
this.element.firstChild.classList.add("fill");
@@ -165,12 +174,18 @@
this.element.addEventListener("focus", this._handleElementFocus.bind(this), false);
this.element.addEventListener("keydown", this._handleKeyDown.bind(this), true);
+ this.element.addEventListener("keydown", this._handlePostKeyDown.bind(this), false);
this.element.tabIndex = 0;
- this._setupSelectionColor();
this._setupWhitespaceHighlight();
}
+/** @typedef {{canceled: boolean, from: CodeMirror.Pos, to: CodeMirror.Pos, text: string, origin: string, cancel: function()}} */
+WebInspector.CodeMirrorTextEditor.BeforeChangeObject;
+
+/** @typedef {{from: CodeMirror.Pos, to: CodeMirror.Pos, origin: string, text: !Array.<string>, removed: !Array.<string>}} */
+WebInspector.CodeMirrorTextEditor.ChangeObject;
+
WebInspector.CodeMirrorTextEditor.maxHighlightLength = 1000;
WebInspector.CodeMirrorTextEditor.autocompleteCommand = function(codeMirror)
@@ -185,7 +200,7 @@
function countIndent(line)
{
- for(var i = 0; i < line.length; ++i) {
+ for (var i = 0; i < line.length; ++i) {
if (!WebInspector.TextUtils.isSpaceChar(line[i]))
return i;
}
@@ -211,6 +226,7 @@
codemirror.execCommand("undo");
var cursor = codemirror.getCursor("start");
codemirror._codeMirrorTextEditor._innerRevealLine(cursor.line, scrollInfo);
+ codemirror._codeMirrorTextEditor._autocompleteController.finishAutocomplete();
}
CodeMirror.commands.redoAndReveal = function(codemirror)
@@ -219,6 +235,7 @@
codemirror.execCommand("redo");
var cursor = codemirror.getCursor("start");
codemirror._codeMirrorTextEditor._innerRevealLine(cursor.line, scrollInfo);
+ codemirror._codeMirrorTextEditor._autocompleteController.finishAutocomplete();
}
WebInspector.CodeMirrorTextEditor.LongLineModeLineLengthThreshold = 2000;
@@ -232,6 +249,9 @@
wasShown: function()
{
+ if (this._wasOnceShown)
+ return;
+ this._wasOnceShown = true;
this._codeMirror.refresh();
},
@@ -312,6 +332,9 @@
*/
highlightSearchResults: function(regex, range)
{
+ /**
+ * @this {WebInspector.CodeMirrorTextEditor}
+ */
function innerHighlightRegex()
{
if (range) {
@@ -326,12 +349,18 @@
}
this._tokenHighlighter.highlightSearchResults(regex, range);
}
+ if (!this._selectionBeforeSearch)
+ this._selectionBeforeSearch = this.selection();
this._codeMirror.operation(innerHighlightRegex.bind(this));
},
cancelSearchResultsHighlight: function()
{
this._codeMirror.operation(this._tokenHighlighter.highlightSelectedTokens.bind(this._tokenHighlighter));
+ if (this._selectionBeforeSearch) {
+ this._reportJump(this._selectionBeforeSearch, this.selection());
+ delete this._selectionBeforeSearch;
+ }
},
undo: function()
@@ -344,23 +373,6 @@
this._codeMirror.redo();
},
- _setupSelectionColor: function()
- {
- if (WebInspector.CodeMirrorTextEditor._selectionStyleInjected)
- return;
- WebInspector.CodeMirrorTextEditor._selectionStyleInjected = true;
- var backgroundColor = WebInspector.getSelectionBackgroundColor();
- var backgroundColorRule = backgroundColor ? ".CodeMirror .CodeMirror-selected { background-color: " + backgroundColor + ";}" : "";
- var foregroundColor = WebInspector.getSelectionForegroundColor();
- var foregroundColorRule = foregroundColor ? ".CodeMirror .CodeMirror-selectedtext:not(.CodeMirror-persist-highlight) { color: " + foregroundColor + "!important;}" : "";
- if (!foregroundColorRule && !backgroundColorRule)
- return;
-
- var style = document.createElement("style");
- style.textContent = backgroundColorRule + foregroundColorRule;
- document.head.appendChild(style);
- },
-
_setupWhitespaceHighlight: function()
{
if (WebInspector.CodeMirrorTextEditor._whitespaceStyleInjected || !WebInspector.settings.showWhitespacesInEditor.get())
@@ -386,6 +398,12 @@
e.consume(true);
},
+ _handlePostKeyDown: function(e)
+ {
+ if (e.defaultPrevented)
+ e.consume(true);
+ },
+
_shouldProcessWordForAutocompletion: function(word)
{
return word.length && (word[0] < '0' || word[0] > '9');
@@ -397,7 +415,7 @@
_addTextToCompletionDictionary: function(text)
{
var words = WebInspector.TextUtils.textToWords(text);
- for(var i = 0; i < words.length; ++i) {
+ for (var i = 0; i < words.length; ++i) {
if (this._shouldProcessWordForAutocompletion(words[i]))
this._dictionary.addWord(words[i]);
}
@@ -409,7 +427,7 @@
_removeTextFromCompletionDictionary: function(text)
{
var words = WebInspector.TextUtils.textToWords(text);
- for(var i = 0; i < words.length; ++i) {
+ for (var i = 0; i < words.length; ++i) {
if (this._shouldProcessWordForAutocompletion(words[i]))
this._dictionary.removeWord(words[i]);
}
@@ -477,13 +495,10 @@
var token = this._codeMirror.getTokenAt(new CodeMirror.Pos(lineNumber, (column || 0) + 1));
if (!token || !token.type)
return null;
- var convertedType = WebInspector.CodeMirrorUtils.convertTokenType(token.type);
- if (!convertedType)
- return null;
return {
startColumn: token.start,
endColumn: token.end - 1,
- type: convertedType
+ type: token.type
};
},
@@ -728,7 +743,7 @@
if (!wrapClasses)
return;
var classes = wrapClasses.split(" ");
- for(var i = 0; i < classes.length; ++i) {
+ for (var i = 0; i < classes.length; ++i) {
if (classes[i].startsWith("cm-breakpoint"))
this._codeMirror.removeLineClass(lineNumber, "wrap", classes[i]);
}
@@ -777,11 +792,10 @@
*/
highlightPosition: function(lineNumber, columnNumber)
{
- if (lineNumber < 0)
- return;
- lineNumber = Math.min(lineNumber, this._codeMirror.lineCount() - 1);
- if (typeof columnNumber !== "number" || columnNumber < 0 || columnNumber > this._codeMirror.getLine(lineNumber).length)
+ lineNumber = Number.constrain(lineNumber, 0, this._codeMirror.lineCount() - 1);
+ if (typeof columnNumber !== "number")
columnNumber = 0;
+ columnNumber = Number.constrain(columnNumber, 0, this._codeMirror.getLine(lineNumber).length);
this.clearPositionHighlight();
this._highlightedLine = this._codeMirror.getLineHandle(lineNumber);
@@ -791,7 +805,7 @@
this._codeMirror.addLineClass(this._highlightedLine, null, "cm-highlight");
this._clearHighlightTimeout = setTimeout(this.clearPositionHighlight.bind(this), 2000);
if (!this.readOnly())
- this._codeMirror.setSelection(new CodeMirror.Pos(lineNumber, columnNumber));
+ this.setSelection(WebInspector.TextRange.createFromLocation(lineNumber, columnNumber));
},
clearPositionHighlight: function()
@@ -828,7 +842,7 @@
{
var scrollInfo = this._codeMirror.getScrollInfo();
var newPaddingBottom;
- var linesElement = this.element.firstChild.querySelector(".CodeMirror-lines");
+ var linesElement = this.element.firstElementChild.querySelector(".CodeMirror-lines");
var lineCount = this._codeMirror.lineCount();
if (lineCount <= 1)
newPaddingBottom = 0;
@@ -844,12 +858,13 @@
var parentElement = this.element.parentElement;
if (!parentElement || !this.isShowing())
return;
- var scrollInfo = this._codeMirror.getScrollInfo();
+ var scrollLeft = this._codeMirror.doc.scrollLeft;
+ var scrollTop = this._codeMirror.doc.scrollTop;
var width = parentElement.offsetWidth;
var height = parentElement.offsetHeight;
this._codeMirror.setSize(width, height);
this._updatePaddingBottom(width, height);
- this._codeMirror.scrollTo(scrollInfo.left, scrollInfo.top);
+ this._codeMirror.scrollTo(scrollLeft, scrollTop);
},
onResize: function()
@@ -885,28 +900,32 @@
if (column === 0 || !WebInspector.TextUtils.isWordChar(line.charAt(column - 1)))
return null;
var wordStart = column - 1;
- while(wordStart > 0 && WebInspector.TextUtils.isWordChar(line.charAt(wordStart - 1)))
+ while (wordStart > 0 && WebInspector.TextUtils.isWordChar(line.charAt(wordStart - 1)))
--wordStart;
if (prefixOnly)
return new WebInspector.TextRange(lineNumber, wordStart, lineNumber, column);
var wordEnd = column;
- while(wordEnd < line.length && WebInspector.TextUtils.isWordChar(line.charAt(wordEnd)))
+ while (wordEnd < line.length && WebInspector.TextUtils.isWordChar(line.charAt(wordEnd)))
++wordEnd;
return new WebInspector.TextRange(lineNumber, wordStart, lineNumber, wordEnd);
},
+ /**
+ * @param {!CodeMirror} codeMirror
+ * @param {!WebInspector.CodeMirrorTextEditor.BeforeChangeObject} changeObject
+ */
_beforeChange: function(codeMirror, changeObject)
{
if (!this._dictionary)
return;
this._updatedLines = this._updatedLines || {};
- for(var i = changeObject.from.line; i <= changeObject.to.line; ++i)
+ for (var i = changeObject.from.line; i <= changeObject.to.line; ++i)
this._updatedLines[i] = this.line(i);
},
/**
* @param {!CodeMirror} codeMirror
- * @param {!{origin: string, text: !Array.<string>, removed: !Array.<string>}} changeObject
+ * @param {!WebInspector.CodeMirrorTextEditor.ChangeObject} changeObject
*/
_change: function(codeMirror, changeObject)
{
@@ -921,7 +940,7 @@
this._elementToWidget.clear();
if (this._updatedLines) {
- for(var lineNumber in this._updatedLines)
+ for (var lineNumber in this._updatedLines)
this._removeTextFromCompletionDictionary(this._updatedLines[lineNumber]);
delete this._updatedLines;
}
@@ -948,16 +967,16 @@
if (!this._muteTextChangedEvent)
this._delegate.onTextChanged(oldRange, newRange);
- for(var i = newRange.startLine; i <= newRange.endLine; ++i) {
+ for (var i = newRange.startLine; i <= newRange.endLine; ++i) {
linesToUpdate[i] = true;
}
if (this._dictionary) {
- for(var i = newRange.startLine; i <= newRange.endLine; ++i)
+ for (var i = newRange.startLine; i <= newRange.endLine; ++i)
linesToUpdate[i] = this.line(i);
}
} while (changeObject = changeObject.next);
if (this._dictionary) {
- for(var lineNumber in linesToUpdate)
+ for (var lineNumber in linesToUpdate)
this._addTextToCompletionDictionary(linesToUpdate[lineNumber]);
}
if (singleCharInput)
@@ -973,6 +992,28 @@
this._codeMirror.operation(this._tokenHighlighter.highlightSelectedTokens.bind(this._tokenHighlighter));
},
+ /**
+ * @param {!CodeMirror} codeMirror
+ * @param {!{head: !CodeMirror.Pos, anchor: !CodeMirror.Pos}} selection
+ */
+ _beforeSelectionChange: function(codeMirror, selection)
+ {
+ if (!this._isHandlingMouseDownEvent)
+ return;
+ this._reportJump(this.selection(), this._toRange(selection.anchor, selection.head));
+ },
+
+ /**
+ * @param {?WebInspector.TextRange} from
+ * @param {?WebInspector.TextRange} to
+ */
+ _reportJump: function(from, to)
+ {
+ if (from && to && from.equal(to))
+ return;
+ this._delegate.onJumpToPosition(from, to);
+ },
+
_scroll: function()
{
if (this._scrollTimer)
@@ -1163,11 +1204,59 @@
return new WebInspector.TextRange(start.line, start.ch, end.line, end.ch);
},
+ /**
+ * @param {number} lineNumber
+ * @param {number} columnNumber
+ * @return {!WebInspector.TextEditorPositionHandle}
+ */
+ textEditorPositionHandle: function(lineNumber, columnNumber)
+ {
+ return new WebInspector.CodeMirrorPositionHandle(this._codeMirror, new CodeMirror.Pos(lineNumber, columnNumber));
+ },
+
__proto__: WebInspector.View.prototype
}
/**
* @constructor
+ * @implements {WebInspector.TextEditorPositionHandle}
+ * @param {!CodeMirror} codeMirror
+ * @param {!CodeMirror.Pos} pos
+ */
+WebInspector.CodeMirrorPositionHandle = function(codeMirror, pos)
+{
+ this._codeMirror = codeMirror;
+ this._lineHandle = codeMirror.getLineHandle(pos.line);
+ this._columnNumber = pos.ch;
+}
+
+WebInspector.CodeMirrorPositionHandle.prototype = {
+ /**
+ * @return {?{lineNumber: number, columnNumber: number}}
+ */
+ resolve: function()
+ {
+ var lineNumber = this._codeMirror.getLineNumber(this._lineHandle);
+ if (typeof lineNumber !== "number")
+ return null;
+ return {
+ lineNumber: lineNumber,
+ columnNumber: this._columnNumber
+ };
+ },
+
+ /**
+ * @param {!WebInspector.TextEditorPositionHandle} positionHandle
+ * @return {boolean}
+ */
+ equal: function(positionHandle)
+ {
+ return positionHandle._lineHandle === this._lineHandle && positionHandle._columnNumber == this._columnNumber && positionHandle._codeMirror === this._codeMirror;
+ }
+}
+
+/**
+ * @constructor
* @param {!CodeMirror} codeMirror
*/
WebInspector.CodeMirrorTextEditor.TokenHighlighter = function(codeMirror)
@@ -1178,7 +1267,7 @@
WebInspector.CodeMirrorTextEditor.TokenHighlighter.prototype = {
/**
* @param {!RegExp} regex
- * @param {!WebInspector.TextRange} range
+ * @param {?WebInspector.TextRange} range
*/
highlightSearchResults: function(regex, range)
{
@@ -1200,14 +1289,17 @@
this._highlightDescriptor.selectionStart = selectionStart;
} else {
this._removeHighlight();
- this._setHighlighter(this._searchHighlighter.bind(this, this._highlightRegex, this._highlightRange), selectionStart);
+ this._setHighlighter(this._searchHighlighter.bind(this, this._highlightRegex), selectionStart);
}
- if (selectionStart) {
+ if (this._highlightRange) {
var pos = WebInspector.CodeMirrorTextEditor.prototype._toPos(this._highlightRange);
this._searchResultMarker = this._codeMirror.markText(pos.start, pos.end, {className: "cm-column-with-selection"});
}
},
+ /**
+ * @return {!RegExp|undefined}
+ */
highlightedRegex: function()
{
return this._highlightRegex;
@@ -1260,10 +1352,9 @@
/**
* @param {!RegExp} regex
- * @param {!WebInspector.TextRange} range
* @param {!CodeMirror.StringStream} stream
*/
- _searchHighlighter: function(regex, range, stream)
+ _searchHighlighter: function(regex, stream)
{
if (stream.column() === 0)
delete this._searchMatchLength;
@@ -1337,6 +1428,9 @@
WebInspector.CodeMirrorTextEditor.BlockIndentController.prototype = {
name: "blockIndentKeymap",
+ /**
+ * @return {*}
+ */
Enter: function(codeMirror)
{
if (codeMirror.somethingSelected())
@@ -1357,13 +1451,17 @@
return CodeMirror.Pass;
},
+ /**
+ * @return {*}
+ */
"'}'": function(codeMirror)
{
var cursor = codeMirror.getCursor();
var line = codeMirror.getLine(cursor.line);
- for(var i = 0 ; i < line.length; ++i)
+ for (var i = 0 ; i < line.length; ++i) {
if (!WebInspector.TextUtils.isSpaceChar(line.charAt(i)))
return CodeMirror.Pass;
+ }
codeMirror.replaceRange("}", cursor);
var matchingBracket = codeMirror.findMatchingBracket();
@@ -1498,6 +1596,7 @@
/**
* @param {?Event} e
+ * @return {boolean}
*/
keyDown: function(e)
{
@@ -1568,3 +1667,52 @@
return metrics ? new AnchorBox(metrics.x, metrics.y, 0, metrics.height) : null;
},
}
+
+/**
+ * @param {string} modeName
+ * @param {string} tokenPrefix
+ */
+WebInspector.CodeMirrorTextEditor._overrideModeWithPrefixedTokens = function(modeName, tokenPrefix)
+{
+ var oldModeName = modeName + "-old";
+ if (CodeMirror.modes[oldModeName])
+ return;
+
+ CodeMirror.defineMode(oldModeName, CodeMirror.modes[modeName]);
+ CodeMirror.defineMode(modeName, modeConstructor);
+
+ function modeConstructor(config, parserConfig)
+ {
+ var innerConfig = {};
+ for (var i in parserConfig)
+ innerConfig[i] = parserConfig[i];
+ innerConfig.name = oldModeName;
+ var codeMirrorMode = CodeMirror.getMode(config, innerConfig);
+ codeMirrorMode.name = modeName;
+ codeMirrorMode.token = tokenOverride.bind(null, codeMirrorMode.token);
+ return codeMirrorMode;
+ }
+
+ function tokenOverride(superToken, stream, state)
+ {
+ var token = superToken(stream, state);
+ return token ? tokenPrefix + token : token;
+ }
+}
+
+WebInspector.CodeMirrorTextEditor._overrideModeWithPrefixedTokens("css", "css-");
+WebInspector.CodeMirrorTextEditor._overrideModeWithPrefixedTokens("javascript", "js-");
+WebInspector.CodeMirrorTextEditor._overrideModeWithPrefixedTokens("xml", "xml-");
+
+(function() {
+ var backgroundColor = InspectorFrontendHost.getSelectionBackgroundColor();
+ var backgroundColorRule = backgroundColor ? ".CodeMirror .CodeMirror-selected { background-color: " + backgroundColor + ";}" : "";
+ var foregroundColor = InspectorFrontendHost.getSelectionForegroundColor();
+ var foregroundColorRule = foregroundColor ? ".CodeMirror .CodeMirror-selectedtext:not(.CodeMirror-persist-highlight) { color: " + foregroundColor + "!important;}" : "";
+ if (!foregroundColorRule && !backgroundColorRule)
+ return;
+
+ var style = document.createElement("style");
+ style.textContent = backgroundColorRule + foregroundColorRule;
+ document.head.appendChild(style);
+})();
diff --git a/Source/devtools/front_end/CodeMirrorUtils.js b/Source/devtools/front_end/CodeMirrorUtils.js
index 70f273a..1d0aaa2 100644
--- a/Source/devtools/front_end/CodeMirrorUtils.js
+++ b/Source/devtools/front_end/CodeMirrorUtils.js
@@ -28,10 +28,93 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-WebInspector.CodeMirrorUtils = {
+/**
+ * @constructor
+ * @extends {WebInspector.InplaceEditor}
+ */
+WebInspector.CodeMirrorUtils = function()
+{
+ WebInspector.InplaceEditor.call(this);
+}
+
+WebInspector.CodeMirrorUtils.prototype = {
+ /**
+ * @return {string}
+ */
+ editorContent: function(editingContext) {
+ return editingContext.codeMirror.getValue();
+ },
+
+ /**
+ * @param {?Event} e
+ */
+ _consumeCopy: function(e)
+ {
+ e.consume();
+ },
+
+ setUpEditor: function(editingContext)
+ {
+ var element = editingContext.element;
+ var config = editingContext.config;
+ loadScript("CodeMirrorTextEditor.js");
+ editingContext.cssLoadView = new WebInspector.CodeMirrorCSSLoadView();
+ editingContext.cssLoadView.show(element);
+ WebInspector.setCurrentFocusElement(element);
+ element.addEventListener("copy", this._consumeCopy, false);
+ var codeMirror = window.CodeMirror(element, {
+ mode: config.mode,
+ lineWrapping: config.lineWrapping,
+ smartIndent: config.smartIndent,
+ autofocus: true,
+ theme: config.theme,
+ value: config.initialValue
+ });
+ codeMirror.getWrapperElement().classList.add("source-code");
+ codeMirror.on("cursorActivity", function(cm) {
+ cm.display.cursor.scrollIntoViewIfNeeded(false);
+ });
+ editingContext.codeMirror = codeMirror;
+ },
+
+ closeEditor: function(editingContext)
+ {
+ editingContext.element.removeEventListener("copy", this._consumeCopy, false);
+ editingContext.cssLoadView.detach();
+ },
+
+ cancelEditing: function(editingContext)
+ {
+ editingContext.codeMirror.setValue(editingContext.oldText);
+ },
+
+ augmentEditingHandle: function(editingContext, handle)
+ {
+ function setWidth(editingContext, width)
+ {
+ var padding = 30;
+ var codeMirror = editingContext.codeMirror;
+ codeMirror.getWrapperElement().style.width = (width - codeMirror.getWrapperElement().offsetLeft - padding) + "px";
+ codeMirror.refresh();
+ }
+
+ handle.codeMirror = editingContext.codeMirror;
+ handle.setWidth = setWidth.bind(null, editingContext);
+ },
+
+ __proto__: WebInspector.InplaceEditor.prototype
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.TokenizerFactory}
+ */
+WebInspector.CodeMirrorUtils.TokenizerFactory = function() { }
+
+WebInspector.CodeMirrorUtils.TokenizerFactory.prototype = {
/**
* @param {string} mimeType
- * @return {function(string, function(string, string, number, number))}
+ * @return {function(string, function(string, ?string, number, number))}
*/
createTokenizer: function(mimeType)
{
@@ -48,57 +131,23 @@
}
}
return tokenize;
- },
-
- /**
- * @param {string} tokenType
- */
- convertTokenType: function(tokenType)
- {
- if (tokenType.startsWith("js-variable") || tokenType.startsWith("js-property") || tokenType === "js-def")
- return "javascript-ident";
- if (tokenType === "js-string-2")
- return "javascript-regexp";
- if (tokenType === "js-number" || tokenType === "js-comment" || tokenType === "js-string" || tokenType === "js-keyword")
- return "javascript-" + tokenType.substring("js-".length);
- if (tokenType === "css-number")
- return "css-number";
- return null;
- },
-
- /**
- * @param {string} modeName
- * @param {string} tokenPrefix
- */
- overrideModeWithPrefixedTokens: function(modeName, tokenPrefix)
- {
- var oldModeName = modeName + "-old";
- if (CodeMirror.modes[oldModeName])
- return;
-
- CodeMirror.defineMode(oldModeName, CodeMirror.modes[modeName]);
- CodeMirror.defineMode(modeName, modeConstructor);
-
- function modeConstructor(config, parserConfig)
- {
- var innerConfig = {};
- for (var i in parserConfig)
- innerConfig[i] = parserConfig[i];
- innerConfig.name = oldModeName;
- var codeMirrorMode = CodeMirror.getMode(config, innerConfig);
- codeMirrorMode.name = modeName;
- codeMirrorMode.token = tokenOverride.bind(this, codeMirrorMode.token);
- return codeMirrorMode;
- }
-
- function tokenOverride(superToken, stream, state)
- {
- var token = superToken(stream, state);
- return token ? tokenPrefix + token : token;
- }
}
}
-WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("css-base", "css-");
-WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("javascript", "js-");
-WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("xml", "xml-");
+/**
+ * This bogus view is needed to load/unload CodeMirror-related CSS on demand.
+ *
+ * @constructor
+ * @extends {WebInspector.View}
+ */
+WebInspector.CodeMirrorCSSLoadView = function()
+{
+ WebInspector.View.call(this);
+ this.element.classList.add("hidden");
+ this.registerRequiredCSS("cm/codemirror.css");
+ this.registerRequiredCSS("cm/cmdevtools.css");
+}
+
+WebInspector.CodeMirrorCSSLoadView.prototype = {
+ __proto__: WebInspector.View.prototype
+}
diff --git a/Source/devtools/front_end/CompilerScriptMapping.js b/Source/devtools/front_end/CompilerScriptMapping.js
index 291b045..620c9d2 100644
--- a/Source/devtools/front_end/CompilerScriptMapping.js
+++ b/Source/devtools/front_end/CompilerScriptMapping.js
@@ -31,11 +31,13 @@
/**
* @constructor
* @implements {WebInspector.ScriptSourceMapping}
+ * @param {!WebInspector.DebuggerModel} debuggerModel
* @param {!WebInspector.Workspace} workspace
* @param {!WebInspector.SimpleWorkspaceProvider} networkWorkspaceProvider
*/
-WebInspector.CompilerScriptMapping = function(workspace, networkWorkspaceProvider)
+WebInspector.CompilerScriptMapping = function(debuggerModel, workspace, networkWorkspaceProvider)
{
+ this._debuggerModel = debuggerModel;
this._workspace = workspace;
this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAddedToWorkspace, this);
this._networkWorkspaceProvider = networkWorkspaceProvider;
@@ -49,7 +51,7 @@
this._scriptForSourceMap = new Map();
/** @type {!StringMap.<!WebInspector.SourceMap>} */
this._sourceMapForURL = new StringMap();
- WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
+ debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
}
WebInspector.CompilerScriptMapping.prototype = {
@@ -91,7 +93,7 @@
var script = /** @type {!WebInspector.Script} */ (this._scriptForSourceMap.get(sourceMap));
console.assert(script);
var entry = sourceMap.findEntryReversed(uiSourceCode.url, lineNumber);
- return WebInspector.debuggerModel.createRawLocation(script, entry[0], entry[1]);
+ return this._debuggerModel.createRawLocation(script, /** @type {number} */ (entry[0]), /** @type {number} */ (entry[1]));
},
/**
@@ -104,6 +106,7 @@
/**
* @param {?WebInspector.SourceMap} sourceMap
+ * @this {WebInspector.CompilerScriptMapping}
*/
function sourceMapLoaded(sourceMap)
{
@@ -210,15 +213,17 @@
/**
* @param {?WebInspector.SourceMap} sourceMap
+ * @this {WebInspector.CompilerScriptMapping}
*/
function sourceMapLoaded(sourceMap)
{
- var callbacks = this._pendingSourceMapLoadingCallbacks[sourceMapURL];
- delete this._pendingSourceMapLoadingCallbacks[sourceMapURL];
+ var url = /** @type {string} */ (sourceMapURL);
+ var callbacks = this._pendingSourceMapLoadingCallbacks[url];
+ delete this._pendingSourceMapLoadingCallbacks[url];
if (!callbacks)
return;
if (sourceMap)
- this._sourceMapForSourceMapURL[sourceMapURL] = sourceMap;
+ this._sourceMapForSourceMapURL[url] = sourceMap;
for (var i = 0; i < callbacks.length; ++i)
callbacks[i](sourceMap);
}
@@ -226,6 +231,10 @@
_debuggerReset: function()
{
+ /**
+ * @param {!WebInspector.SourceMap} sourceMap
+ * @this {WebInspector.CompilerScriptMapping}
+ */
function unbindUISourceCodesForSourceMap(sourceMap)
{
var sourceURLs = sourceMap.sources();
diff --git a/Source/devtools/front_end/ConsoleMessage.js b/Source/devtools/front_end/ConsoleMessage.js
index 6260c1a..438d3a2 100644
--- a/Source/devtools/front_end/ConsoleMessage.js
+++ b/Source/devtools/front_end/ConsoleMessage.js
@@ -48,14 +48,13 @@
*/
WebInspector.ConsoleMessageImpl = function(source, level, message, linkifier, type, url, line, column, repeatCount, parameters, stackTrace, requestId, isOutdated)
{
- WebInspector.ConsoleMessage.call(this, source, level, url, line, column, repeatCount);
+ WebInspector.ConsoleMessage.call(this, source, level, url, line, column, repeatCount, requestId);
this._linkifier = linkifier;
this.type = type || WebInspector.ConsoleMessage.MessageType.Log;
this._messageText = message;
this._parameters = parameters;
this._stackTrace = stackTrace;
- this._request = requestId ? WebInspector.networkLog.requestForId(requestId) : null;
this._isOutdated = isOutdated;
/** @type {!Array.<!WebInspector.DataGrid>} */
this._dataGrids = [];
@@ -90,77 +89,89 @@
}
},
+ /**
+ * @override
+ * @param {!Node} messageElement
+ */
+ setMessageElement: function(messageElement)
+ {
+ this._messageElement = messageElement;
+ },
+
_formatMessage: function()
{
this._formattedMessage = document.createElement("span");
this._formattedMessage.className = "console-message-text source-code";
- if (this.source === WebInspector.ConsoleMessage.MessageSource.ConsoleAPI) {
- switch (this.type) {
- case WebInspector.ConsoleMessage.MessageType.Trace:
- this._messageElement = this._format(this._parameters || ["console.trace()"]);
- break;
- case WebInspector.ConsoleMessage.MessageType.Clear:
- this._messageElement = document.createTextNode(WebInspector.UIString("Console was cleared"));
- this._formattedMessage.classList.add("console-info");
- break;
- case WebInspector.ConsoleMessage.MessageType.Assert:
- var args = [WebInspector.UIString("Assertion failed:")];
- if (this._parameters)
- args = args.concat(this._parameters);
- this._messageElement = this._format(args);
- break;
- case WebInspector.ConsoleMessage.MessageType.Dir:
- var obj = this._parameters ? this._parameters[0] : undefined;
- var args = ["%O", obj];
- this._messageElement = this._format(args);
- break;
- case WebInspector.ConsoleMessage.MessageType.Profile:
- var title = WebInspector.ProfilesPanelDescriptor.resolveProfileTitle(this._messageText);
- this._messageElement = document.createTextNode(WebInspector.UIString("Profile '%s' started.", title));
- break;
- case WebInspector.ConsoleMessage.MessageType.ProfileEnd:
- var hashIndex = this._messageText.lastIndexOf("#");
- var title = WebInspector.ProfilesPanelDescriptor.resolveProfileTitle(this._messageText.substring(0, hashIndex));
- var uid = this._messageText.substring(hashIndex + 1);
- var format = WebInspector.UIString("Profile '%s' finished.", "%_");
- var link = WebInspector.linkifyURLAsNode("webkit-profile://CPU/" + uid, title);
- this._messageElement = document.createElement("span");
- this._formatWithSubstitutionString(format, [link], this._messageElement);
- break;
- default:
- var args = this._parameters || [this._messageText];
- this._messageElement = this._format(args);
- }
- } else if (this.source === WebInspector.ConsoleMessage.MessageSource.Network) {
- if (this._request) {
- this._stackTrace = this._request.initiator.stackTrace;
- if (this._request.initiator && this._request.initiator.url) {
- this.url = this._request.initiator.url;
- this.line = this._request.initiator.lineNumber;
+ /**
+ * @param {string} title
+ * @return {!Element}
+ * @this {WebInspector.NetworkRequest}
+ */
+ function linkifyRequest(title)
+ {
+ return WebInspector.Linkifier.linkifyUsingRevealer(this, title, this.url);
+ }
+
+ if (!this._messageElement) {
+ if (this.source === WebInspector.ConsoleMessage.MessageSource.ConsoleAPI) {
+ switch (this.type) {
+ case WebInspector.ConsoleMessage.MessageType.Trace:
+ this._messageElement = this._format(this._parameters || ["console.trace()"]);
+ break;
+ case WebInspector.ConsoleMessage.MessageType.Clear:
+ this._messageElement = document.createTextNode(WebInspector.UIString("Console was cleared"));
+ this._formattedMessage.classList.add("console-info");
+ break;
+ case WebInspector.ConsoleMessage.MessageType.Assert:
+ var args = [WebInspector.UIString("Assertion failed:")];
+ if (this._parameters)
+ args = args.concat(this._parameters);
+ this._messageElement = this._format(args);
+ break;
+ case WebInspector.ConsoleMessage.MessageType.Dir:
+ var obj = this._parameters ? this._parameters[0] : undefined;
+ var args = ["%O", obj];
+ this._messageElement = this._format(args);
+ break;
+ case WebInspector.ConsoleMessage.MessageType.Profile:
+ case WebInspector.ConsoleMessage.MessageType.ProfileEnd:
+ console.assert(false);
+ break;
+ default:
+ var args = this._parameters || [this._messageText];
+ this._messageElement = this._format(args);
}
- this._messageElement = document.createElement("span");
- if (this.level === WebInspector.ConsoleMessage.MessageLevel.Error) {
- this._messageElement.appendChild(document.createTextNode(this._request.requestMethod + " "));
- this._messageElement.appendChild(WebInspector.linkifyRequestAsNode(this._request));
- if (this._request.failed)
- this._messageElement.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
- else
- this._messageElement.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
+ } else if (this.source === WebInspector.ConsoleMessage.MessageSource.Network) {
+ if (this._request) {
+ this._stackTrace = this._request.initiator.stackTrace;
+ if (this._request.initiator && this._request.initiator.url) {
+ this.url = this._request.initiator.url;
+ this.line = this._request.initiator.lineNumber;
+ }
+ this._messageElement = document.createElement("span");
+ if (this.level === WebInspector.ConsoleMessage.MessageLevel.Error) {
+ this._messageElement.appendChild(document.createTextNode(this._request.requestMethod + " "));
+ this._messageElement.appendChild(WebInspector.Linkifier.linkifyUsingRevealer(this._request, this._request.url, this._request.url));
+ if (this._request.failed)
+ this._messageElement.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
+ else
+ this._messageElement.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
+ } else {
+ var fragment = WebInspector.linkifyStringAsFragmentWithCustomLinkifier(this._messageText, linkifyRequest.bind(this._request));
+ this._messageElement.appendChild(fragment);
+ }
} else {
- var fragment = WebInspector.linkifyStringAsFragmentWithCustomLinkifier(this._messageText, WebInspector.linkifyRequestAsNode.bind(null, this._request));
- this._messageElement.appendChild(fragment);
+ if (this.url) {
+ var isExternal = !WebInspector.resourceForURL(this.url) && !WebInspector.workspace.uiSourceCodeForURL(this.url);
+ this._anchorElement = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
+ }
+ this._messageElement = this._format([this._messageText]);
}
} else {
- if (this.url) {
- var isExternal = !WebInspector.resourceForURL(this.url) && !WebInspector.workspace.uiSourceCodeForURL(this.url);
- this._anchorElement = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
- }
- this._messageElement = this._format([this._messageText]);
+ var args = this._parameters || [this._messageText];
+ this._messageElement = this._format(args);
}
- } else {
- var args = this._parameters || [this._messageText];
- this._messageElement = this._format(args);
}
if (this.source !== WebInspector.ConsoleMessage.MessageSource.Network || this._request) {
@@ -219,14 +230,6 @@
},
/**
- * @return {?WebInspector.NetworkRequest}
- */
- request: function()
- {
- return this._request;
- },
-
- /**
* @param {string} url
* @param {number} lineNumber
* @param {number} columnNumber
@@ -437,7 +440,7 @@
/**
* @param {string} type
- * @param {string} subtype
+ * @param {string=} subtype
* @param {string=} description
* @return {!Element}
*/
@@ -474,6 +477,10 @@
_formatParameterAsNode: function(object, elem)
{
+ /**
+ * @param {!DOMAgent.NodeId} nodeId
+ * @this {WebInspector.ConsoleMessageImpl}
+ */
function printNode(nodeId)
{
if (!nodeId) {
@@ -482,14 +489,12 @@
this._formatParameterAsObject(object, elem, false);
return;
}
- var treeOutline = new WebInspector.ElementsTreeOutline(false, false);
- treeOutline.setVisible(true);
- treeOutline.rootDOMNode = WebInspector.domAgent.nodeForId(nodeId);
- treeOutline.element.classList.add("outline-disclosure");
- if (!treeOutline.children[0].hasChildren)
- treeOutline.element.classList.add("single-node");
- elem.appendChild(treeOutline.element);
- treeOutline.element.treeElementForTest = treeOutline.children[0];
+ var node = WebInspector.domAgent.nodeForId(nodeId);
+ var renderer = WebInspector.moduleManager.instance(WebInspector.Renderer, node);
+ if (renderer)
+ elem.appendChild(renderer.render(node));
+ else
+ console.error("No renderer for node found");
}
object.pushNodeToFrontend(printNode.bind(this));
},
@@ -671,6 +676,7 @@
/**
* @param {?WebInspector.RemoteObject} result
* @param {boolean=} wasThrown
+ * @this {WebInspector.ConsoleMessageImpl}
*/
function onInvokeGetterClick(result, wasThrown)
{
@@ -702,10 +708,22 @@
return rootElement;
},
+ /**
+ * @param {string} format
+ * @param {!Array.<string>} parameters
+ * @param {!Element} formattedResult
+ * @this {WebInspector.ConsoleMessageImpl}
+ */
_formatWithSubstitutionString: function(format, parameters, formattedResult)
{
var formatters = {};
+ /**
+ * @param {boolean} force
+ * @param {!Object} obj
+ * @return {!Element}
+ * @this {WebInspector.ConsoleMessageImpl}
+ */
function parameterFormatter(force, obj)
{
return this._formatParameter(obj, force, false);
@@ -834,12 +852,18 @@
WebInspector.highlightSearchResults(element, matchRanges);
},
+ /**
+ * @return {boolean}
+ */
matchesRegex: function(regexObject)
{
regexObject.lastIndex = 0;
- return regexObject.test(this.message) || (this._anchorElement && regexObject.test(this._anchorElement.textContent));
+ return regexObject.test(this.message) || (!!this._anchorElement && regexObject.test(this._anchorElement.textContent));
},
+ /**
+ * @return {!Element}
+ */
toMessageElement: function()
{
if (this._element)
@@ -885,7 +909,7 @@
for (var i = 0; i < this._stackTrace.length; i++) {
var frame = this._stackTrace[i];
- var content = document.createElement("div");
+ var content = document.createElementWithClass("div", "stacktrace-entry");
var messageTextElement = document.createElement("span");
messageTextElement.className = "console-message-text source-code";
var functionName = frame.functionName || WebInspector.UIString("(anonymous function)");
@@ -919,6 +943,9 @@
this.repeatCountElement.textContent = this.repeatCount;
},
+ /**
+ * @return {string}
+ */
toString: function()
{
var sourceString;
@@ -927,7 +954,7 @@
sourceString = "XML";
break;
case WebInspector.ConsoleMessage.MessageSource.JS:
- sourceString = "JS";
+ sourceString = "JavaScript";
break;
case WebInspector.ConsoleMessage.MessageSource.Network:
sourceString = "Network";
@@ -1026,6 +1053,10 @@
return WebInspector.debuggerModel.createRawLocationByURL(this.url, lineNumber, columnNumber);
},
+ /**
+ * @param {?WebInspector.ConsoleMessage} msg
+ * @return {boolean}
+ */
isEqual: function(msg)
{
if (!msg)
diff --git a/Source/devtools/front_end/ConsoleModel.js b/Source/devtools/front_end/ConsoleModel.js
index aef8fd1..dfa36a9 100644
--- a/Source/devtools/front_end/ConsoleModel.js
+++ b/Source/devtools/front_end/ConsoleModel.js
@@ -54,6 +54,10 @@
ConsoleAgent.setMonitoringXHREnabled(true);
this._enablingConsole = true;
+
+ /**
+ * @this {WebInspector.ConsoleModel}
+ */
function callback()
{
delete this._enablingConsole;
@@ -161,8 +165,9 @@
* @param {number=} line
* @param {number=} column
* @param {number=} repeatCount
+ * @param {!NetworkAgent.RequestId=} requestId
*/
-WebInspector.ConsoleMessage = function(source, level, url, line, column, repeatCount)
+WebInspector.ConsoleMessage = function(source, level, url, line, column, repeatCount, requestId)
{
this.source = source;
this.level = level;
@@ -175,10 +180,18 @@
this.repeatCount = repeatCount;
this.repeatDelta = repeatCount;
this.totalRepeatCount = repeatCount;
+ this._request = requestId ? WebInspector.networkLog.requestForId(requestId) : null;
}
WebInspector.ConsoleMessage.prototype = {
/**
+ * @param {!Node} messageElement
+ */
+ setMessageElement: function(messageElement)
+ {
+ },
+
+ /**
* @return {boolean}
*/
isErrorOrWarning: function()
@@ -196,7 +209,7 @@
*/
clone: function()
{
- // Implemented by concrete instances
+ throw "Not implemented";
},
/**
@@ -204,7 +217,15 @@
*/
location: function()
{
- // Implemented by concrete instances
+ throw "Not implemented";
+ },
+
+ /**
+ * @return {?WebInspector.NetworkRequest}
+ */
+ request: function()
+ {
+ return this._request;
}
}
@@ -267,7 +288,6 @@
Debug: "debug"
}
-
/**
* @constructor
* @implements {ConsoleAgent.Dispatcher}
@@ -316,6 +336,6 @@
}
/**
- * @type {?WebInspector.ConsoleModel}
+ * @type {!WebInspector.ConsoleModel}
*/
-WebInspector.console = null;
+WebInspector.console;
diff --git a/Source/devtools/front_end/ConsolePanel.js b/Source/devtools/front_end/ConsolePanel.js
index f9efc77..3b2a901 100644
--- a/Source/devtools/front_end/ConsolePanel.js
+++ b/Source/devtools/front_end/ConsolePanel.js
@@ -29,7 +29,6 @@
/**
* @constructor
* @extends {WebInspector.Panel}
- * @implements {WebInspector.ViewFactory}
*/
WebInspector.ConsolePanel = function()
{
@@ -39,20 +38,8 @@
WebInspector.ConsolePanel.prototype = {
/**
- * @param {string=} id
- * @return {?WebInspector.View}
+ * @return {!Element}
*/
- createView: function(id)
- {
- if (!this._consoleViewWrapper) {
- this._consoleViewWrapper = new WebInspector.View();
- this._consoleViewWrapper.element.classList.add("fill", "console-view-wrapper");
- if (WebInspector.inspectorView.currentPanel() !== this)
- this._view.show(this._consoleViewWrapper.element);
- }
- return this._consoleViewWrapper;
- },
-
defaultFocusedElement: function()
{
return this._view.defaultFocusedElement();
@@ -61,24 +48,77 @@
wasShown: function()
{
WebInspector.Panel.prototype.wasShown.call(this);
- if (WebInspector.inspectorView.drawer().visible() && WebInspector.inspectorView.selectedViewInDrawer() === "console") {
- WebInspector.inspectorView.drawer().hide(true);
- this._drawerWasVisible = true;
- }
this._view.show(this.element);
},
willHide: function()
{
- if (this._drawerWasVisible) {
- WebInspector.inspectorView.drawer().show(true);
- delete this._drawerWasVisible;
- }
-
WebInspector.Panel.prototype.willHide.call(this);
- if (this._consoleViewWrapper)
- this._view.show(this._consoleViewWrapper.element);
+ if (WebInspector.ConsolePanel.WrapperView._instance)
+ WebInspector.ConsolePanel.WrapperView._instance._showViewInWrapper();
},
__proto__: WebInspector.Panel.prototype
}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Drawer.ViewFactory}
+ */
+WebInspector.ConsolePanel.ViewFactory = function()
+{
+}
+
+WebInspector.ConsolePanel.ViewFactory.prototype = {
+ /**
+ * @return {!WebInspector.View}
+ */
+ createView: function()
+ {
+ if (!WebInspector.ConsolePanel.WrapperView._instance)
+ WebInspector.ConsolePanel.WrapperView._instance = new WebInspector.ConsolePanel.WrapperView();
+ return WebInspector.ConsolePanel.WrapperView._instance;
+ }
+}
+
+/**
+ * @constructor
+ * @extends {WebInspector.View}
+ */
+WebInspector.ConsolePanel.WrapperView = function()
+{
+ WebInspector.View.call(this);
+ this.element.classList.add("console-view-wrapper");
+
+ this._view = WebInspector.consoleView;
+ // FIXME: this won't be needed once drawer becomes a view.
+ this.wasShown();
+}
+
+WebInspector.ConsolePanel.WrapperView.prototype = {
+ wasShown: function()
+ {
+ if (!WebInspector.inspectorView.currentPanel() || WebInspector.inspectorView.currentPanel().name !== "console")
+ this._showViewInWrapper();
+ },
+
+ /**
+ * @return {!Element}
+ */
+ defaultFocusedElement: function()
+ {
+ return this._view.defaultFocusedElement();
+ },
+
+ focus: function()
+ {
+ this._view.focus();
+ },
+
+ _showViewInWrapper: function()
+ {
+ this._view.show(this.element);
+ },
+
+ __proto__: WebInspector.View.prototype
+}
diff --git a/Source/devtools/front_end/ConsoleView.js b/Source/devtools/front_end/ConsoleView.js
index 55e6629..20f1080 100644
--- a/Source/devtools/front_end/ConsoleView.js
+++ b/Source/devtools/front_end/ConsoleView.js
@@ -43,31 +43,29 @@
this._searchableView.show(this.element);
this._contentsElement = this._searchableView.element;
- this._contentsElement.classList.add("fill", "vbox", "console-view");
+ this._contentsElement.classList.add("console-view");
this._visibleMessagesIndices = [];
this._urlToMessageCount = {};
this._clearConsoleButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear console log."), "clear-status-bar-item");
this._clearConsoleButton.addEventListener("click", this._requestClearMessages, this);
- this._frameSelector = new WebInspector.StatusBarComboBox(this._frameChanged.bind(this), "console-context");
- this._contextSelector = new WebInspector.StatusBarComboBox(this._contextChanged.bind(this), "console-context");
+ this._executionContextSelector = new WebInspector.StatusBarComboBox(this._executionContextChanged.bind(this), "console-context");
+ this._topLevelOptionByFrameId = {};
+ this._subOptionsByFrameId = {};
this._filter = new WebInspector.ConsoleViewFilter();
this._filter.addEventListener(WebInspector.ConsoleViewFilter.Events.FilterChanged, this._updateMessageList.bind(this));
- if (hideContextSelector) {
- this._frameSelector.element.classList.add("hidden");
- this._contextSelector.element.classList.add("hidden");
- }
+ if (hideContextSelector)
+ this._executionContextSelector.element.classList.add("hidden");
this._filterBar = new WebInspector.FilterBar();
var statusBarElement = this._contentsElement.createChild("div", "console-status-bar");
statusBarElement.appendChild(this._clearConsoleButton.element);
statusBarElement.appendChild(this._filterBar.filterButton().element);
- statusBarElement.appendChild(this._frameSelector.element);
- statusBarElement.appendChild(this._contextSelector.element);
+ statusBarElement.appendChild(this._executionContextSelector.element);
this._filtersContainer = this._contentsElement.createChild("div", "console-filters-header hidden");
this._filtersContainer.appendChild(this._filterBar.filtersElement());
@@ -157,12 +155,14 @@
*/
_addFrame: function(contextList)
{
- var option = this._frameSelector.createOption(contextList.displayName, contextList.url);
- option._contextList = contextList;
- contextList._consoleOption = option;
+ var maxLength = 50;
+ var topLevelOption = this._executionContextSelector.createOption(contextList.displayName.trimMiddle(maxLength), contextList.url);
+ topLevelOption._executionContext = null;
+ this._topLevelOptionByFrameId[contextList.frameId] = topLevelOption;
+ this._subOptionsByFrameId[contextList.frameId] = [];
+
contextList.addEventListener(WebInspector.FrameExecutionContextList.EventTypes.ContextsUpdated, this._frameUpdated, this);
contextList.addEventListener(WebInspector.FrameExecutionContextList.EventTypes.ContextAdded, this._contextAdded, this);
- this._frameChanged();
},
/**
@@ -171,48 +171,45 @@
_frameRemoved: function(event)
{
var contextList = /** @type {!WebInspector.FrameExecutionContextList} */ (event.data);
- this._frameSelector.removeOption(contextList._consoleOption);
- this._frameChanged();
- },
- _frameChanged: function()
- {
- var context = this._currentFrame();
- if (!context) {
- WebInspector.runtimeModel.setCurrentExecutionContext(null);
- this._contextSelector.element.classList.add("hidden");
- return;
- }
-
- var executionContexts = context.executionContexts();
- if (executionContexts.length)
- WebInspector.runtimeModel.setCurrentExecutionContext(executionContexts[0]);
-
- if (executionContexts.length === 1) {
- this._contextSelector.element.classList.add("hidden");
- return;
- }
- this._contextSelector.element.classList.remove("hidden");
- this._contextSelector.removeOptions();
- for (var i = 0; i < executionContexts.length; ++i)
- this._appendContextOption(executionContexts[i]);
+ this._removeSubOptions(contextList.frameId);
+ var topLevelOption = this._topLevelOptionByFrameId[contextList.frameId];
+ this._executionContextSelector.removeOption(topLevelOption);
+ delete this._topLevelOptionByFrameId[contextList.frameId];
+ delete this._subOptionsByFrameId[contextList.frameId];
+ this._executionContextChanged();
},
/**
- * @param {!WebInspector.ExecutionContext} executionContext
+ * @param {string} frameId
+ * @return {boolean}
*/
- _appendContextOption: function(executionContext)
+ _removeSubOptions: function(frameId)
{
- if (!WebInspector.runtimeModel.currentExecutionContext())
- WebInspector.runtimeModel.setCurrentExecutionContext(executionContext);
- var option = this._contextSelector.createOption(executionContext.name, executionContext.id);
- option._executionContext = executionContext;
+ var selectedOptionRemoved = false;
+ var subOptions = this._subOptionsByFrameId[frameId];
+ for (var i = 0; i < subOptions.length; ++i) {
+ selectedOptionRemoved |= this._executionContextSelector.selectedOption() === subOptions[i];
+ this._executionContextSelector.removeOption(subOptions[i]);
+ }
+ this._subOptionsByFrameId[frameId] = [];
+ return selectedOptionRemoved;
},
- _contextChanged: function()
+ _executionContextChanged: function()
{
- var option = this._contextSelector.selectedOption();
- WebInspector.runtimeModel.setCurrentExecutionContext(option ? option._executionContext : null);
+ var runtimeContext = WebInspector.runtimeModel.currentExecutionContext();
+ if (this._currentExecutionContext() !== runtimeContext)
+ WebInspector.runtimeModel.setCurrentExecutionContext(this._currentExecutionContext());
+ },
+
+ /**
+ * @return {?WebInspector.ExecutionContext}
+ */
+ _currentExecutionContext: function()
+ {
+ var option = this._executionContextSelector.selectedOption();
+ return option ? option._executionContext : null;
},
/**
@@ -221,9 +218,17 @@
_frameUpdated: function(event)
{
var contextList = /** @type {!WebInspector.FrameExecutionContextList} */ (event.data);
- var option = contextList._consoleOption;
- option.text = contextList.displayName;
+ var option = this._topLevelOptionByFrameId[contextList.frameId];
+ var maxLength = 50;
+ option.text = contextList.displayName.trimMiddle(maxLength);
option.title = contextList.url;
+
+ var selectedRemoved = this._removeSubOptions(contextList.frameId);
+
+ if (selectedRemoved) {
+ this._executionContextSelector.select(option);
+ this._executionContextChanged();
+ }
},
/**
@@ -232,17 +237,35 @@
_contextAdded: function(event)
{
var contextList = /** @type {!WebInspector.FrameExecutionContextList} */ (event.data);
- if (contextList === this._currentFrame())
- this._frameChanged();
- },
- /**
- * @return {!WebInspector.FrameExecutionContextList|undefined}
- */
- _currentFrame: function()
- {
- var option = this._frameSelector.selectedOption();
- return option ? option._contextList : undefined;
+ var currentExecutionContext = this._currentExecutionContext();
+ var shouldSelectOption = this._removeSubOptions(contextList.frameId);
+
+ var topLevelOption = this._topLevelOptionByFrameId[contextList.frameId];
+ var nextTopLevelOption = topLevelOption.nextSibling;
+ var subOptions = this._subOptionsByFrameId[contextList.frameId];
+ var executionContexts = contextList.executionContexts();
+ for (var i = 0; i < executionContexts.length; ++i) {
+ if (executionContexts[i].isMainWorldContext) {
+ topLevelOption._executionContext = executionContexts[i];
+ continue;
+ }
+ var subOption = document.createElement("option");
+ subOption.text = "\u00a0\u00a0\u00a0\u00a0" + executionContexts[i].name;
+ subOption._executionContext = executionContexts[i];
+ this._executionContextSelector.selectElement().insertBefore(subOption, nextTopLevelOption);
+ subOptions.push(subOption);
+
+ if (shouldSelectOption && executionContexts[i] === currentExecutionContext) {
+ this._executionContextSelector.select(subOption);
+ shouldSelectOption = false;
+ }
+ }
+
+ if (shouldSelectOption)
+ this._executionContextSelector.select(topLevelOption);
+
+ this._executionContextChanged();
},
willHide: function()
@@ -257,9 +280,10 @@
this.prompt.moveCaretToEndOfPrompt();
},
- afterShow: function()
+ focus: function()
{
WebInspector.setCurrentFocusElement(this.promptElement);
+ this.prompt.moveCaretToEndOfPrompt();
},
storeScrollPositions: function()
@@ -291,10 +315,13 @@
if (this._scrollIntoViewTimer)
return;
+ /**
+ * @this {WebInspector.ConsoleView}
+ */
function scrollIntoView()
{
delete this._scrollIntoViewTimer;
- this.messagesElement.scrollTop = this.messagesElement.scrollHeight - this.messagesElement.clientHeight;
+ this.messagesElement.scrollTop = this.messagesElement.scrollHeight;
}
this._scrollIntoViewTimer = setTimeout(scrollIntoView.bind(this), 20);
},
@@ -395,12 +422,6 @@
_handleContextMenuEvent: function(event)
{
- if (!window.getSelection().isCollapsed) {
- // If there is a selection, we want to show our normal context menu
- // (with Copy, etc.), and not Clear Console.
- return;
- }
-
if (event.target.enclosingNodeOrSelfWithNodeName("a"))
return;
@@ -614,6 +635,7 @@
* @param {string=} url
* @param {number=} lineNumber
* @param {number=} columnNumber
+ * @this {WebInspector.ConsoleView}
*/
function addMessage(url, lineNumber, columnNumber)
{
@@ -631,6 +653,7 @@
/**
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.FunctionDetails} response
+ * @this {WebInspector.ConsoleView}
*/
function didGetDetails(error, response)
{
@@ -671,6 +694,7 @@
* @param {?WebInspector.RemoteObject} result
* @param {boolean} wasThrown
* @param {?RuntimeAgent.RemoteObject=} valueResult
+ * @this {WebInspector.ConsoleView}
*/
function printResult(result, wasThrown, valueResult)
{
@@ -689,6 +713,9 @@
WebInspector.userMetrics.ConsoleEvaluated.record();
},
+ /**
+ * @return {!Array.<!Element>}
+ */
elementsToRestoreScrollPositionsFor: function()
{
return [this.messagesElement];
@@ -872,7 +899,7 @@
/**
* @constructor
- * @extends WebInspector.ConsoleMessage
+ * @extends {WebInspector.ConsoleMessage}
*/
WebInspector.ConsoleCommand = function(text)
{
@@ -915,6 +942,7 @@
/**
* @param {!RegExp} regexObject
+ * @return {boolean}
*/
matchesRegex: function(regexObject)
{
@@ -922,6 +950,9 @@
return regexObject.test(this.text);
},
+ /**
+ * @return {!Element}
+ */
toMessageElement: function()
{
if (!this._element) {
@@ -974,6 +1005,9 @@
return false;
},
+ /**
+ * @return {!Element}
+ */
toMessageElement: function()
{
var element = WebInspector.ConsoleMessageImpl.prototype.toMessageElement.call(this);
@@ -1063,9 +1097,9 @@
}
/**
- * @type {?WebInspector.ConsoleView}
+ * @type {!WebInspector.ConsoleView}
*/
-WebInspector.consoleView = null;
+WebInspector.consoleView;
WebInspector.ConsoleMessage.create = function(source, level, message, type, url, line, column, repeatCount, parameters, stackTrace, requestId, isOutdated)
{
diff --git a/Source/devtools/front_end/ContentProvider.js b/Source/devtools/front_end/ContentProvider.js
index 46274dc..7001710 100644
--- a/Source/devtools/front_end/ContentProvider.js
+++ b/Source/devtools/front_end/ContentProvider.js
@@ -79,15 +79,10 @@
{
var regex = createSearchRegex(query, caseSensitive, isRegex);
+ var contentString = new String(content);
var result = [];
- var lineEndings = content.lineEndings();
- for (var i = 0; i < lineEndings.length; ++i) {
- var lineStart = i > 0 ? lineEndings[i - 1] + 1 : 0;
- var lineEnd = lineEndings[i];
- var lineContent = content.substring(lineStart, lineEnd);
- if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === "\r")
- lineContent = lineContent.substring(0, lineContent.length - 1)
-
+ for (var i = 0; i < contentString.lineCount(); ++i) {
+ var lineContent = contentString.lineAt(i);
regex.lastIndex = 0;
if (regex.exec(lineContent))
result.push(new WebInspector.ContentProvider.SearchMatch(i, lineContent));
diff --git a/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js b/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js
index 093d2c3..4699f9f 100644
--- a/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js
+++ b/Source/devtools/front_end/ContentProviderBasedProjectDelegate.js
@@ -137,11 +137,12 @@
/**
* @param {boolean} success
* @param {string=} newName
+ * @this {WebInspector.ContentProviderBasedProjectDelegate}
*/
function innerCallback(success, newName)
{
if (success)
- this._updateName(path, newName);
+ this._updateName(path, /** @type {string} */ (newName));
callback(success, newName);
}
},
@@ -219,8 +220,8 @@
},
/**
- * @param {Array.<string>} queries
- * @param {Array.<string>} fileQueries
+ * @param {!Array.<string>} queries
+ * @param {!Array.<string>} fileQueries
* @param {boolean} caseSensitive
* @param {boolean} isRegex
* @param {!WebInspector.Progress} progress
@@ -239,6 +240,7 @@
/**
* @param {string} path
+ * @this {WebInspector.ContentProviderBasedProjectDelegate}
*/
function filterOutContentScripts(path)
{
@@ -274,12 +276,16 @@
/**
* @param {string} path
* @param {function(boolean)} callback
+ * @this {WebInspector.ContentProviderBasedProjectDelegate}
*/
function searchInContent(path, callback)
{
var queriesToRun = queries.slice();
searchNextQuery.call(this);
+ /**
+ * @this {WebInspector.ContentProviderBasedProjectDelegate}
+ */
function searchNextQuery()
{
if (!queriesToRun.length) {
@@ -291,7 +297,8 @@
}
/**
- * @param {Array.<WebInspector.ContentProvider.SearchMatch>} searchMatches
+ * @param {!Array.<!WebInspector.ContentProvider.SearchMatch>} searchMatches
+ * @this {WebInspector.ContentProviderBasedProjectDelegate}
*/
function contentCallback(searchMatches)
{
diff --git a/Source/devtools/front_end/ContentProviders.js b/Source/devtools/front_end/ContentProviders.js
index b8f83ad..f832115 100644
--- a/Source/devtools/front_end/ContentProviders.js
+++ b/Source/devtools/front_end/ContentProviders.js
@@ -97,6 +97,7 @@
/**
* @param {?string} content
+ * @this {WebInspector.ConcatenatedScriptsContentProvider}
*/
function didRequestSource(content)
{
@@ -134,6 +135,7 @@
/**
* @param {!WebInspector.Script} script
* @param {!Array.<!PageAgent.SearchMatch>} searchMatches
+ * @this {WebInspector.ConcatenatedScriptsContentProvider}
*/
function searchCallback(script, searchMatches)
{
@@ -180,16 +182,14 @@
}
return content;
- },
-
- __proto__: WebInspector.ContentProvider.prototype
+ }
}
/**
* @constructor
+ * @implements {WebInspector.ContentProvider}
* @param {string} sourceURL
* @param {!WebInspector.ResourceType} contentType
- * @implements {WebInspector.ContentProvider}
*/
WebInspector.CompilerSourceMappingContentProvider = function(sourceURL, contentType)
{
@@ -226,6 +226,7 @@
* @param {number} statusCode
* @param {!NetworkAgent.Headers} headers
* @param {string} content
+ * @this {WebInspector.CompilerSourceMappingContentProvider}
*/
function contentLoaded(error, statusCode, headers, content)
{
@@ -261,9 +262,7 @@
callback(WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex));
}
- },
-
- __proto__: WebInspector.ContentProvider.prototype
+ }
}
/**
@@ -311,6 +310,9 @@
*/
searchInContent: function(query, caseSensitive, isRegex, callback)
{
+ /**
+ * @this {WebInspector.StaticContentProvider}
+ */
function performSearch()
{
callback(WebInspector.ContentProvider.performSearchInContent(this._content, query, caseSensitive, isRegex));
@@ -318,7 +320,5 @@
// searchInContent should call back later.
window.setTimeout(performSearch.bind(this), 0);
- },
-
- __proto__: WebInspector.ContentProvider.prototype
+ }
}
diff --git a/Source/devtools/front_end/ContextMenu.js b/Source/devtools/front_end/ContextMenu.js
index e069b1f..7c2ded1 100644
--- a/Source/devtools/front_end/ContextMenu.js
+++ b/Source/devtools/front_end/ContextMenu.js
@@ -48,11 +48,17 @@
}
WebInspector.ContextMenuItem.prototype = {
+ /**
+ * @return {number}
+ */
id: function()
{
return this._id;
},
+ /**
+ * @return {string}
+ */
type: function()
{
return this._type;
@@ -130,6 +136,7 @@
/**
* @param {boolean=} disabled
+ * @return {!WebInspector.ContextMenuItem}
*/
appendCheckboxItem: function(label, handler, checked, disabled)
{
@@ -196,6 +203,9 @@
}
WebInspector.ContextMenu.prototype = {
+ /**
+ * @return {number}
+ */
nextId: function()
{
return this._id++;
@@ -242,8 +252,15 @@
*/
appendApplicableItems: function(target)
{
- for (var i = 0; i < WebInspector.ContextMenu._providers.length; ++i) {
- var provider = WebInspector.ContextMenu._providers[i];
+ WebInspector.moduleManager.extensions(WebInspector.ContextMenu.Provider, target).forEach(processProviders.bind(this));
+
+ /**
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @this {WebInspector.ContextMenu}
+ */
+ function processProviders(extension)
+ {
+ var provider = /** @type {!WebInspector.ContextMenu.Provider} */ (extension.instance());
this.appendSeparator();
provider.appendApplicableItems(this._event, this, target);
this.appendSeparator();
@@ -267,16 +284,6 @@
appendApplicableItems: function(event, contextMenu, target) { }
}
-/**
- * @param {!WebInspector.ContextMenu.Provider} provider
- */
-WebInspector.ContextMenu.registerProvider = function(provider)
-{
- WebInspector.ContextMenu._providers.push(provider);
-}
-
-WebInspector.ContextMenu._providers = [];
-
WebInspector.contextMenuItemSelected = function(id)
{
if (WebInspector._contextMenu)
diff --git a/Source/devtools/front_end/CookieItemsView.js b/Source/devtools/front_end/CookieItemsView.js
index 05d2976..4e05774 100644
--- a/Source/devtools/front_end/CookieItemsView.js
+++ b/Source/devtools/front_end/CookieItemsView.js
@@ -116,6 +116,9 @@
var resourceURLsForDocumentURL = [];
this._totalSize = 0;
+ /**
+ * @this {WebInspector.CookieItemsView}
+ */
function populateResourcesForDocuments(resource)
{
var url = resource.documentURL.asParsedURL();
diff --git a/Source/devtools/front_end/CookiesTable.js b/Source/devtools/front_end/CookiesTable.js
index 6d88f34..7a213ac 100644
--- a/Source/devtools/front_end/CookiesTable.js
+++ b/Source/devtools/front_end/CookiesTable.js
@@ -38,7 +38,6 @@
WebInspector.CookiesTable = function(expandable, refreshCallback, selectedCallback)
{
WebInspector.View.call(this);
- this.element.className = "fill";
var readOnly = expandable;
this._refreshCallback = refreshCallback;
diff --git a/Source/devtools/front_end/CountersGraph.js b/Source/devtools/front_end/CountersGraph.js
new file mode 100644
index 0000000..f2512e3
--- /dev/null
+++ b/Source/devtools/front_end/CountersGraph.js
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2013 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.MemoryStatistics}
+ * @param {!WebInspector.TimelineView} timelineView
+ * @param {!WebInspector.TimelineModel} model
+ */
+WebInspector.CountersGraph = function(timelineView, model)
+{
+ WebInspector.MemoryStatistics.call(this, timelineView, model);
+}
+
+/**
+ * @constructor
+ * @extends {WebInspector.CounterUIBase}
+ * @param {!WebInspector.CountersGraph} memoryCountersPane
+ * @param {string} title
+ * @param {string} currentValueLabel
+ * @param {!string} color
+ * @param {!WebInspector.MemoryStatistics.Counter} counter
+ */
+WebInspector.CounterUI = function(memoryCountersPane, title, currentValueLabel, color, counter)
+{
+ WebInspector.CounterUIBase.call(this, memoryCountersPane, title, color, counter)
+ this._range = this._swatch.element.createChild("span");
+
+ this._value = memoryCountersPane._currentValuesBar.createChild("span", "memory-counter-value");
+ this._value.style.color = color;
+ this._currentValueLabel = currentValueLabel;
+ this._marker = memoryCountersPane._canvasContainer.createChild("div", "memory-counter-marker");
+ this._marker.style.backgroundColor = color;
+ this.clearCurrentValueAndMarker();
+
+ this.graphColor = color;
+ this.graphYValues = [];
+}
+
+WebInspector.CounterUI.prototype = {
+ reset: function()
+ {
+ this._range.textContent = "";
+ },
+
+ /**
+ * @param {number} minValue
+ * @param {number} maxValue
+ */
+ setRange: function(minValue, maxValue)
+ {
+ this._range.textContent = WebInspector.UIString("[%d:%d]", minValue, maxValue);
+ },
+
+ __proto__: WebInspector.CounterUIBase.prototype
+}
+
+
+WebInspector.CountersGraph.prototype = {
+ _createCurrentValuesBar: function()
+ {
+ this._currentValuesBar = this._graphsContainer.createChild("div");
+ this._currentValuesBar.id = "counter-values-bar";
+ this._graphsContainer.classList.add("dom-counters");
+ },
+
+ _createAllCounters: function()
+ {
+ this._counters = [];
+ this._counterUI = [];
+ this._createCounter(WebInspector.UIString("Documents"), WebInspector.UIString("Documents: %d"), "#d00", "documents");
+ this._createCounter(WebInspector.UIString("Nodes"), WebInspector.UIString("Nodes: %d"), "#0a0", "nodes");
+ this._createCounter(WebInspector.UIString("Listeners"), WebInspector.UIString("Listeners: %d"), "#00d", "jsEventListeners");
+ if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+ this._createCounter(WebInspector.UIString("GPU Memory"), WebInspector.UIString("GPU Memory [KB]: %d"), "#c0c", "gpuMemoryUsedKB");
+ },
+
+ /**
+ * @param {string} uiName
+ * @param {string} uiValueTemplate
+ * @param {string} color
+ * @param {string} protocolName
+ */
+ _createCounter: function(uiName, uiValueTemplate, color, protocolName)
+ {
+ var counter = new WebInspector.MemoryStatistics.Counter(protocolName);
+ this._counters.push(counter);
+ this._counterUI.push(new WebInspector.CounterUI(this, uiName, uiValueTemplate, color, counter));
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onRecordAdded: function(event)
+ {
+ /**
+ * @this {!WebInspector.CountersGraph}
+ */
+ function addStatistics(record)
+ {
+ var counters = record.counters;
+ if (!counters)
+ return;
+ var time = record.endTime || record.startTime;
+ for (var i = 0; i < this._counters.length; ++i)
+ this._counters[i].appendSample(time, counters);
+ }
+ WebInspector.TimelinePresentationModel.forAllRecords([/** @type {!TimelineAgent.TimelineEvent} */ (event.data)], null, addStatistics.bind(this));
+ this.scheduleRefresh();
+ },
+
+ draw: function()
+ {
+ WebInspector.MemoryStatistics.prototype.draw.call(this);
+ for (var i = 0; i < this._counterUI.length; i++)
+ this._drawGraph(this._counterUI[i]);
+ },
+
+ /**
+ * @param {!WebInspector.CounterUIBase} counterUI
+ */
+ _drawGraph: function(counterUI)
+ {
+ var canvas = this._canvas;
+ var ctx = canvas.getContext("2d");
+ var width = canvas.width;
+ var height = this._clippedHeight;
+ var originY = this._originY;
+ var counter = counterUI.counter;
+ var values = counter.values;
+
+ if (!values.length)
+ return;
+
+ var maxValue;
+ var minValue;
+ for (var i = counter._minimumIndex; i <= counter._maximumIndex; i++) {
+ var value = values[i];
+ if (minValue === undefined || value < minValue)
+ minValue = value;
+ if (maxValue === undefined || value > maxValue)
+ maxValue = value;
+ }
+ minValue = minValue || 0;
+ maxValue = maxValue || 1;
+
+ counterUI.setRange(minValue, maxValue);
+
+ if (!counterUI.visible)
+ return;
+
+ var yValues = counterUI.graphYValues;
+ yValues.length = this._counters.length;
+
+ var maxYRange = maxValue - minValue;
+ var yFactor = maxYRange ? height / (maxYRange) : 1;
+
+ ctx.save();
+ ctx.translate(0.5, 0.5);
+ ctx.beginPath();
+ var value = values[counter._minimumIndex];
+ var currentY = Math.round(originY + height - (value - minValue) * yFactor);
+ ctx.moveTo(0, currentY);
+ for (var i = counter._minimumIndex; i <= counter._maximumIndex; i++) {
+ var x = Math.round(counter.x[i]);
+ ctx.lineTo(x, currentY);
+ var currentValue = values[i];
+ if (typeof currentValue !== "undefined")
+ value = currentValue;
+ currentY = Math.round(originY + height - (value - minValue) * yFactor);
+ ctx.lineTo(x, currentY);
+ yValues[i] = currentY;
+ }
+ ctx.lineTo(width, currentY);
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = counterUI.graphColor;
+ ctx.stroke();
+ ctx.closePath();
+ ctx.restore();
+ },
+
+ __proto__: WebInspector.MemoryStatistics.prototype
+}
+
diff --git a/Source/devtools/front_end/DOMAgent.js b/Source/devtools/front_end/DOMAgent.js
index 970c6b3..9e4a4fb 100644
--- a/Source/devtools/front_end/DOMAgent.js
+++ b/Source/devtools/front_end/DOMAgent.js
@@ -83,6 +83,11 @@
this._templateContent.parentNode = this;
}
+ if (payload.importedDocument) {
+ this._importedDocument = new WebInspector.DOMNode(this._domAgent, this.ownerDocument, true, payload.importedDocument);
+ this._importedDocument.parentNode = this;
+ }
+
if (payload.children)
this._setChildrenPayload(payload.children);
@@ -162,7 +167,7 @@
},
/**
- * @return {!WebInspector.DOMNode}
+ * @return {?WebInspector.DOMNode}
*/
templateContent: function()
{
@@ -170,6 +175,14 @@
},
/**
+ * @return {?WebInspector.DOMNode}
+ */
+ importedDocument: function()
+ {
+ return this._importedDocument;
+ },
+
+ /**
* @return {number}
*/
nodeType: function()
@@ -312,7 +325,8 @@
removeAttribute: function(name, callback)
{
/**
- * @param {?Protocol.Error} error
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.DOMNode}
*/
function mycallback(error)
{
@@ -682,11 +696,20 @@
this.parentNode._updateDescendantUserPropertyCount(name, -1);
},
+ /**
+ * @param {string} name
+ * @return {?T}
+ * @template T
+ */
getUserProperty: function(name)
{
- return this._userProperties ? this._userProperties[name] : null;
+ return (this._userProperties && this._userProperties[name]) || null;
},
+ /**
+ * @param {string} name
+ * @return {number}
+ */
descendantUserPropertyCount: function(name)
{
return this._descendantUserPropertyCounters && this._descendantUserPropertyCounters[name] ? this._descendantUserPropertyCounters[name] : 0;
@@ -718,8 +741,7 @@
{
WebInspector.DOMNode.call(this, domAgent, this, false, payload);
this.documentURL = payload.documentURL || "";
- this.baseURL = /** @type {string} */ (payload.baseURL);
- console.assert(this.baseURL);
+ this.baseURL = payload.baseURL || "";
this.xmlVersion = payload.xmlVersion;
this._listeners = {};
}
@@ -755,8 +777,7 @@
ChildNodeCountUpdated: "ChildNodeCountUpdated",
UndoRedoRequested: "UndoRedoRequested",
UndoRedoCompleted: "UndoRedoCompleted",
- InspectNodeRequested: "InspectNodeRequested",
- PseudoStateChanged: "PseudoStateChanged"
+ InspectNodeRequested: "InspectNodeRequested"
}
WebInspector.DOMAgent.prototype = {
@@ -864,6 +885,9 @@
{
var callbackWrapper = this._wrapClientCallback(callback);
+ /**
+ * @this {WebInspector.DOMAgent}
+ */
function onDocumentAvailable()
{
if (this._document)
@@ -913,7 +937,7 @@
this._attributeLoadNodeIds[nodeIds[i]] = true;
if ("_loadNodeAttributesTimeout" in this)
return;
- this._loadNodeAttributesTimeout = setTimeout(this._loadNodeAttributes.bind(this), 0);
+ this._loadNodeAttributesTimeout = setTimeout(this._loadNodeAttributes.bind(this), 20);
},
_loadNodeAttributes: function()
@@ -1116,17 +1140,6 @@
},
/**
- * @param {!DOMAgent.NodeId} elementId
- */
- _pseudoStateChanged: function(elementId)
- {
- var node = this._idToDOMNode[elementId];
- if (!node)
- return;
- this.dispatchEventToListeners(WebInspector.DOMAgent.Events.PseudoStateChanged, node);
- },
-
- /**
* @param {!WebInspector.DOMNode} node
*/
_unbind: function(node)
@@ -1173,6 +1186,7 @@
* @param {?Protocol.Error} error
* @param {string} searchId
* @param {number} resultsCount
+ * @this {WebInspector.DOMAgent}
*/
function callback(error, searchId, resultsCount)
{
@@ -1184,7 +1198,7 @@
/**
* @param {number} index
- * @param {?function(?DOMAgent.Node)} callback
+ * @param {?function(?WebInspector.DOMNode)} callback
*/
searchResult: function(index, callback)
{
@@ -1196,6 +1210,7 @@
/**
* @param {?Protocol.Error} error
* @param {!Array.<number>} nodeIds
+ * @this {WebInspector.DOMAgent}
*/
function searchResultsCallback(error, nodeIds)
{
@@ -1207,7 +1222,7 @@
if (nodeIds.length != 1)
return;
- callback(this._idToDOMNode[nodeIds[0]]);
+ callback(this.nodeForId(nodeIds[0]));
}
},
@@ -1274,6 +1289,9 @@
*/
setInspectModeEnabled: function(enabled, inspectShadowDOM, callback)
{
+ /**
+ * @this {WebInspector.DOMAgent}
+ */
function onDocumentAvailable()
{
this._highlighter.setInspectModeEnabled(enabled, inspectShadowDOM, this._buildHighlightConfig(), callback);
@@ -1315,6 +1333,10 @@
*/
_markRevision: function(node, callback)
{
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.DOMAgent}
+ */
function wrapperFunction(error)
{
if (!error)
@@ -1352,6 +1374,11 @@
}
}
+ /**
+ * @param {?Protocol.Error} error
+ * @param {string} scriptId
+ * @this {WebInspector.DOMAgent}
+ */
function scriptAddedCallback(error, scriptId)
{
delete this._addTouchEventsScriptInjecting;
@@ -1373,6 +1400,10 @@
*/
undo: function(callback)
{
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.DOMAgent}
+ */
function mycallback(error)
{
this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoCompleted);
@@ -1388,6 +1419,10 @@
*/
redo: function(callback)
{
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.DOMAgent}
+ */
function mycallback(error)
{
this.dispatchEventToListeners(WebInspector.DOMAgent.Events.UndoRedoCompleted);
@@ -1540,14 +1575,6 @@
pseudoElementRemoved: function(parentId, pseudoElementId)
{
this._domAgent._pseudoElementRemoved(parentId, pseudoElementId);
- },
-
- /**
- * @param {!DOMAgent.NodeId} elementId
- */
- pseudoStateChanged: function(elementId)
- {
- this._domAgent._pseudoStateChanged(elementId);
}
}
@@ -1569,7 +1596,7 @@
* @param {boolean} enabled
* @param {boolean} inspectShadowDOM
* @param {!DOMAgent.HighlightConfig} config
- * @param {function(?Protocol.Error)} callback
+ * @param {function(?Protocol.Error)=} callback
*/
setInspectModeEnabled: function(enabled, inspectShadowDOM, config, callback) {}
}
@@ -1599,7 +1626,7 @@
* @param {boolean} enabled
* @param {boolean} inspectShadowDOM
* @param {!DOMAgent.HighlightConfig} config
- * @param {function(?Protocol.Error)} callback
+ * @param {function(?Protocol.Error)=} callback
*/
setInspectModeEnabled: function(enabled, inspectShadowDOM, config, callback)
{
@@ -1608,6 +1635,6 @@
}
/**
- * @type {?WebInspector.DOMAgent}
+ * @type {!WebInspector.DOMAgent}
*/
-WebInspector.domAgent = null;
+WebInspector.domAgent;
diff --git a/Source/devtools/front_end/DOMBreakpointsSidebarPane.js b/Source/devtools/front_end/DOMBreakpointsSidebarPane.js
index cbe2072..93d4edc 100644
--- a/Source/devtools/front_end/DOMBreakpointsSidebarPane.js
+++ b/Source/devtools/front_end/DOMBreakpointsSidebarPane.js
@@ -82,6 +82,10 @@
nodeBreakpoints[element._type] = true;
}
+ /**
+ * @param {string} type
+ * @this {WebInspector.DOMBreakpointsSidebarPane}
+ */
function toggleBreakpoint(type)
{
if (!nodeBreakpoints[type])
@@ -109,6 +113,7 @@
/**
* @param {?DOMAgent.NodeId} targetNodeId
+ * @this {WebInspector.DOMBreakpointsSidebarPane}
*/
function didPushNodeToFrontend(targetNodeId)
{
@@ -249,6 +254,10 @@
_contextMenu: function(node, type, event)
{
var contextMenu = new WebInspector.ContextMenu(event);
+
+ /**
+ * @this {WebInspector.DOMBreakpointsSidebarPane}
+ */
function removeBreakpoint()
{
this._removeBreakpoint(node, type);
@@ -315,6 +324,7 @@
/**
* @param {string} path
* @param {?DOMAgent.NodeId} nodeId
+ * @this {WebInspector.DOMBreakpointsSidebarPane}
*/
function didPushNodeByPathToFrontend(path, nodeId)
{
@@ -343,6 +353,7 @@
/**
* @param {!WebInspector.Panel} panel
+ * @return {!WebInspector.DOMBreakpointsSidebarPane.Proxy}
*/
createProxy: function(panel)
{
@@ -412,6 +423,6 @@
}
/**
- * @type {?WebInspector.DOMBreakpointsSidebarPane}
+ * @type {!WebInspector.DOMBreakpointsSidebarPane}
*/
-WebInspector.domBreakpointsSidebarPane = null;
+WebInspector.domBreakpointsSidebarPane;
diff --git a/Source/devtools/front_end/DOMCountersGraph.js b/Source/devtools/front_end/DOMCountersGraph.js
deleted file mode 100644
index 5d25422..0000000
--- a/Source/devtools/front_end/DOMCountersGraph.js
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (C) 2013 Google 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:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE COPYRIGHT
- * OWNER 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.MemoryStatistics}
- * @param {!WebInspector.TimelinePanel} timelinePanel
- * @param {!WebInspector.TimelineModel} model
- */
-WebInspector.DOMCountersGraph = function(timelinePanel, model)
-{
- WebInspector.MemoryStatistics.call(this, timelinePanel, model);
-}
-
-/**
- * @constructor
- * @extends {WebInspector.CounterUIBase}
- * @param {!WebInspector.DOMCountersGraph} memoryCountersPane
- * @param {string} title
- * @param {string} currentValueLabel
- * @param {!Array.<number>} rgb
- * @param {function(!WebInspector.DOMCountersGraph.Counter):number} valueGetter
- */
-WebInspector.DOMCounterUI = function(memoryCountersPane, title, currentValueLabel, rgb, valueGetter)
-{
- var swatchColor = "rgb(" + rgb.join(",") + ")";
- WebInspector.CounterUIBase.call(this, memoryCountersPane, title, swatchColor, valueGetter)
- this._range = this._swatch.element.createChild("span");
-
- this._value = memoryCountersPane._currentValuesBar.createChild("span", "memory-counter-value");
- this._value.style.color = swatchColor;
- this._currentValueLabel = currentValueLabel;
-
- this.graphColor = "rgba(" + rgb.join(",") + ",0.8)";
- this.graphYValues = [];
-}
-
-/**
- * @constructor
- * @extends {WebInspector.MemoryStatistics.Counter}
- * @param {number} time
- * @param {number} documentCount
- * @param {number} nodeCount
- * @param {number} listenerCount
- */
-WebInspector.DOMCountersGraph.Counter = function(time, documentCount, nodeCount, listenerCount, usedGPUMemoryKBytes)
-{
- WebInspector.MemoryStatistics.Counter.call(this, time);
- this.documentCount = documentCount;
- this.nodeCount = nodeCount;
- this.listenerCount = listenerCount;
- this.usedGPUMemoryKBytes = usedGPUMemoryKBytes;
-}
-
-WebInspector.DOMCounterUI.prototype = {
- /**
- * @param {number} minValue
- * @param {number} maxValue
- */
- setRange: function(minValue, maxValue)
- {
- this._range.textContent = WebInspector.UIString("[%d:%d]", minValue, maxValue);
- },
-
- updateCurrentValue: function(countersEntry)
- {
- this._value.textContent = WebInspector.UIString(this._currentValueLabel, this.valueGetter(countersEntry));
- },
-
- clearCurrentValueAndMarker: function(ctx)
- {
- this._value.textContent = "";
- this.restoreImageUnderMarker(ctx);
- },
-
- /**
- * @param {!CanvasRenderingContext2D} ctx
- * @param {number} x
- * @param {number} y
- * @param {number} radius
- */
- saveImageUnderMarker: function(ctx, x, y, radius)
- {
- const w = radius + 1;
- var imageData = ctx.getImageData(x - w, y - w, 2 * w, 2 * w);
- this._imageUnderMarker = {
- x: x - w,
- y: y - w,
- imageData: imageData
- };
- },
-
- /**
- * @param {!CanvasRenderingContext2D} ctx
- */
- restoreImageUnderMarker: function(ctx)
- {
- if (!this.visible)
- return;
- if (this._imageUnderMarker)
- ctx.putImageData(this._imageUnderMarker.imageData, this._imageUnderMarker.x, this._imageUnderMarker.y);
- this.discardImageUnderMarker();
- },
-
- discardImageUnderMarker: function()
- {
- delete this._imageUnderMarker;
- },
-
- __proto__: WebInspector.CounterUIBase.prototype
-}
-
-
-WebInspector.DOMCountersGraph.prototype = {
- _createCurrentValuesBar: function()
- {
- this._currentValuesBar = this._canvasContainer.createChild("div");
- this._currentValuesBar.id = "counter-values-bar";
- this._canvasContainer.classList.add("dom-counters");
- },
-
- /**
- * @return {!Element}
- */
- resizeElement: function()
- {
- return this._currentValuesBar;
- },
-
- /**
- * @return {!Array.<!WebInspector.DOMCounterUI>}
- */
- _createCounterUIList: function()
- {
- function getDocumentCount(entry)
- {
- return entry.documentCount;
- }
- function getNodeCount(entry)
- {
- return entry.nodeCount;
- }
- function getListenerCount(entry)
- {
- return entry.listenerCount;
- }
- function getUsedGPUMemoryKBytes(entry)
- {
- return entry.usedGPUMemoryKBytes || 0;
- }
- var counterUIs = [
- new WebInspector.DOMCounterUI(this, "Documents", "Documents: %d", [100, 0, 0], getDocumentCount),
- new WebInspector.DOMCounterUI(this, "Nodes", "Nodes: %d", [0, 100, 0], getNodeCount),
- new WebInspector.DOMCounterUI(this, "Listeners", "Listeners: %d", [0, 0, 100], getListenerCount)
- ];
- if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
- counterUIs.push(new WebInspector.DOMCounterUI(this, "GPU Memory", "GPU Memory [KB]: %d", [200, 0, 200], getUsedGPUMemoryKBytes));
- return counterUIs;
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _onRecordAdded: function(event)
- {
- /**
- * @param {!Array.<!T>} array
- * @param {!S} item
- * @param {!function(!T,!S):!number} comparator
- * @return {!number}
- * @template T,S
- */
- function findInsertionLocation(array, item, comparator)
- {
- var index = array.length;
- while (index > 0 && comparator(array[index - 1], item) > 0)
- --index;
- return index;
- }
-
- function addStatistics(record)
- {
- var counters = record["counters"];
- var isGPURecord = record.data && typeof record.data["usedGPUMemoryBytes"] !== "undefined";
- if (isGPURecord) {
- counters = counters || {
- "startTime": record.startTime,
- "endTime": record.endTime
- };
- counters["usedGPUMemoryKBytes"] = Math.round(record.data["usedGPUMemoryBytes"] / 1024);
- }
- if (!counters)
- return;
-
- var time = record.endTime || record.startTime;
- var counter = new WebInspector.DOMCountersGraph.Counter(
- time,
- counters["documents"],
- counters["nodes"],
- counters["jsEventListeners"],
- counters["usedGPUMemoryKBytes"]
- );
-
- function compare(record, time)
- {
- return record.time - time;
- }
- var index = findInsertionLocation(this._counters, time, compare);
- this._counters.splice(index, 0, counter);
- if (isGPURecord) {
- // Populate missing values from preceeding records.
- // FIXME: Refactor the code to make each WebInspector.DOMCountersGraph.Counter
- // be responsible for a single graph to avoid such synchronizations.
- for (var i = index - 1; i >= 0 && typeof this._counters[i].usedGPUMemoryKBytes === "undefined"; --i) { }
- var usedGPUMemoryKBytes = this._counters[i >= 0 ? i : index].usedGPUMemoryKBytes;
- for (i = Math.max(i, 0); i < index; ++i)
- this._counters[i].usedGPUMemoryKBytes = usedGPUMemoryKBytes;
- var copyFrom = index > 0 ? index - 1 : index + 1;
- if (copyFrom < this._counters.length) {
- this._counters[index].documentCount = this._counters[copyFrom].documentCount;
- this._counters[index].nodeCount = this._counters[copyFrom].nodeCount;
- this._counters[index].listenerCount = this._counters[copyFrom].listenerCount;
- } else {
- this._counters[index].documentCount = 0;
- this._counters[index].nodeCount = 0;
- this._counters[index].listenerCount = 0;
- }
- }
- }
- WebInspector.TimelinePresentationModel.forAllRecords([event.data], null, addStatistics.bind(this));
- },
-
- draw: function()
- {
- WebInspector.MemoryStatistics.prototype.draw.call(this);
- for (var i = 0; i < this._counterUI.length; i++)
- this._drawGraph(this._counterUI[i]);
- },
-
- /**
- * @param {!CanvasRenderingContext2D} ctx
- */
- _restoreImageUnderMarker: function(ctx)
- {
- for (var i = 0; i < this._counterUI.length; i++) {
- var counterUI = this._counterUI[i];
- if (!counterUI.visible)
- continue;
- counterUI.restoreImageUnderMarker(ctx);
- }
- },
-
- /**
- * @param {!CanvasRenderingContext2D} ctx
- * @param {number} x
- * @param {number} index
- */
- _saveImageUnderMarker: function(ctx, x, index)
- {
- const radius = 2;
- for (var i = 0; i < this._counterUI.length; i++) {
- var counterUI = this._counterUI[i];
- if (!counterUI.visible)
- continue;
- var y = counterUI.graphYValues[index];
- counterUI.saveImageUnderMarker(ctx, x, y, radius);
- }
- },
-
- /**
- * @param {!CanvasRenderingContext2D} ctx
- * @param {number} x
- * @param {number} index
- */
- _drawMarker: function(ctx, x, index)
- {
- this._saveImageUnderMarker(ctx, x, index);
- const radius = 2;
- for (var i = 0; i < this._counterUI.length; i++) {
- var counterUI = this._counterUI[i];
- if (!counterUI.visible)
- continue;
- var y = counterUI.graphYValues[index];
- ctx.beginPath();
- ctx.arc(x + 0.5, y + 0.5, radius, 0, Math.PI * 2, true);
- ctx.lineWidth = 1;
- ctx.fillStyle = counterUI.graphColor;
- ctx.strokeStyle = counterUI.graphColor;
- ctx.fill();
- ctx.stroke();
- ctx.closePath();
- }
- },
-
- /**
- * @param {!WebInspector.CounterUIBase} counterUI
- */
- _drawGraph: function(counterUI)
- {
- var canvas = this._canvas;
- var ctx = canvas.getContext("2d");
- var width = canvas.width;
- var height = this._clippedHeight;
- var originY = this._originY;
- var valueGetter = counterUI.valueGetter;
-
- if (!this._counters.length)
- return;
-
- var maxValue;
- var minValue;
- for (var i = this._minimumIndex; i <= this._maximumIndex; i++) {
- var value = valueGetter(this._counters[i]);
- if (minValue === undefined || value < minValue)
- minValue = value;
- if (maxValue === undefined || value > maxValue)
- maxValue = value;
- }
-
- counterUI.setRange(minValue, maxValue);
-
- if (!counterUI.visible)
- return;
-
- var yValues = counterUI.graphYValues;
- yValues.length = this._counters.length;
-
- var maxYRange = maxValue - minValue;
- var yFactor = maxYRange ? height / (maxYRange) : 1;
-
- ctx.save();
- ctx.translate(0.5, 0.5);
- ctx.beginPath();
- var currentY = Math.round(originY + (height - (valueGetter(this._counters[this._minimumIndex]) - minValue) * yFactor));
- ctx.moveTo(0, currentY);
- for (var i = this._minimumIndex; i <= this._maximumIndex; i++) {
- var x = Math.round(this._counters[i].x);
- ctx.lineTo(x, currentY);
- currentY = Math.round(originY + (height - (valueGetter(this._counters[i]) - minValue) * yFactor));
- ctx.lineTo(x, currentY);
- yValues[i] = currentY;
- }
- ctx.lineTo(width, currentY);
- ctx.lineWidth = 1;
- ctx.strokeStyle = counterUI.graphColor;
- ctx.stroke();
- ctx.closePath();
- ctx.restore();
- },
-
- _discardImageUnderMarker: function()
- {
- for (var i = 0; i < this._counterUI.length; i++)
- this._counterUI[i].discardImageUnderMarker();
- },
-
- __proto__: WebInspector.MemoryStatistics.prototype
-}
-
diff --git a/Source/devtools/front_end/DOMExtension.js b/Source/devtools/front_end/DOMExtension.js
index 82bf800..b9629db 100644
--- a/Source/devtools/front_end/DOMExtension.js
+++ b/Source/devtools/front_end/DOMExtension.js
@@ -166,16 +166,21 @@
/**
* @param {number|undefined} x
* @param {number|undefined} y
+ * @param {!Element=} relativeTo
*/
-Element.prototype.positionAt = function(x, y)
+Element.prototype.positionAt = function(x, y, relativeTo)
{
+ var shift = {x: 0, y: 0};
+ if (relativeTo)
+ shift = relativeTo.boxInWindow(this.ownerDocument.defaultView);
+
if (typeof x === "number")
- this.style.setProperty("left", x + "px");
+ this.style.setProperty("left", (shift.x + x) + "px");
else
this.style.removeProperty("left");
if (typeof y === "number")
- this.style.setProperty("top", y + "px");
+ this.style.setProperty("top", (shift.y + y) + "px");
else
this.style.removeProperty("top");
}
@@ -368,6 +373,25 @@
}
/**
+ * @param {!AnchorBox} box
+ * @return {!AnchorBox}
+ */
+AnchorBox.prototype.relativeTo = function(box)
+{
+ return new AnchorBox(
+ this.x - box.x, this.y - box.y, this.width, this.height);
+};
+
+/**
+ * @param {!Element} element
+ * @return {!AnchorBox}
+ */
+AnchorBox.prototype.relativeToElement = function(element)
+{
+ return this.relativeTo(element.boxInWindow(element.ownerDocument.defaultView));
+};
+
+/**
* @param {!Window} targetWindow
* @return {!AnchorBox}
*/
@@ -545,6 +569,9 @@
return this.parentNode;
}
+/**
+ * @return {boolean}
+ */
function isEnterKey(event) {
// Check if in IME.
return event.keyCode !== 229 && event.keyIdentifier === "Enter";
@@ -554,45 +581,3 @@
{
e.consume();
}
-
-/**
- * Mutation observers leak memory. Keep track of them and disconnect
- * on unload.
- * @constructor
- * @param {function(!Array.<!WebKitMutation>)} handler
- */
-function NonLeakingMutationObserver(handler)
-{
- this._observer = new WebKitMutationObserver(handler);
- NonLeakingMutationObserver._instances.push(this);
- if (!NonLeakingMutationObserver._unloadListener) {
- NonLeakingMutationObserver._unloadListener = function() {
- while (NonLeakingMutationObserver._instances.length)
- NonLeakingMutationObserver._instances[NonLeakingMutationObserver._instances.length - 1].disconnect();
- };
- window.addEventListener("unload", NonLeakingMutationObserver._unloadListener, false);
- }
-}
-
-NonLeakingMutationObserver._instances = [];
-
-NonLeakingMutationObserver.prototype = {
- /**
- * @param {!Element} element
- * @param {!Object} config
- */
- observe: function(element, config)
- {
- if (this._observer)
- this._observer.observe(element, config);
- },
-
- disconnect: function()
- {
- if (this._observer)
- this._observer.disconnect();
- NonLeakingMutationObserver._instances.remove(this);
- delete this._observer;
- }
-}
-
diff --git a/Source/devtools/front_end/DOMPresentationUtils.js b/Source/devtools/front_end/DOMPresentationUtils.js
index d412f9d..bf119de 100644
--- a/Source/devtools/front_end/DOMPresentationUtils.js
+++ b/Source/devtools/front_end/DOMPresentationUtils.js
@@ -164,15 +164,25 @@
* @param {boolean=} justSelector
* @return {string}
*/
-WebInspector.DOMPresentationUtils.appropriateSelectorFor = function(node, justSelector)
+WebInspector.DOMPresentationUtils.fullQualifiedSelector = function(node, justSelector)
+{
+ if (node.nodeType() !== Node.ELEMENT_NODE)
+ return node.localName() || node.nodeName().toLowerCase();
+ return WebInspector.DOMPresentationUtils.cssPath(node, justSelector);
+}
+
+/**
+ * @param {!WebInspector.DOMNode} node
+ * @return {string}
+ */
+WebInspector.DOMPresentationUtils.simpleSelector = function(node)
{
var lowerCaseName = node.localName() || node.nodeName().toLowerCase();
if (node.nodeType() !== Node.ELEMENT_NODE)
return lowerCaseName;
if (lowerCaseName === "input" && node.getAttribute("type") && !node.getAttribute("id") && !node.getAttribute("class"))
return lowerCaseName + "[type=\"" + node.getAttribute("type") + "\"]";
-
- return WebInspector.DOMPresentationUtils.cssPath(node, justSelector);
+ return WebInspector.DOMPresentationUtils._cssPathStep(node, false, true).value;
}
/**
@@ -188,7 +198,7 @@
var steps = [];
var contextNode = node;
while (contextNode) {
- var step = WebInspector.DOMPresentationUtils._cssPathValue(contextNode, optimized);
+ var step = WebInspector.DOMPresentationUtils._cssPathStep(contextNode, !!optimized, contextNode === node);
if (!step)
break; // Error - bail out early.
steps.push(step);
@@ -203,10 +213,11 @@
/**
* @param {!WebInspector.DOMNode} node
- * @param {boolean=} optimized
+ * @param {boolean} optimized
+ * @param {boolean} isTargetNode
* @return {?WebInspector.DOMNodePathStep}
*/
-WebInspector.DOMPresentationUtils._cssPathValue = function(node, optimized)
+WebInspector.DOMPresentationUtils._cssPathStep = function(node, optimized, isTargetNode)
{
if (node.nodeType() !== Node.ELEMENT_NODE)
return null;
@@ -312,11 +323,15 @@
var needsClassNames = false;
var needsNthChild = false;
var ownIndex = -1;
+ var elementIndex = -1;
var siblings = parent.children();
for (var i = 0; (ownIndex === -1 || !needsNthChild) && i < siblings.length; ++i) {
var sibling = siblings[i];
+ if (sibling.nodeType() !== Node.ELEMENT_NODE)
+ continue;
+ elementIndex += 1;
if (sibling === node) {
- ownIndex = i;
+ ownIndex = elementIndex;
continue;
}
if (needsNthChild)
@@ -347,6 +362,8 @@
}
var result = nodeName;
+ if (isTargetNode && nodeName.toLowerCase() === "input" && node.getAttribute("type") && !node.getAttribute("id") && !node.getAttribute("class"))
+ result += "[type=\"" + node.getAttribute("type") + "\"]";
if (needsNthChild) {
result += ":nth-child(" + (ownIndex + 1) + ")";
} else if (needsClassNames) {
diff --git a/Source/devtools/front_end/DOMStorage.js b/Source/devtools/front_end/DOMStorage.js
index ead9de5..edce4b6 100644
--- a/Source/devtools/front_end/DOMStorage.js
+++ b/Source/devtools/front_end/DOMStorage.js
@@ -306,6 +306,6 @@
}
/**
- * @type {?WebInspector.DOMStorageModel}
+ * @type {!WebInspector.DOMStorageModel}
*/
-WebInspector.domStorageModel = null;
+WebInspector.domStorageModel;
diff --git a/Source/devtools/front_end/DOMSyntaxHighlighter.js b/Source/devtools/front_end/DOMSyntaxHighlighter.js
index 47847e5..8441dbd 100644
--- a/Source/devtools/front_end/DOMSyntaxHighlighter.js
+++ b/Source/devtools/front_end/DOMSyntaxHighlighter.js
@@ -33,12 +33,16 @@
*/
WebInspector.DOMSyntaxHighlighter = function(mimeType, stripExtraWhitespace)
{
- loadScript("CodeMirrorTextEditor.js");
this._mimeType = mimeType;
this._stripExtraWhitespace = stripExtraWhitespace;
}
WebInspector.DOMSyntaxHighlighter.prototype = {
+ /**
+ * @param {string} content
+ * @param {string} className
+ * @return {!Element}
+ */
createSpan: function(content, className)
{
var span = document.createElement("span");
@@ -56,9 +60,10 @@
/**
* @param {string} token
- * @param {string} tokenType
+ * @param {?string} tokenType
* @param {number} column
* @param {number} newColumn
+ * @this {WebInspector.DOMSyntaxHighlighter}
*/
function processToken(token, tokenType, column, newColumn)
{
@@ -73,7 +78,7 @@
plainTextStart = newColumn;
}
- var tokenize = WebInspector.CodeMirrorUtils.createTokenizer(this._mimeType);
+ var tokenize = WebInspector.moduleManager.instance(WebInspector.TokenizerFactory).createTokenizer(this._mimeType);
for (var i = lines[0].length ? 0 : 1; i < lines.length; ++i) {
var line = lines[i];
var plainTextStart = 0;
diff --git a/Source/devtools/front_end/DataGrid.js b/Source/devtools/front_end/DataGrid.js
index 3680c8e..d9fb47e 100644
--- a/Source/devtools/front_end/DataGrid.js
+++ b/Source/devtools/front_end/DataGrid.js
@@ -43,6 +43,9 @@
this._headerTable = document.createElement("table");
this._headerTable.className = "header";
+ /**
+ * @type {!Object.<string, !Element>}
+ */
this._headerTableHeaders = {};
this._dataTable = document.createElement("table");
@@ -192,7 +195,7 @@
for (var i = 0; i < length; ++i)
dataGrid.rootNode().appendChild(nodes[i]);
- dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, sortDataGrid, this);
+ dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, sortDataGrid);
function sortDataGrid()
{
@@ -288,7 +291,7 @@
this._editingNode.select();
var element = this._editingNode._element.children[columnOrdinal];
- WebInspector.startEditing(element, this._startEditingConfig(element));
+ WebInspector.InplaceEditor.startEditing(element, this._startEditingConfig(element));
window.getSelection().setBaseAndExtent(element, 0, element, 1);
},
@@ -310,7 +313,7 @@
return this._startEditingColumnOfDataGridNode(this._editingNode, this._nextEditableColumn(-1));
this._editing = true;
- WebInspector.startEditing(element, this._startEditingConfig(element));
+ WebInspector.InplaceEditor.startEditing(element, this._startEditingConfig(element));
window.getSelection().setBaseAndExtent(element, 0, element, 1);
},
@@ -322,7 +325,7 @@
_startEditingConfig: function(element)
{
- return new WebInspector.EditingConfig(this._editingCommitted.bind(this), this._editingCancelled.bind(this), element.textContent);
+ return new WebInspector.InplaceEditor.Config(this._editingCommitted.bind(this), this._editingCancelled.bind(this), element.textContent);
},
_editingCommitted: function(element, newText, oldText, context, moveDirection)
@@ -336,6 +339,10 @@
var textBeforeEditing = this._editingNode.data[columnIdentifier];
var currentEditingNode = this._editingNode;
+ /**
+ * @param {boolean} wasChange
+ * @this {WebInspector.DataGrid}
+ */
function moveToNextIfNeeded(wasChange) {
if (!moveDirection)
return;
@@ -690,6 +697,9 @@
return this._scrollContainer;
},
+ /**
+ * @return {boolean}
+ */
isScrolledToLastRow: function()
{
return this._scrollContainer.isScrolledToBottom();
@@ -945,6 +955,10 @@
this._sortColumnCell.classList.add("sort-" + sortOrder);
},
+ /**
+ * @param {string} columnIdentifier
+ * @return {!Element}
+ */
headerTableHeader: function(columnIdentifier)
{
return this._headerTableHeaders[columnIdentifier];
diff --git a/Source/devtools/front_end/Database.js b/Source/devtools/front_end/Database.js
index 1f3d156..933a70e 100644
--- a/Source/devtools/front_end/Database.js
+++ b/Source/devtools/front_end/Database.js
@@ -202,6 +202,6 @@
}
/**
- * @type {?WebInspector.DatabaseModel}
+ * @type {!WebInspector.DatabaseModel}
*/
-WebInspector.databaseModel = null;
+WebInspector.databaseModel;
diff --git a/Source/devtools/front_end/DatabaseQueryView.js b/Source/devtools/front_end/DatabaseQueryView.js
index bded7b9..13f8647 100644
--- a/Source/devtools/front_end/DatabaseQueryView.js
+++ b/Source/devtools/front_end/DatabaseQueryView.js
@@ -103,6 +103,9 @@
this.prompt.clearAutoComplete();
+ /**
+ * @this {WebInspector.DatabaseQueryView}
+ */
function moveBackIfOutside()
{
delete this._selectionTimeout;
diff --git a/Source/devtools/front_end/DebuggerModel.js b/Source/devtools/front_end/DebuggerModel.js
index ce79212..d07b17b 100644
--- a/Source/devtools/front_end/DebuggerModel.js
+++ b/Source/devtools/front_end/DebuggerModel.js
@@ -43,11 +43,10 @@
/** @type {!Object.<!string, !Array.<!WebInspector.Script>>} */
this._scriptsBySourceURL = {};
- this._canSetScriptSource = false;
this._breakpointsActive = true;
- WebInspector.settings.pauseOnExceptionStateString = WebInspector.settings.createSetting("pauseOnExceptionStateString", WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions);
- WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged, this);
+ WebInspector.settings.pauseOnExceptionEnabled.addChangeListener(this._pauseOnExceptionStateChanged, this);
+ WebInspector.settings.pauseOnCaughtException.addChangeListener(this._pauseOnExceptionStateChanged, this);
WebInspector.settings.enableAsyncStackTraces.addChangeListener(this._asyncStackTracesStateChanged, this);
@@ -56,7 +55,11 @@
WebInspector.DebuggerModel.applySkipStackFrameSettings();
}
-// Keep these in sync with WebCore::ScriptDebugServer
+/**
+ * Keep these in sync with WebCore::ScriptDebugServer
+ *
+ * @enum {string}
+ */
WebInspector.DebuggerModel.PauseOnExceptionsState = {
DontPauseOnExceptions : "none",
PauseOnAllExceptions : "all",
@@ -115,11 +118,6 @@
if (this._debuggerEnabled)
return;
- function callback(error, result)
- {
- this._canSetScriptSource = result;
- }
- DebuggerAgent.canSetScriptSource(callback.bind(this));
DebuggerAgent.enable(this._debuggerWasEnabled.bind(this));
},
@@ -156,14 +154,6 @@
this._skipAllPausesTimeout = setTimeout(this.skipAllPauses.bind(this, false), timeout);
},
- /**
- * @return {boolean}
- */
- canSetScriptSource: function()
- {
- return this._canSetScriptSource;
- },
-
_debuggerWasEnabled: function()
{
this._debuggerEnabled = true;
@@ -174,13 +164,21 @@
_pauseOnExceptionStateChanged: function()
{
- DebuggerAgent.setPauseOnExceptions(WebInspector.settings.pauseOnExceptionStateString.get());
+ var state;
+ if (!WebInspector.settings.pauseOnExceptionEnabled.get()) {
+ state = WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions;
+ } else if (WebInspector.settings.pauseOnCaughtException.get()) {
+ state = WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions;
+ } else {
+ state = WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions;
+ }
+ DebuggerAgent.setPauseOnExceptions(state);
},
_asyncStackTracesStateChanged: function()
{
const maxAsyncStackChainDepth = 4;
- var enabled = WebInspector.settings.enableAsyncStackTraces.get();
+ var enabled = WebInspector.settings.enableAsyncStackTraces.get() && WebInspector.experimentsSettings.asyncStackTraces.isEnabled();
DebuggerAgent.setAsyncCallStackDepth(enabled ? maxAsyncStackChainDepth : 0);
},
@@ -206,6 +204,7 @@
/**
* @param {!WebInspector.DebuggerModel.Location} requestedLocation
* @param {?string} error
+ * @this {WebInspector.DebuggerModel}
*/
function callback(requestedLocation, error)
{
@@ -602,6 +601,7 @@
/**
* @param {?RuntimeAgent.RemoteObject} result
* @param {boolean=} wasThrown
+ * @this {WebInspector.DebuggerModel}
*/
function didEvaluate(result, wasThrown)
{
@@ -970,6 +970,7 @@
/**
* @param {?string} error
* @param {!Array.<!DebuggerAgent.Location>=} stepInPositions
+ * @this {WebInspector.DebuggerModel.CallFrame}
*/
function getStepInPositionsCallback(error, stepInPositions)
{
@@ -983,6 +984,7 @@
/**
* @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate
+ * @return {!WebInspector.LiveLocation}
*/
createLiveLocation: function(updateDelegate)
{
@@ -1066,6 +1068,6 @@
}
/**
- * @type {?WebInspector.DebuggerModel}
+ * @type {!WebInspector.DebuggerModel}
*/
-WebInspector.debuggerModel = null;
+WebInspector.debuggerModel;
diff --git a/Source/devtools/front_end/DebuggerScriptMapping.js b/Source/devtools/front_end/DebuggerScriptMapping.js
index 112def2..3d4b29a 100644
--- a/Source/devtools/front_end/DebuggerScriptMapping.js
+++ b/Source/devtools/front_end/DebuggerScriptMapping.js
@@ -30,14 +30,15 @@
/**
* @constructor
+ * @param {!WebInspector.DebuggerModel} debuggerModel
* @param {!WebInspector.Workspace} workspace
* @param {!WebInspector.SimpleWorkspaceProvider} networkWorkspaceProvider
*/
-WebInspector.DebuggerScriptMapping = function(workspace, networkWorkspaceProvider)
+WebInspector.DebuggerScriptMapping = function(debuggerModel, workspace, networkWorkspaceProvider)
{
- this._defaultMapping = new WebInspector.DefaultScriptMapping(workspace);
- this._resourceMapping = new WebInspector.ResourceScriptMapping(workspace);
- this._compilerMapping = new WebInspector.CompilerScriptMapping(workspace, networkWorkspaceProvider);
+ this._defaultMapping = new WebInspector.DefaultScriptMapping(debuggerModel, workspace);
+ this._resourceMapping = new WebInspector.ResourceScriptMapping(debuggerModel, workspace);
+ this._compilerMapping = new WebInspector.CompilerScriptMapping(debuggerModel, workspace, networkWorkspaceProvider);
this._snippetMapping = WebInspector.scriptSnippetModel.scriptMapping;
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this);
diff --git a/Source/devtools/front_end/DefaultScriptMapping.js b/Source/devtools/front_end/DefaultScriptMapping.js
index 2894026..d7b7ec8 100644
--- a/Source/devtools/front_end/DefaultScriptMapping.js
+++ b/Source/devtools/front_end/DefaultScriptMapping.js
@@ -31,14 +31,16 @@
/**
* @constructor
* @implements {WebInspector.ScriptSourceMapping}
+ * @param {!WebInspector.DebuggerModel} debuggerModel
* @param {!WebInspector.Workspace} workspace
*/
-WebInspector.DefaultScriptMapping = function(workspace)
+WebInspector.DefaultScriptMapping = function(debuggerModel, workspace)
{
+ this._debuggerModel = debuggerModel;
this._projectDelegate = new WebInspector.DebuggerProjectDelegate();
this._workspace = workspace;
this._workspace.addProject(this._projectDelegate);
- WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
+ debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
this._debuggerReset();
}
@@ -50,7 +52,7 @@
rawLocationToUILocation: function(rawLocation)
{
var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (rawLocation);
- var script = WebInspector.debuggerModel.scriptForId(debuggerModelLocation.scriptId);
+ var script = this._debuggerModel.scriptForId(debuggerModelLocation.scriptId);
var uiSourceCode = this._uiSourceCodeForScriptId[script.scriptId];
var lineNumber = debuggerModelLocation.lineNumber;
var columnNumber = debuggerModelLocation.columnNumber || 0;
@@ -66,8 +68,8 @@
uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber)
{
var scriptId = this._scriptIdForUISourceCode.get(uiSourceCode);
- var script = WebInspector.debuggerModel.scriptForId(scriptId);
- return WebInspector.debuggerModel.createRawLocation(script, lineNumber, columnNumber);
+ var script = this._debuggerModel.scriptForId(scriptId);
+ return this._debuggerModel.createRawLocation(script, lineNumber, columnNumber);
},
/**
diff --git a/Source/devtools/front_end/DevToolsExtensionAPI.js b/Source/devtools/front_end/DevToolsExtensionAPI.js
deleted file mode 100644
index 44f7c21..0000000
--- a/Source/devtools/front_end/DevToolsExtensionAPI.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2011 Google 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:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE COPYRIGHT
- * OWNER 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.
- */
-
-function platformExtensionAPI(coreAPI)
-{
- function getTabId()
- {
- return tabId;
- }
- chrome = window.chrome || {};
- // Override chrome.devtools as a workaround for a error-throwing getter being exposed
- // in extension pages loaded into a non-extension process (only happens for remote client
- // extensions)
- var devtools_descriptor = Object.getOwnPropertyDescriptor(chrome, "devtools");
- if (!devtools_descriptor || devtools_descriptor.get)
- Object.defineProperty(chrome, "devtools", { value: {}, enumerable: true });
- // Only expose tabId on chrome.devtools.inspectedWindow, not webInspector.inspectedWindow.
- chrome.devtools.inspectedWindow = {};
- chrome.devtools.inspectedWindow.__defineGetter__("tabId", getTabId);
- chrome.devtools.inspectedWindow.__proto__ = coreAPI.inspectedWindow;
- chrome.devtools.network = coreAPI.network;
- chrome.devtools.panels = coreAPI.panels;
-
- // default to expose experimental APIs for now.
- if (extensionInfo.exposeExperimentalAPIs !== false) {
- chrome.experimental = chrome.experimental || {};
- chrome.experimental.devtools = chrome.experimental.devtools || {};
-
- var properties = Object.getOwnPropertyNames(coreAPI);
- for (var i = 0; i < properties.length; ++i) {
- var descriptor = Object.getOwnPropertyDescriptor(coreAPI, properties[i]);
- Object.defineProperty(chrome.experimental.devtools, properties[i], descriptor);
- }
- chrome.experimental.devtools.inspectedWindow = chrome.devtools.inspectedWindow;
- }
- if (extensionInfo.exposeWebInspectorNamespace)
- window.webInspector = coreAPI;
-}
diff --git a/Source/devtools/front_end/Dialog.js b/Source/devtools/front_end/Dialog.js
index 171f4a1..bc006c6 100644
--- a/Source/devtools/front_end/Dialog.js
+++ b/Source/devtools/front_end/Dialog.js
@@ -55,8 +55,8 @@
delegate.show(this._element);
this._position();
- this._windowResizeHandler = this._position.bind(this);
- window.addEventListener("resize", this._windowResizeHandler, true);
+ this._containerResizeHandler = this._position.bind(this);
+ WebInspector.inspectorView.addEventListener(WebInspector.InspectorView.Events.DevToolsElementBoundingBoxChanged, this._containerResizeHandler);
this._delegate.focus();
}
@@ -97,7 +97,7 @@
delete WebInspector.Dialog._instance;
this._glassPane.dispose();
- window.removeEventListener("resize", this._windowResizeHandler, true);
+ WebInspector.inspectorView.removeEventListener(WebInspector.InspectorView.Events.DevToolsElementBoundingBoxChanged, this._containerResizeHandler);
},
_onGlassPaneFocus: function(event)
@@ -157,16 +157,17 @@
*/
position: function(element, relativeToElement)
{
- var offset = relativeToElement.offsetRelativeToWindow(window);
+ var container = WebInspector.inspectorView.devtoolsElement();
+ var box = relativeToElement.boxInWindow(window).relativeToElement(container);
- var positionX = offset.x + (relativeToElement.offsetWidth - element.offsetWidth) / 2;
- positionX = Number.constrain(positionX, 0, window.innerWidth - element.offsetWidth);
+ var positionX = box.x + (relativeToElement.offsetWidth - element.offsetWidth) / 2;
+ positionX = Number.constrain(positionX, 0, container.offsetWidth - element.offsetWidth);
- var positionY = offset.y + (relativeToElement.offsetHeight - element.offsetHeight) / 2;
- positionY = Number.constrain(positionY, 0, window.innerHeight - element.offsetHeight);
+ var positionY = box.y + (relativeToElement.offsetHeight - element.offsetHeight) / 2;
+ positionY = Number.constrain(positionY, 0, container.offsetHeight - element.offsetHeight);
- element.style.left = positionX + "px";
- element.style.top = positionY + "px";
+ element.style.position = "absolute";
+ element.positionAt(positionX, positionY, container);
},
focus: function() { },
diff --git a/Source/devtools/front_end/DockController.js b/Source/devtools/front_end/DockController.js
index c0c8381..5342f7b 100644
--- a/Source/devtools/front_end/DockController.js
+++ b/Source/devtools/front_end/DockController.js
@@ -34,18 +34,33 @@
*/
WebInspector.DockController = function()
{
- this._dockToggleButton = new WebInspector.StatusBarButton("", "dock-status-bar-item", 3);
- this._dockToggleButtonOption = new WebInspector.StatusBarButton("", "dock-status-bar-item", 3);
- this._dockToggleButton.addEventListener("click", this._toggleDockState, this);
- this._dockToggleButtonOption.addEventListener("click", this._toggleDockState, this);
- this._dockToggleButton.setLongClickOptionsEnabled(this._createDockOptions.bind(this));
+ if (!WebInspector.queryParamsObject["can_dock"]) {
+ this._dockSide = WebInspector.DockController.State.Undocked;
+ this._updateUI();
+ return;
+ }
- this.setDockSide(WebInspector.queryParamsObject["can_dock"] ? (WebInspector.queryParamsObject["dockSide"] || "bottom") : "undocked");
+ WebInspector.settings.currentDockState = WebInspector.settings.createSetting("currentDockState", "");
+ WebInspector.settings.lastDockState = WebInspector.settings.createSetting("lastDockState", "");
+ var states = [WebInspector.DockController.State.DockedToBottom, WebInspector.DockController.State.Undocked, WebInspector.DockController.State.DockedToRight];
+ var titles = [WebInspector.UIString("Dock to main window."), WebInspector.UIString("Undock into separate window."), WebInspector.UIString("Dock to main window.")];
+ if (WebInspector.experimentsSettings.dockToLeft.isEnabled()) {
+ states.push(WebInspector.DockController.State.DockedToLeft);
+ titles.push(WebInspector.UIString("Dock to main window."));
+ }
+ this._dockToggleButton = new WebInspector.StatusBarStatesSettingButton(
+ "dock-status-bar-item",
+ states,
+ titles,
+ WebInspector.settings.currentDockState,
+ WebInspector.settings.lastDockState,
+ this._dockSideChanged.bind(this));
}
WebInspector.DockController.State = {
DockedToBottom: "bottom",
DockedToRight: "right",
+ DockedToLeft: "left",
Undocked: "undocked"
}
@@ -55,11 +70,11 @@
WebInspector.DockController.prototype = {
/**
- * @return {!Element}
+ * @return {?Element}
*/
get element()
{
- return this._dockToggleButton.element;
+ return WebInspector.queryParamsObject["can_dock"] ? this._dockToggleButton.element : null;
},
/**
@@ -71,21 +86,25 @@
},
/**
+ * @return {boolean}
+ */
+ isVertical: function()
+ {
+ return this._dockSide === WebInspector.DockController.State.DockedToRight || this._dockSide === WebInspector.DockController.State.DockedToLeft;
+ },
+
+ /**
* @param {string} dockSide
*/
- setDockSide: function(dockSide)
+ _dockSideChanged: function(dockSide)
{
if (this._dockSide === dockSide)
return;
- if (this._dockSide)
- WebInspector.settings.lastDockState.set(this._dockSide);
-
this._dockSide = dockSide;
- if (dockSide === WebInspector.DockController.State.Undocked)
- WebInspector.userMetrics.WindowDocked.record();
- else
- WebInspector.userMetrics.WindowUndocked.record();
+ if (WebInspector.queryParamsObject["can_dock"])
+ InspectorFrontendHost.setIsDocked(dockSide !== WebInspector.DockController.State.Undocked);
+
this._updateUI();
this.dispatchEventToListeners(WebInspector.DockController.Events.DockSideChanged, this._dockSide);
},
@@ -97,81 +116,34 @@
case WebInspector.DockController.State.DockedToBottom:
body.classList.remove("undocked");
body.classList.remove("dock-to-right");
+ body.classList.remove("dock-to-left");
body.classList.add("dock-to-bottom");
break;
case WebInspector.DockController.State.DockedToRight:
body.classList.remove("undocked");
body.classList.add("dock-to-right");
+ body.classList.remove("dock-to-left");
body.classList.remove("dock-to-bottom");
break;
- case WebInspector.DockController.State.Undocked:
+ case WebInspector.DockController.State.DockedToLeft:
+ body.classList.remove("undocked");
+ body.classList.remove("dock-to-right");
+ body.classList.add("dock-to-left");
+ body.classList.remove("dock-to-bottom");
+ break;
+ case WebInspector.DockController.State.Undocked:
body.classList.add("undocked");
body.classList.remove("dock-to-right");
+ body.classList.remove("dock-to-left");
body.classList.remove("dock-to-bottom");
break;
}
-
- this._dockToggleButton.setEnabled(true);
-
- // Choose different last state based on the current one if missing or if is the same.
- var sides = [WebInspector.DockController.State.DockedToBottom, WebInspector.DockController.State.Undocked, WebInspector.DockController.State.DockedToRight];
- sides.remove(this._dockSide);
- var lastState = WebInspector.settings.lastDockState.get();
-
- sides.remove(lastState);
- if (sides.length === 2) { // last state was not from the list of potential values
- lastState = sides[0];
- sides.remove(lastState);
- }
- this._decorateButtonForTargetState(this._dockToggleButton, lastState);
- this._decorateButtonForTargetState(this._dockToggleButtonOption, sides[0]);
- },
-
- /**
- * @param {!WebInspector.StatusBarButton} button
- * @param {string} state
- */
- _decorateButtonForTargetState: function(button, state)
- {
- switch (state) {
- case WebInspector.DockController.State.DockedToBottom:
- button.title = WebInspector.UIString("Dock to main window.");
- button.state = "bottom";
- break;
- case WebInspector.DockController.State.DockedToRight:
- button.title = WebInspector.UIString("Dock to main window.");
- button.state = "right";
- break;
- case WebInspector.DockController.State.Undocked:
- button.title = WebInspector.UIString("Undock into separate window.");
- button.state = "undock";
- break;
- }
- },
-
- _createDockOptions: function()
- {
- return [this._dockToggleButtonOption];
- },
-
- /**
- * @param {!WebInspector.Event} e
- */
- _toggleDockState: function(e)
- {
- var action;
- switch (e.target.state) {
- case "bottom": action = "bottom"; break;
- case "right": action = "right"; break;
- case "undock": action = "undocked"; break;
- }
- InspectorFrontendHost.requestSetDockSide(action);
},
__proto__: WebInspector.Object.prototype
}
/**
- * @type {?WebInspector.DockController}
+ * @type {!WebInspector.DockController}
*/
-WebInspector.dockController = null;
+WebInspector.dockController;
diff --git a/Source/devtools/front_end/Drawer.js b/Source/devtools/front_end/Drawer.js
index c14c811..82871ff 100644
--- a/Source/devtools/front_end/Drawer.js
+++ b/Source/devtools/front_end/Drawer.js
@@ -29,41 +29,71 @@
/**
* @constructor
- * @implements {WebInspector.ViewFactory}
- * @param {!WebInspector.InspectorView} inspectorView
+ * @extends {WebInspector.View}
+ * @param {!WebInspector.SplitView} splitView
*/
-WebInspector.Drawer = function(inspectorView)
+WebInspector.Drawer = function(splitView)
{
- this._inspectorView = inspectorView;
+ WebInspector.View.call(this);
+ this.element.id = "drawer-contents";
- this.element = this._inspectorView.element.createChild("div", "drawer");
- this.element.style.flexBasis = 0;
-
- this._savedHeight = 200; // Default.
-
- this._drawerContentsElement = this.element.createChild("div");
- this._drawerContentsElement.id = "drawer-contents";
+ this._splitView = splitView;
+ splitView.hideDefaultResizer();
+ this.show(splitView.sidebarElement());
+ splitView.hideSidebar();
this._toggleDrawerButton = new WebInspector.StatusBarButton(WebInspector.UIString("Show drawer."), "console-status-bar-item");
this._toggleDrawerButton.addEventListener("click", this.toggle, this);
- this._viewFactories = [];
this._tabbedPane = new WebInspector.TabbedPane();
this._tabbedPane.closeableTabs = false;
- this._tabbedPane.markAsRoot();
+ this._tabbedPane.setRetainTabOrder(true, WebInspector.moduleManager.orderComparator(WebInspector.Drawer.ViewFactory, "name", "order"));
- // Register console early for it to be the first in the list.
- this.registerView("console", WebInspector.UIString("Console"), this);
-
- this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabClosed, this._updateTabStrip, this);
this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this);
- WebInspector.installDragHandle(this._tabbedPane.headerElement(), this._startStatusBarDragging.bind(this), this._statusBarDragging.bind(this), this._endStatusBarDragging.bind(this), "row-resize");
- this._tabbedPane.element.createChild("div", "drawer-resizer");
+ splitView.installResizer(this._tabbedPane.headerElement());
this._showDrawerOnLoadSetting = WebInspector.settings.createSetting("WebInspector.Drawer.showOnLoad", false);
this._lastSelectedViewSetting = WebInspector.settings.createSetting("WebInspector.Drawer.lastSelectedView", "console");
+ this._initializeViewFactories();
}
WebInspector.Drawer.prototype = {
+ _initializeViewFactories: function()
+ {
+ this._viewFactories = {};
+ var extensions = WebInspector.moduleManager.extensions(WebInspector.Drawer.ViewFactory);
+
+ for (var i = 0; i < extensions.length; ++i) {
+ var descriptor = extensions[i].descriptor();
+ var id = descriptor["name"];
+ var title = WebInspector.UIString(descriptor["title"]);
+ var settingName = descriptor["setting"];
+ var setting = settingName ? /** @type {!WebInspector.Setting|undefined} */ (WebInspector.settings[settingName]) : null;
+
+ this._viewFactories[id] = extensions[i];
+
+ if (setting) {
+ setting.addChangeListener(this._toggleSettingBasedView.bind(this, id, title, setting));
+ if (setting.get())
+ this._tabbedPane.appendTab(id, title, new WebInspector.View());
+ } else {
+ this._tabbedPane.appendTab(id, title, new WebInspector.View());
+ }
+ }
+ this._tabbedPane.show(this.element);
+ },
+
+ /**
+ * @param {string} id
+ * @param {string} title
+ * @param {!WebInspector.Setting} setting
+ */
+ _toggleSettingBasedView: function(id, title, setting)
+ {
+ this._tabbedPane.closeTab(id);
+ if (setting.get())
+ this._tabbedPane.appendTab(id, title, new WebInspector.View());
+ },
+
/**
* @return {!Element}
*/
@@ -72,16 +102,6 @@
return this._toggleDrawerButton.element;
},
- _constrainHeight: function(height)
- {
- return Number.constrain(height, Preferences.minConsoleHeight, this._inspectorView.element.offsetHeight - Preferences.minConsoleHeight);
- },
-
- isHiding: function()
- {
- return this._isHiding;
- },
-
/**
* @param {string} tabId
* @param {string} title
@@ -99,38 +119,6 @@
/**
* @param {string} id
- * @param {string} title
- * @param {!WebInspector.ViewFactory} factory
- */
- registerView: function(id, title, factory)
- {
- if (this._tabbedPane.hasTab(id))
- this._tabbedPane.closeTab(id);
- this._viewFactories[id] = factory;
- this._tabbedPane.appendTab(id, title, new WebInspector.View());
- },
-
- /**
- * @param {string} id
- */
- unregisterView: function(id)
- {
- if (this._tabbedPane.hasTab(id))
- this._tabbedPane.closeTab(id);
- delete this._viewFactories[id];
- },
-
- /**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id)
- {
- return WebInspector.panel("console").createView(id);
- },
-
- /**
- * @param {string} id
*/
closeView: function(id)
{
@@ -139,17 +127,24 @@
/**
* @param {string} id
- * @param {boolean=} immediately
+ * @param {boolean=} immediate
*/
- showView: function(id, immediately)
+ showView: function(id, immediate)
{
if (!this._toggleDrawerButton.enabled())
return;
- if (this._viewFactories[id])
- this._tabbedPane.changeTabView(id, this._viewFactories[id].createView(id));
- this._innerShow(immediately);
+ if (!this._tabbedPane.hasTab(id)) {
+ // Hidden tab.
+ this._innerShow(immediate);
+ return;
+ }
+ var viewFactory = this._viewFactory(id);
+ if (viewFactory)
+ this._tabbedPane.changeTabView(id, viewFactory.createView());
+ this._innerShow(immediate);
this._tabbedPane.selectTab(id, true);
- this._updateTabStrip();
+ // In case this id is already selected, anyways persist it as the last saved value.
+ this._lastSelectedViewSetting.set(id);
},
/**
@@ -169,15 +164,11 @@
}
this._innerShow();
this._tabbedPane.selectTab(id, true);
- this._updateTabStrip();
},
- /**
- * @param {boolean=} immediately
- */
- show: function(immediately)
+ showDrawer: function()
{
- this.showView(this._tabbedPane.selectedTabId, immediately);
+ this.showView(this._lastSelectedViewSetting.get());
},
showOnLoadIfNecessary: function()
@@ -187,153 +178,33 @@
},
/**
- * @param {boolean=} immediately
+ * @param {boolean=} immediate
*/
- _innerShow: function(immediately)
+ _innerShow: function(immediate)
{
- this._immediatelyFinishAnimation();
-
if (this._toggleDrawerButton.toggled)
return;
+
this._showDrawerOnLoadSetting.set(true);
this._toggleDrawerButton.toggled = true;
this._toggleDrawerButton.title = WebInspector.UIString("Hide drawer.");
- document.body.classList.add("drawer-visible");
- this._tabbedPane.show(this._drawerContentsElement);
+ this._splitView.showBoth(!immediate);
- var height = this._constrainHeight(this._savedHeight);
- var animations = [
- {element: this.element, start: {"flex-basis": 23}, end: {"flex-basis": height}},
- ];
-
- function animationCallback(finished)
- {
- if (this._inspectorView.currentPanel())
- this._inspectorView.currentPanel().doResize();
- if (!finished)
- return;
- this._updateTabStrip();
- if (this._visibleView()) {
- // Get console content back
- this._tabbedPane.changeTabView(this._tabbedPane.selectedTabId, this._visibleView());
- if (this._visibleView().afterShow)
- this._visibleView().afterShow();
- }
- delete this._currentAnimation;
- }
-
- this._currentAnimation = WebInspector.animateStyle(animations, this._animationDuration(immediately), animationCallback.bind(this));
-
- if (immediately)
- this._currentAnimation.forceComplete();
+ if (this._visibleView())
+ this._visibleView().focus();
},
- /**
- * @param {boolean=} immediately
- */
- hide: function(immediately)
+ closeDrawer: function()
{
- this._immediatelyFinishAnimation();
-
if (!this._toggleDrawerButton.toggled)
return;
this._showDrawerOnLoadSetting.set(false);
this._toggleDrawerButton.toggled = false;
this._toggleDrawerButton.title = WebInspector.UIString("Show console.");
- this._isHiding = true;
- this._savedHeight = this.element.offsetHeight;
-
WebInspector.restoreFocusFromElement(this.element);
-
- // Temporarily set properties and classes to mimic the post-animation values so panels
- // like Elements in their updateStatusBarItems call will size things to fit the final location.
- document.body.classList.remove("drawer-visible");
- this._inspectorView.currentPanel().statusBarResized();
- document.body.classList.add("drawer-visible");
-
- var animations = [
- {element: this.element, start: {"flex-basis": this.element.offsetHeight }, end: {"flex-basis": 23}},
- ];
-
- function animationCallback(finished)
- {
- if (this._inspectorView.currentPanel())
- this._inspectorView.currentPanel().doResize();
- if (!finished)
- return;
- this._tabbedPane.detach();
- this._drawerContentsElement.removeChildren();
- document.body.classList.remove("drawer-visible");
- delete this._currentAnimation;
- delete this._isHiding;
- }
-
- this._currentAnimation = WebInspector.animateStyle(animations, this._animationDuration(immediately), animationCallback.bind(this));
-
- if (immediately)
- this._currentAnimation.forceComplete();
- },
-
- resize: function()
- {
- if (!this._toggleDrawerButton.toggled)
- return;
-
- this._visibleView().storeScrollPositions();
- var height = this._constrainHeight(this.element.offsetHeight);
- this.element.style.flexBasis = height + "px";
- this._tabbedPane.doResize();
- },
-
- _immediatelyFinishAnimation: function()
- {
- if (this._currentAnimation)
- this._currentAnimation.forceComplete();
- },
-
- /**
- * @param {boolean=} immediately
- * @return {number}
- */
- _animationDuration: function(immediately)
- {
- return immediately ? 0 : 50;
- },
-
- /**
- * @return {boolean}
- */
- _startStatusBarDragging: function(event)
- {
- if (!this._toggleDrawerButton.toggled || event.target !== this._tabbedPane.headerElement())
- return false;
-
- this._visibleView().storeScrollPositions();
- this._statusBarDragOffset = event.pageY - this.element.totalOffsetTop();
- return true;
- },
-
- _statusBarDragging: function(event)
- {
- var height = window.innerHeight - event.pageY + this._statusBarDragOffset;
- height = Number.constrain(height, Preferences.minConsoleHeight, this._inspectorView.element.offsetHeight - Preferences.minConsoleHeight);
-
- this.element.style.flexBasis = height + "px";
- if (this._inspectorView.currentPanel())
- this._inspectorView.currentPanel().doResize();
- this._tabbedPane.doResize();
-
- event.consume(true);
- },
-
- _endStatusBarDragging: function(event)
- {
- this._savedHeight = this.element.offsetHeight;
- delete this._statusBarDragOffset;
-
- event.consume();
+ this._splitView.hideSidebar(true);
},
/**
@@ -344,27 +215,25 @@
return this._tabbedPane.visibleView;
},
- _updateTabStrip: function()
- {
- this._tabbedPane.onResize();
- this._tabbedPane.doResize();
- },
-
- _tabSelected: function()
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _tabSelected: function(event)
{
var tabId = this._tabbedPane.selectedTabId;
- if (!this._tabbedPane.isTabCloseable(tabId))
+ if (event.data["isUserGesture"] && !this._tabbedPane.isTabCloseable(tabId))
this._lastSelectedViewSetting.set(tabId);
- if (this._viewFactories[tabId])
- this._tabbedPane.changeTabView(tabId, this._viewFactories[tabId].createView(tabId));
+ var viewFactory = this._viewFactory(tabId);
+ if (viewFactory)
+ this._tabbedPane.changeTabView(tabId, viewFactory.createView());
},
toggle: function()
{
if (this._toggleDrawerButton.toggled)
- this.hide();
+ this.closeDrawer();
else
- this.show();
+ this.showDrawer();
},
/**
@@ -381,5 +250,52 @@
selectedViewId: function()
{
return this._tabbedPane.selectedTabId;
+ },
+
+ /**
+ * @return {?WebInspector.Drawer.ViewFactory}
+ */
+ _viewFactory: function(id)
+ {
+ return this._viewFactories[id] ? /** @type {!WebInspector.Drawer.ViewFactory} */ (this._viewFactories[id].instance()) : null;
+ },
+
+ __proto__: WebInspector.View.prototype
+}
+
+/**
+ * @interface
+ */
+WebInspector.Drawer.ViewFactory = function()
+{
+}
+
+WebInspector.Drawer.ViewFactory.prototype = {
+ /**
+ * @return {!WebInspector.View}
+ */
+ createView: function() {}
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Drawer.ViewFactory}
+ * @param {function(new:T)} constructor
+ * @template T
+ */
+WebInspector.Drawer.SingletonViewFactory = function(constructor)
+{
+ this._constructor = constructor;
+}
+
+WebInspector.Drawer.SingletonViewFactory.prototype = {
+ /**
+ * @return {!WebInspector.View}
+ */
+ createView: function()
+ {
+ if (!this._instance)
+ this._instance = /** @type {!WebInspector.View} */(new this._constructor());
+ return this._instance;
}
}
diff --git a/Source/devtools/front_end/EditFileSystemDialog.js b/Source/devtools/front_end/EditFileSystemDialog.js
index b687996..b2aaea8 100644
--- a/Source/devtools/front_end/EditFileSystemDialog.js
+++ b/Source/devtools/front_end/EditFileSystemDialog.js
@@ -43,7 +43,7 @@
var header = this.element.createChild("div", "header");
var headerText = header.createChild("span");
- headerText.textContent = "Edit file system";
+ headerText.textContent = WebInspector.UIString("Edit file system");
var closeButton = header.createChild("div", "close-button-gray done-button");
closeButton.addEventListener("click", this._onDoneClick.bind(this), false);
@@ -56,8 +56,8 @@
WebInspector.isolatedFileSystemManager.mapping().addEventListener(WebInspector.FileSystemMapping.Events.ExcludedFolderRemoved, this._excludedFolderRemoved, this);
var blockHeader = contents.createChild("div", "block-header");
- blockHeader.textContent = "Mappings";
- this._fileMappingsSection = contents.createChild("div", "file-mappings-section");
+ blockHeader.textContent = WebInspector.UIString("Mappings");
+ this._fileMappingsSection = contents.createChild("div", "section file-mappings-section");
this._fileMappingsListContainer = this._fileMappingsSection.createChild("div", "settings-list-container");
var entries = WebInspector.isolatedFileSystemManager.mapping().mappingEntries(this._fileSystemPath);
@@ -72,8 +72,8 @@
this._addMappingRow(entries[i]);
blockHeader = contents.createChild("div", "block-header");
- blockHeader.textContent = "Excluded folders";
- this._excludedFolderListSection = contents.createChild("div", "excluded-folders-section");
+ blockHeader.textContent = WebInspector.UIString("Excluded folders");
+ this._excludedFolderListSection = contents.createChild("div", "section excluded-folders-section");
this._excludedFolderListContainer = this._excludedFolderListSection.createChild("div", "settings-list-container");
var excludedFolderEntries = WebInspector.isolatedFileSystemManager.mapping().excludedFolders(fileSystemPath);
@@ -110,15 +110,19 @@
_resize: function()
{
- if (!this._dialogElement)
+ if (!this._dialogElement || !this._relativeToElement)
return;
- const width = 540;
+ const minWidth = 200;
const minHeight = 150;
- var maxHeight = document.body.offsetHeight - 10;
+ var maxHeight = this._relativeToElement.offsetHeight - 10;
maxHeight = Math.max(minHeight, maxHeight);
+ var maxWidth = Math.min(540, this._relativeToElement.offsetWidth - 10);
+ maxWidth = Math.max(minWidth, maxWidth);
this._dialogElement.style.maxHeight = maxHeight + "px";
- this._dialogElement.style.width = width + "px";
+ this._dialogElement.style.width = maxWidth + "px";
+
+ WebInspector.DialogDelegate.prototype.position(this._dialogElement, this._relativeToElement);
},
/**
@@ -127,6 +131,7 @@
*/
position: function(element, relativeToElement)
{
+ this._relativeToElement = relativeToElement;
this._resize();
},
diff --git a/Source/devtools/front_end/EditingLocationHistoryManager.js b/Source/devtools/front_end/EditingLocationHistoryManager.js
new file mode 100644
index 0000000..3097462
--- /dev/null
+++ b/Source/devtools/front_end/EditingLocationHistoryManager.js
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @param {!WebInspector.SourcesPanel} sourcesPanel
+ * @param {!function():!WebInspector.SourceFrame} currentSourceFrameCallback
+ */
+WebInspector.EditingLocationHistoryManager = function(sourcesPanel, currentSourceFrameCallback)
+{
+ this._sourcesPanel = sourcesPanel;
+ this._historyManager = new WebInspector.SimpleHistoryManager(WebInspector.EditingLocationHistoryManager.HistoryDepth);
+ this._currentSourceFrameCallback = currentSourceFrameCallback;
+}
+
+WebInspector.EditingLocationHistoryManager.HistoryDepth = 20;
+
+WebInspector.EditingLocationHistoryManager.prototype = {
+ /**
+ * @param {!WebInspector.UISourceCodeFrame} sourceFrame
+ */
+ trackSourceFrameCursorJumps: function(sourceFrame)
+ {
+ sourceFrame.addEventListener(WebInspector.SourceFrame.Events.JumpHappened, this._onJumpHappened.bind(this));
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onJumpHappened: function(event)
+ {
+ if (event.data.from)
+ this._updateActiveState(event.data.from);
+ if (event.data.to)
+ this._pushActiveState(event.data.to);
+ },
+
+ rollback: function()
+ {
+ this._historyManager.rollback();
+ },
+
+ rollover: function()
+ {
+ this._historyManager.rollover();
+ },
+
+ updateCurrentState: function()
+ {
+ var sourceFrame = this._currentSourceFrameCallback();
+ if (!sourceFrame)
+ return;
+ this._updateActiveState(sourceFrame.textEditor.selection());
+ },
+
+ pushNewState: function()
+ {
+ var sourceFrame = this._currentSourceFrameCallback();
+ if (!sourceFrame)
+ return;
+ this._pushActiveState(sourceFrame.textEditor.selection());
+ },
+
+ /**
+ * @param {!WebInspector.TextRange} selection
+ */
+ _updateActiveState: function(selection)
+ {
+ var active = this._historyManager.active();
+ if (!active)
+ return;
+ var sourceFrame = this._currentSourceFrameCallback();
+ if (!sourceFrame)
+ return;
+ var entry = new WebInspector.EditingLocationHistoryEntry(this._sourcesPanel, this, sourceFrame, selection);
+ active.merge(entry);
+ },
+
+ /**
+ * @param {!WebInspector.TextRange} selection
+ */
+ _pushActiveState: function(selection)
+ {
+ var sourceFrame = this._currentSourceFrameCallback();
+ if (!sourceFrame)
+ return;
+ var entry = new WebInspector.EditingLocationHistoryEntry(this._sourcesPanel, this, sourceFrame, selection);
+ this._historyManager.push(entry);
+ },
+
+ /**
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ */
+ removeHistoryForSourceCode: function(uiSourceCode)
+ {
+ function filterOut(entry)
+ {
+ return entry._projectId === uiSourceCode.project().id() && entry._path === uiSourceCode.path();
+ }
+
+ this._historyManager.filterOut(filterOut);
+ },
+}
+
+
+/**
+ * @constructor
+ * @implements {WebInspector.HistoryEntry}
+ * @param {!WebInspector.SourcesPanel} sourcesPanel
+ * @param {!WebInspector.EditingLocationHistoryManager} editingLocationManager
+ * @param {!WebInspector.SourceFrame} sourceFrame
+ * @param {!WebInspector.TextRange} selection
+ */
+WebInspector.EditingLocationHistoryEntry = function(sourcesPanel, editingLocationManager, sourceFrame, selection)
+{
+ this._sourcesPanel = sourcesPanel;
+ this._editingLocationManager = editingLocationManager;
+ var uiSourceCode = sourceFrame.uiSourceCode();
+ this._projectId = uiSourceCode.project().id();
+ this._path = uiSourceCode.path();
+
+ var position = this._positionFromSelection(selection);
+ this._positionHandle = sourceFrame.textEditor.textEditorPositionHandle(position.lineNumber, position.columnNumber);
+}
+
+WebInspector.EditingLocationHistoryEntry.prototype = {
+ /**
+ * @param {!WebInspector.HistoryEntry} entry
+ */
+ merge: function(entry)
+ {
+ if (this._projectId !== entry._projectId || this._path !== entry._path)
+ return;
+ this._positionHandle = entry._positionHandle;
+ },
+
+ /**
+ * @param {!WebInspector.TextRange} selection
+ * @return {!{lineNumber: number, columnNumber: number}}
+ */
+ _positionFromSelection: function(selection)
+ {
+ return {
+ lineNumber: selection.endLine,
+ columnNumber: selection.endColumn
+ };
+ },
+
+ /**
+ * @return {boolean}
+ */
+ valid: function()
+ {
+ var position = this._positionHandle.resolve();
+ var uiSourceCode = WebInspector.workspace.project(this._projectId).uiSourceCode(this._path);
+ return !!(position && uiSourceCode);
+ },
+
+ reveal: function()
+ {
+ var position = this._positionHandle.resolve();
+ var uiSourceCode = WebInspector.workspace.project(this._projectId).uiSourceCode(this._path);
+ if (!position || !uiSourceCode)
+ return;
+
+ this._editingLocationManager.updateCurrentState();
+ this._sourcesPanel.showUISourceCode(uiSourceCode, position.lineNumber, position.columnNumber);
+ }
+};
diff --git a/Source/devtools/front_end/ElementsPanel.js b/Source/devtools/front_end/ElementsPanel.js
index b6620a9..8f66a85 100644
--- a/Source/devtools/front_end/ElementsPanel.js
+++ b/Source/devtools/front_end/ElementsPanel.js
@@ -28,8 +28,8 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-importScript("CSSNamedFlowCollectionsView.js");
-importScript("CSSNamedFlowView.js");
+importScript("DOMSyntaxHighlighter.js");
+importScript("ElementsTreeOutline.js");
importScript("EventListenersSidebarPane.js");
importScript("MetricsSidebarPane.js");
importScript("OverridesView.js");
@@ -40,7 +40,6 @@
/**
* @constructor
- * @implements {WebInspector.ViewFactory}
* @implements {WebInspector.Searchable}
* @extends {WebInspector.Panel}
*/
@@ -56,15 +55,15 @@
const minimumContentWidthPercent = 0.34;
const initialSidebarHeight = 325;
const minimumContentHeightPercent = 0.34;
- this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialSidebarWidth, initialSidebarHeight);
- this.splitView.sidebarElement.classList.add("vbox");
- this.splitView.setSidebarElementConstraints(Preferences.minElementsSidebarWidth, Preferences.minElementsSidebarHeight);
- this.splitView.setMainElementConstraints(minimumContentWidthPercent, minimumContentHeightPercent);
- this.splitView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this._updateTreeOutlineVisibleWidth.bind(this));
+
+ this._splitView = new WebInspector.SplitView(true, true, "elementsSidebarWidth", initialSidebarWidth, initialSidebarHeight);
+ this._splitView.setSidebarElementConstraints(Preferences.minSidebarWidth, Preferences.minSidebarHeight);
+ this._splitView.setMainElementConstraints(minimumContentWidthPercent, minimumContentHeightPercent);
+ this._splitView.addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged, this._updateTreeOutlineVisibleWidth.bind(this));
+ this._splitView.show(this.element);
this._searchableView = new WebInspector.SearchableView(this);
- this.splitView.mainElement.classList.add("vbox");
- this._searchableView.show(this.splitView.mainElement);
+ this._searchableView.show(this._splitView.mainElement());
var stackElement = this._searchableView.element;
this.contentElement = stackElement.createChild("div");
@@ -76,7 +75,7 @@
WebInspector.settings.domWordWrap.addChangeListener(this._domWordWrapSettingChanged.bind(this));
this.contentElement.addEventListener("contextmenu", this._contextMenuEventFired.bind(this), true);
- this.splitView.sidebarElement.addEventListener("contextmenu", this._sidebarContextMenuEventFired.bind(this), false);
+ this._splitView.sidebarElement().addEventListener("contextmenu", this._sidebarContextMenuEventFired.bind(this), false);
this.treeOutline = new WebInspector.ElementsTreeOutline(true, true, this._populateContextMenu.bind(this), this._setPseudoClassForNodeId.bind(this));
this.treeOutline.wireToDomAgent();
@@ -132,13 +131,17 @@
if (!this.treeOutline)
return;
- var width = this.splitView.element.offsetWidth;
- if (this.splitView.isVertical())
- width -= this.splitView.sidebarWidth();
+ var width = this._splitView.element.offsetWidth;
+ if (this._splitView.isVertical())
+ width -= this._splitView.sidebarSize();
this.treeOutline.setVisibleWidth(width);
this.updateBreadcrumbSizes();
+ this.treeOutline.updateSelection();
},
+ /**
+ * @return {!Element}
+ */
defaultFocusedElement: function()
{
return this.treeOutline.element;
@@ -152,11 +155,6 @@
return this._searchableView;
},
- statusBarResized: function()
- {
- this.updateBreadcrumbSizes();
- },
-
wasShown: function()
{
// Attach heavy component lazily
@@ -187,27 +185,7 @@
onResize: function()
{
- this.treeOutline.updateSelection();
- this.updateBreadcrumbSizes();
- },
-
- /**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id)
- {
- if (id === "emulation") {
- if (!this._overridesView)
- this._overridesView = new WebInspector.OverridesView();
- return this._overridesView;
- }
- if (id === "rendering") {
- if (!this._renderingView)
- this._renderingView = new WebInspector.RenderingOptionsView();
- return this._renderingView;
- }
- return null;
+ this._updateTreeOutlineVisibleWidth();
},
/**
@@ -243,7 +221,7 @@
WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
action: WebInspector.UserMetrics.UserActionNames.ForcedElementState,
- selector: WebInspector.DOMPresentationUtils.appropriateSelectorFor(node, false),
+ selector: WebInspector.DOMPresentationUtils.fullQualifiedSelector(node, false),
enabled: enable,
state: pseudoClass
});
@@ -263,7 +241,7 @@
ConsoleAgent.addInspectedNode(selectedNode.id);
this._lastValidSelectedNode = selectedNode;
}
- WebInspector.notifications.dispatchEventToListeners(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged);
+ WebInspector.notifications.dispatchEventToListeners(WebInspector.NotificationService.Events.SelectedNodeChanged);
},
_updateSidebars: function()
@@ -322,6 +300,7 @@
/**
* @param {?DOMAgent.NodeId} nodeId
+ * @this {WebInspector.ElementsPanel}
*/
function selectLastSelectedNode(nodeId)
{
@@ -369,6 +348,7 @@
/**
* @param {number} resultCount
+ * @this {WebInspector.ElementsPanel}
*/
function resultCountCallback(resultCount)
{
@@ -394,24 +374,12 @@
var contextMenu = new WebInspector.ContextMenu(event);
this.treeOutline.populateContextMenu(contextMenu, event);
- if (WebInspector.experimentsSettings.cssRegions.isEnabled()) {
- contextMenu.appendSeparator();
- contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "CSS named flows\u2026" : "CSS Named Flows\u2026"), this._showNamedFlowCollections.bind(this));
- }
-
contextMenu.appendSeparator();
contextMenu.appendCheckboxItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Word wrap" : "Word Wrap"), toggleWordWrap.bind(this), WebInspector.settings.domWordWrap.get());
contextMenu.show();
},
- _showNamedFlowCollections: function()
- {
- if (!WebInspector.cssNamedFlowCollectionsView)
- WebInspector.cssNamedFlowCollectionsView = new WebInspector.CSSNamedFlowCollectionsView();
- WebInspector.cssNamedFlowCollectionsView.showInDrawer();
- },
-
_domWordWrapSettingChanged: function(event)
{
if (event.data)
@@ -487,6 +455,10 @@
object.callFunctionJSON(dimensions, undefined, callback);
object.release();
+ /**
+ * @return {!{offsetWidth: number, offsetHeight: number, naturalWidth: number, naturalHeight: number}}
+ * @this {!Element}
+ */
function dimensions()
{
return { offsetWidth: this.offsetWidth, offsetHeight: this.offsetHeight, naturalWidth: this.naturalWidth, naturalHeight: this.naturalHeight };
@@ -554,7 +526,8 @@
}
/**
- * @param {?DOMAgent.Node} node
+ * @param {?WebInspector.DOMNode} node
+ * @this {WebInspector.ElementsPanel}
*/
function searchCallback(node)
{
@@ -1079,8 +1052,14 @@
eventListenersSidebarPane.needsUpdate = false;
},
+ /**
+ * @param {!KeyboardEvent} event
+ */
handleShortcut: function(event)
{
+ /**
+ * @this {WebInspector.ElementsPanel}
+ */
function handleUndoRedo()
{
if (WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) && !event.shiftKey && event.keyIdentifier === "U+005A") { // Z key
@@ -1120,11 +1099,6 @@
this.selectedDOMNode().copyNode();
},
- sidebarResized: function(event)
- {
- this.treeOutline.updateSelection();
- },
-
revealAndSelectNode: function(nodeId)
{
WebInspector.inspectorView.setCurrentPanel(this);
@@ -1189,8 +1163,7 @@
_dockSideChanged: function()
{
- var dockSide = WebInspector.dockController.dockSide();
- var vertically = dockSide === WebInspector.DockController.State.DockedToRight && WebInspector.settings.splitVerticallyWhenDockedToRight.get();
+ var vertically = WebInspector.dockController.isVertical() && WebInspector.settings.splitVerticallyWhenDockedToRight.get();
this._splitVertically(vertically);
},
@@ -1204,15 +1177,15 @@
*/
_splitVertically: function(vertically)
{
- if (this.sidebarPaneView && vertically === !this.splitView.isVertical())
+ if (this.sidebarPaneView && vertically === !this._splitView.isVertical())
return;
if (this.sidebarPaneView) {
this.sidebarPaneView.detach();
- this.splitView.uninstallResizer(this.sidebarPaneView.headerElement());
+ this._splitView.uninstallResizer(this.sidebarPaneView.headerElement());
}
- this.splitView.setVertical(!vertically);
+ this._splitView.setVertical(!vertically);
var computedPane = new WebInspector.SidebarPane(WebInspector.UIString("Computed"));
computedPane.element.classList.add("composite");
@@ -1229,6 +1202,7 @@
/**
* @param {!WebInspector.SidebarPane} pane
* @param {!Element=} beforeElement
+ * @this {WebInspector.ElementsPanel}
*/
function showMetrics(pane, beforeElement)
{
@@ -1237,6 +1211,7 @@
/**
* @param {!WebInspector.Event} event
+ * @this {WebInspector.ElementsPanel}
*/
function tabSelected(event)
{
@@ -1250,7 +1225,7 @@
this.sidebarPaneView = new WebInspector.SidebarTabbedPane();
if (vertically) {
- this.splitView.installResizer(this.sidebarPaneView.headerElement());
+ this._splitView.installResizer(this.sidebarPaneView.headerElement());
this.sidebarPanes.metrics.show(computedPane.bodyElement, this.sidebarPanes.computedStyle.element);
this.sidebarPanes.metrics.setExpandCallback(expandComputed);
@@ -1259,14 +1234,14 @@
compositePane.element.classList.add("fill");
var expandComposite = compositePane.expand.bind(compositePane);
- var splitView = new WebInspector.SplitView(true, "StylesPaneSplitRatio", 0.5);
+ var splitView = new WebInspector.SplitView(true, true, "StylesPaneSplitRatio", 0.5);
splitView.show(compositePane.bodyElement);
- this.sidebarPanes.styles.show(splitView.firstElement());
- splitView.firstElement().appendChild(this.sidebarPanes.styles.titleElement);
+ this.sidebarPanes.styles.show(splitView.mainElement());
+ splitView.mainElement().appendChild(this.sidebarPanes.styles.titleElement);
this.sidebarPanes.styles.setExpandCallback(expandComposite);
- computedPane.show(splitView.secondElement());
+ computedPane.show(splitView.sidebarElement());
computedPane.setExpandCallback(expandComposite);
this.sidebarPaneView.addPane(compositePane);
@@ -1296,7 +1271,7 @@
for (var i = 0; i < this._extensionSidebarPanes.length; ++i)
this._extensionSidebarPanesContainer.addPane(this._extensionSidebarPanes[i]);
- this.sidebarPaneView.show(this.splitView.sidebarElement);
+ this.sidebarPaneView.show(this._splitView.sidebarElement());
this.sidebarPanes.styles.expand();
},
@@ -1312,3 +1287,70 @@
__proto__: WebInspector.Panel.prototype
}
+
+/**
+ * @constructor
+ * @implements {WebInspector.ContextMenu.Provider}
+ */
+WebInspector.ElementsPanel.ContextMenuProvider = function()
+{
+}
+
+WebInspector.ElementsPanel.ContextMenuProvider.prototype = {
+ /**
+ * @param {!Event} event
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!Object} target
+ */
+ appendApplicableItems: function(event, contextMenu, target)
+ {
+ WebInspector.panel("elements").appendApplicableItems(event, contextMenu, target);
+ }
+}
+
+
+/**
+ * @constructor
+ * @extends {WebInspector.Drawer.SingletonViewFactory}
+ */
+WebInspector.ElementsPanel.OverridesViewFactory = function()
+{
+ WebInspector.Drawer.SingletonViewFactory.call(this, WebInspector.OverridesView);
+}
+
+WebInspector.ElementsPanel.OverridesViewFactory.prototype = {
+ __proto__: WebInspector.Drawer.SingletonViewFactory.prototype
+}
+
+
+/**
+ * @constructor
+ * @extends {WebInspector.Drawer.SingletonViewFactory}
+ */
+WebInspector.ElementsPanel.RenderingViewFactory = function()
+{
+ WebInspector.Drawer.SingletonViewFactory.call(this, WebInspector.RenderingOptionsView);
+}
+
+WebInspector.ElementsPanel.RenderingViewFactory.prototype = {
+ __proto__: WebInspector.Drawer.SingletonViewFactory.prototype
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Revealer}
+ */
+WebInspector.ElementsPanel.DOMNodeRevealer = function()
+{
+}
+
+WebInspector.ElementsPanel.DOMNodeRevealer.prototype = {
+ /**
+ * @param {!Object} node
+ */
+ reveal: function(node)
+ {
+ if (node instanceof WebInspector.DOMNode)
+ /** @type {!WebInspector.ElementsPanel} */ (WebInspector.showPanel("elements")).revealAndSelectNode(node.id);
+ }
+}
diff --git a/Source/devtools/front_end/ElementsPanelDescriptor.js b/Source/devtools/front_end/ElementsPanelDescriptor.js
deleted file mode 100644
index 9baa68a..0000000
--- a/Source/devtools/front_end/ElementsPanelDescriptor.js
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
- * @implements {WebInspector.ContextMenu.Provider}
- * @implements {WebInspector.ViewFactory}
- */
-WebInspector.ElementsPanelDescriptor = function()
-{
- WebInspector.PanelDescriptor.call(this, "elements", WebInspector.UIString("Elements"), "ElementsPanel", "ElementsPanel.js");
- WebInspector.ContextMenu.registerProvider(this);
-}
-
-WebInspector.ElementsPanelDescriptor.prototype = {
- /**
- * @param {!WebInspector.ContextMenu} contextMenu
- * @param {!Object} target
- */
- appendApplicableItems: function(event, contextMenu, target)
- {
- if (target instanceof WebInspector.RemoteObject) {
- var remoteObject = /** @type {!WebInspector.RemoteObject} */ (target);
- if (remoteObject.subtype !== "node")
- return;
- } else if (!(target instanceof WebInspector.DOMNode))
- return;
- this.panel().appendApplicableItems(event, contextMenu, target);
- },
-
- registerShortcuts: function()
- {
- var elementsSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Elements Panel"));
-
- var navigate = WebInspector.ElementsPanelDescriptor.ShortcutKeys.NavigateUp.concat(WebInspector.ElementsPanelDescriptor.ShortcutKeys.NavigateDown);
- elementsSection.addRelatedKeys(navigate, WebInspector.UIString("Navigate elements"));
-
- var expandCollapse = WebInspector.ElementsPanelDescriptor.ShortcutKeys.Expand.concat(WebInspector.ElementsPanelDescriptor.ShortcutKeys.Collapse);
- elementsSection.addRelatedKeys(expandCollapse, WebInspector.UIString("Expand/collapse"));
-
- elementsSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.EditAttribute, WebInspector.UIString("Edit attribute"));
- elementsSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.HideElement, WebInspector.UIString("Hide element"));
- elementsSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.ToggleEditAsHTML, WebInspector.UIString("Toggle edit as HTML"));
-
- var stylesPaneSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Styles Pane"));
-
- var nextPreviousProperty = WebInspector.ElementsPanelDescriptor.ShortcutKeys.NextProperty.concat(WebInspector.ElementsPanelDescriptor.ShortcutKeys.PreviousProperty);
- stylesPaneSection.addRelatedKeys(nextPreviousProperty, WebInspector.UIString("Next/previous property"));
-
- stylesPaneSection.addRelatedKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.IncrementValue, WebInspector.UIString("Increment value"));
- stylesPaneSection.addRelatedKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.DecrementValue, WebInspector.UIString("Decrement value"));
-
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.IncrementBy10, WebInspector.UIString("Increment by %f", 10));
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.DecrementBy10, WebInspector.UIString("Decrement by %f", 10));
-
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.IncrementBy100, WebInspector.UIString("Increment by %f", 100));
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.DecrementBy100, WebInspector.UIString("Decrement by %f", 100));
-
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.IncrementBy01, WebInspector.UIString("Increment by %f", 0.1));
- stylesPaneSection.addAlternateKeys(WebInspector.ElementsPanelDescriptor.ShortcutKeys.DecrementBy01, WebInspector.UIString("Decrement by %f", 0.1));
-
- // Install emulation view
- function toggleEmulationView()
- {
- if (WebInspector.settings.showEmulationViewInDrawer.get())
- WebInspector.inspectorView.registerViewInDrawer("emulation", WebInspector.UIString("Emulation"), this);
- else
- WebInspector.inspectorView.unregisterViewInDrawer("emulation");
- }
- WebInspector.settings.showEmulationViewInDrawer.addChangeListener(toggleEmulationView, this);
- toggleEmulationView.call(this);
-
- // Install rendering view
- function toggleRenderingView()
- {
- if (WebInspector.settings.showRenderingViewInDrawer.get())
- WebInspector.inspectorView.registerViewInDrawer("rendering", WebInspector.UIString("Rendering"), this);
- else
- WebInspector.inspectorView.unregisterViewInDrawer("rendering");
- }
- WebInspector.settings.showRenderingViewInDrawer.addChangeListener(toggleRenderingView, this);
- toggleRenderingView.call(this);
- },
-
- /**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id)
- {
- return this.panel().createView(id);
- },
-
- __proto__: WebInspector.PanelDescriptor.prototype
-}
-
-WebInspector.ElementsPanelDescriptor.ShortcutKeys = {
- NavigateUp: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up)
- ],
-
- NavigateDown: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down)
- ],
-
- Expand: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Right)
- ],
-
- Collapse: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Left)
- ],
-
- EditAttribute: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Enter)
- ],
-
- HideElement: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.H)
- ],
-
- ToggleEditAsHTML: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F2)
- ],
-
- NextProperty: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Tab)
- ],
-
- PreviousProperty: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Tab, WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- IncrementValue: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up)
- ],
-
- DecrementValue: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down)
- ],
-
- IncrementBy10: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up, WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- DecrementBy10: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down, WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- IncrementBy100: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- DecrementBy100: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- IncrementBy01: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ],
-
- DecrementBy01: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ]
-};
diff --git a/Source/devtools/front_end/ElementsTreeOutline.js b/Source/devtools/front_end/ElementsTreeOutline.js
index 26132f4..d87c9a9 100644
--- a/Source/devtools/front_end/ElementsTreeOutline.js
+++ b/Source/devtools/front_end/ElementsTreeOutline.js
@@ -699,6 +699,10 @@
if (!object)
return;
+ /**
+ * @param {?string} pseudoType
+ * @this {!Element}
+ */
function toggleClassAndInjectStyleRule(pseudoType)
{
const classNamePrefix = "__web-inspector-hide";
@@ -773,6 +777,10 @@
WebInspector.ElementsTreeOutline.PseudoStateDecorator.PropertyName = "pseudoState";
WebInspector.ElementsTreeOutline.PseudoStateDecorator.prototype = {
+ /**
+ * @param {!WebInspector.DOMNode} node
+ * @return {?string}
+ */
decorate: function(node)
{
if (node.nodeType() !== Node.ELEMENT_NODE)
@@ -783,6 +791,10 @@
return WebInspector.UIString("Element state: %s", ":" + propertyValue.join(", :"));
},
+ /**
+ * @param {!WebInspector.DOMNode} node
+ * @return {?string}
+ */
decorateAncestor: function(node)
{
if (node.nodeType() !== Node.ELEMENT_NODE)
@@ -794,9 +806,7 @@
if (descendantCount === 1)
return WebInspector.UIString("%d descendant with forced state", descendantCount);
return WebInspector.UIString("%d descendants with forced state", descendantCount);
- },
-
- __proto__: WebInspector.ElementsTreeOutline.ElementDecorator.prototype
+ }
}
/**
@@ -1000,7 +1010,7 @@
_preventFollowingLinksOnDoubleClick: function()
{
- var links = this.listItemElement.querySelectorAll("li > .webkit-html-tag > .webkit-html-attribute > .webkit-html-external-link, li > .webkit-html-tag > .webkit-html-attribute > .webkit-html-resource-link");
+ var links = this.listItemElement.querySelectorAll("li .webkit-html-tag > .webkit-html-attribute > .webkit-html-external-link, li .webkit-html-tag > .webkit-html-attribute > .webkit-html-resource-link");
if (!links)
return;
@@ -1028,6 +1038,7 @@
/**
* @param {boolean=} closingTag
+ * @return {!WebInspector.ElementsTreeElement}
*/
insertChildElement: function(child, index, closingTag)
{
@@ -1070,6 +1081,9 @@
var treeChildIndex = 0;
var elementToSelect;
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function updateChildrenOfNode()
{
var treeOutline = treeElement.treeOutline;
@@ -1184,6 +1198,9 @@
expandRecursively: function()
{
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function callback()
{
TreeElement.prototype.expandRecursively.call(this, Number.MAX_VALUE);
@@ -1229,6 +1246,8 @@
/**
* @override
+ * @param {boolean=} selectedByUser
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1243,6 +1262,7 @@
/**
* @override
+ * @return {boolean}
*/
ondelete: function()
{
@@ -1253,6 +1273,7 @@
/**
* @override
+ * @return {boolean}
*/
onenter: function()
{
@@ -1286,6 +1307,7 @@
/**
* @override
+ * @return {boolean}
*/
ondblclick: function(event)
{
@@ -1437,7 +1459,7 @@
// a parent node. Use a temporary span container for the HTML.
var container = document.createElement("span");
this._buildAttributeDOM(container, " ", "");
- var attr = container.firstChild;
+ var attr = container.firstElementChild;
attr.style.marginLeft = "2px"; // overrides the .editing margin rule
attr.style.marginRight = "2px"; // overrides the .editing margin rule
@@ -1500,7 +1522,7 @@
// Remove zero-width spaces that were added by nodeTitleInfo.
removeZeroWidthSpaceRecursive(attribute);
- var config = new WebInspector.EditingConfig(this._attributeEditingCommitted.bind(this), this._editingCancelled.bind(this), attributeName);
+ var config = new WebInspector.InplaceEditor.Config(this._attributeEditingCommitted.bind(this), this._editingCancelled.bind(this), attributeName);
function handleKeyDownEvents(event)
{
@@ -1521,7 +1543,7 @@
config.customFinishHandler = handleKeyDownEvents.bind(this);
- this._editing = WebInspector.startEditing(attribute, config);
+ this._editing = WebInspector.InplaceEditor.startEditing(attribute, config);
window.getSelection().setBaseAndExtent(elementForSelection, 0, elementForSelection, 1);
@@ -1545,8 +1567,8 @@
var container = textNodeElement.enclosingNodeOrSelfWithClass("webkit-html-text-node");
if (container)
container.textContent = textNode.nodeValue(); // Strip the CSS or JS highlighting if present.
- var config = new WebInspector.EditingConfig(this._textNodeEditingCommitted.bind(this, textNode), this._editingCancelled.bind(this));
- this._editing = WebInspector.startEditing(textNodeElement, config);
+ var config = new WebInspector.InplaceEditor.Config(this._textNodeEditingCommitted.bind(this, textNode), this._editingCancelled.bind(this));
+ this._editing = WebInspector.InplaceEditor.startEditing(textNodeElement, config);
window.getSelection().setBaseAndExtent(textNodeElement, 0, textNodeElement, 1);
return true;
@@ -1572,18 +1594,30 @@
var closingTagElement = this._distinctClosingTagElement();
+ /**
+ * @param {?Event} event
+ * @this {WebInspector.ElementsTreeElement}
+ */
function keyupListener(event)
{
if (closingTagElement)
closingTagElement.textContent = "</" + tagNameElement.textContent + ">";
}
+ /**
+ * @param {!Element} element
+ * @param {string} newTagName
+ * @this {WebInspector.ElementsTreeElement}
+ */
function editingComitted(element, newTagName)
{
tagNameElement.removeEventListener('keyup', keyupListener, false);
this._tagNameEditingCommitted.apply(this, arguments);
}
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function editingCancelled()
{
tagNameElement.removeEventListener('keyup', keyupListener, false);
@@ -1592,8 +1626,8 @@
tagNameElement.addEventListener('keyup', keyupListener, false);
- var config = new WebInspector.EditingConfig(editingComitted.bind(this), editingCancelled.bind(this), tagName);
- this._editing = WebInspector.startEditing(tagNameElement, config);
+ var config = new WebInspector.InplaceEditor.Config(editingComitted.bind(this), editingCancelled.bind(this), tagName);
+ this._editing = WebInspector.InplaceEditor.startEditing(tagNameElement, config);
window.getSelection().setBaseAndExtent(tagNameElement, 0, tagNameElement, 1);
return true;
},
@@ -1634,6 +1668,7 @@
/**
* @param {!Element} element
* @param {string} newValue
+ * @this {WebInspector.ElementsTreeElement}
*/
function commit(element, newValue)
{
@@ -1641,6 +1676,9 @@
dispose.call(this);
}
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function dispose()
{
delete this._editing;
@@ -1664,9 +1702,9 @@
this.treeOutline.element.focus();
}
- var config = new WebInspector.EditingConfig(commit.bind(this), dispose.bind(this));
+ var config = new WebInspector.InplaceEditor.Config(commit.bind(this), dispose.bind(this));
config.setMultilineOptions(initialValue, { name: "xml", htmlMode: true }, "web-inspector-html", WebInspector.settings.domWordWrap.get(), true);
- this._editing = WebInspector.startEditing(this._htmlEditElement, config);
+ this._editing = WebInspector.InplaceEditor.startEditing(this._htmlEditElement, config);
this._editing.setWidth(this.treeOutline._visibleWidth);
this.treeOutline._multilineEditing = this._editing;
},
@@ -1676,8 +1714,10 @@
delete this._editing;
var treeOutline = this.treeOutline;
+
/**
* @param {?Protocol.Error=} error
+ * @this {WebInspector.ElementsTreeElement}
*/
function moveToNextAttributeIfNeeded(error)
{
@@ -1758,6 +1798,9 @@
moveToNextAttributeIfNeeded.call(self);
}
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function moveToNextAttributeIfNeeded()
{
if (moveDirection !== "forward") {
@@ -1803,6 +1846,9 @@
{
delete this._editing;
+ /**
+ * @this {WebInspector.ElementsTreeElement}
+ */
function callback()
{
this.updateTitle();
@@ -1922,12 +1968,52 @@
* @param {!Node} parentElement
* @param {string} name
* @param {string} value
+ * @param {boolean=} forceValue
* @param {!WebInspector.DOMNode=} node
* @param {function(string, string, string, boolean=, string=)=} linkify
*/
- _buildAttributeDOM: function(parentElement, name, value, node, linkify)
+ _buildAttributeDOM: function(parentElement, name, value, forceValue, node, linkify)
{
- var hasText = (value.length > 0);
+ var closingPunctuationRegex = /[\/;:\)\]\}]/g;
+ var highlightIndex = 0;
+ var highlightCount;
+ var additionalHighlightOffset = 0;
+ var result;
+
+ /**
+ * @param {string} match
+ * @param {number} replaceOffset
+ * @return {string}
+ */
+ function replacer(match, replaceOffset) {
+ while (highlightIndex < highlightCount && result.entityRanges[highlightIndex].offset < replaceOffset) {
+ result.entityRanges[highlightIndex].offset += additionalHighlightOffset;
+ ++highlightIndex;
+ }
+ additionalHighlightOffset += 1;
+ return match + "\u200B";
+ }
+
+ /**
+ * @param {!Element} element
+ * @param {string} value
+ * @this {WebInspector.ElementsTreeElement}
+ */
+ function setValueWithEntities(element, value)
+ {
+ var attrValueElement = element.createChild("span", "webkit-html-attribute-value");
+ result = this._convertWhitespaceToEntities(value);
+ highlightCount = result.entityRanges.length;
+ value = result.text.replace(closingPunctuationRegex, replacer);
+ while (highlightIndex < highlightCount) {
+ result.entityRanges[highlightIndex].offset += additionalHighlightOffset;
+ ++highlightIndex;
+ }
+ attrValueElement.textContent = value;
+ WebInspector.highlightRangesWithStyleClass(attrValueElement, result.entityRanges, "webkit-html-entity-value");
+ }
+
+ var hasText = (forceValue || value.length > 0);
var attrSpanElement = parentElement.createChild("span", "webkit-html-attribute");
var attrNameElement = attrSpanElement.createChild("span", "webkit-html-attribute-name");
attrNameElement.textContent = name;
@@ -1937,19 +2023,16 @@
if (linkify && (name === "src" || name === "href")) {
var rewrittenHref = node.resolveURL(value);
- value = value.replace(/([\/;:\)\]\}])/g, "$1\u200B");
if (rewrittenHref === null) {
- var attrValueElement = attrSpanElement.createChild("span", "webkit-html-attribute-value");
- attrValueElement.textContent = value;
+ setValueWithEntities.call(this, attrSpanElement, value);
} else {
+ value = value.replace(closingPunctuationRegex, "$&\u200B");
if (value.startsWith("data:"))
value = value.trimMiddle(60);
attrSpanElement.appendChild(linkify(rewrittenHref, value, "webkit-html-attribute-value", node.nodeName().toLowerCase() === "a"));
}
} else {
- value = value.replace(/([\/;:\)\]\}])/g, "$1\u200B");
- var attrValueElement = attrSpanElement.createChild("span", "webkit-html-attribute-value");
- attrValueElement.textContent = value;
+ setValueWithEntities.call(this, attrSpanElement, value);
}
if (hasText)
@@ -1989,7 +2072,7 @@
for (var i = 0; i < attributes.length; ++i) {
var attr = attributes[i];
tagElement.appendChild(document.createTextNode(" "));
- this._buildAttributeDOM(tagElement, attr.name, attr.value, node, linkify);
+ this._buildAttributeDOM(tagElement, attr.name, attr.value, false, node, linkify);
}
}
tagElement.appendChild(document.createTextNode(">"));
@@ -2032,8 +2115,7 @@
switch (node.nodeType()) {
case Node.ATTRIBUTE_NODE:
- var value = node.value || "\u200B"; // Zero width space to force showing an empty value.
- this._buildAttributeDOM(info.titleDOM, node.name, value);
+ this._buildAttributeDOM(info.titleDOM, node.name, node.value, true);
break;
case Node.ELEMENT_NODE:
@@ -2152,7 +2234,7 @@
*/
_showInlineText: function()
{
- if (this._node.templateContent() || (WebInspector.ElementsTreeOutline.showShadowDOM() && this._node.hasShadowRoots()) || this._node.hasPseudoElements())
+ if (this._node.importedDocument() || this._node.templateContent() || (WebInspector.ElementsTreeOutline.showShadowDOM() && this._node.hasShadowRoots()) || this._node.hasPseudoElements())
return false;
if (this._node.nodeType() !== Node.ELEMENT_NODE)
return false;
@@ -2295,6 +2377,9 @@
{
function scrollIntoViewCallback(object)
{
+ /**
+ * @this {!Element}
+ */
function scrollIntoView()
{
this.scrollIntoViewIfNeeded(true);
@@ -2313,6 +2398,8 @@
_visibleChildren: function()
{
var visibleChildren = WebInspector.ElementsTreeOutline.showShadowDOM() ? this._node.shadowRoots() : [];
+ if (this._node.importedDocument())
+ visibleChildren.push(this._node.importedDocument());
if (this._node.templateContent())
visibleChildren.push(this._node.templateContent());
var pseudoElements = this._node.pseudoElements();
@@ -2331,6 +2418,8 @@
_visibleChildCount: function()
{
var childCount = this._node.childNodeCount();
+ if (this._node.importedDocument())
+ ++childCount;
if (this._node.templateContent())
++childCount;
if (WebInspector.ElementsTreeOutline.showShadowDOM())
@@ -2513,3 +2602,31 @@
if (parent)
this.parent = parent;
}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Renderer}
+ */
+WebInspector.ElementsTreeOutline.Renderer = function()
+{
+}
+
+WebInspector.ElementsTreeOutline.Renderer.prototype = {
+ /**
+ * @param {!Object} object
+ * @return {?Element}
+ */
+ render: function(object)
+ {
+ if (!(object instanceof WebInspector.DOMNode))
+ return null;
+ var treeOutline = new WebInspector.ElementsTreeOutline(false, false);
+ treeOutline.rootDOMNode = /** @type {!WebInspector.DOMNode} */ (object);
+ treeOutline.element.classList.add("outline-disclosure");
+ if (!treeOutline.children[0].hasChildren)
+ treeOutline.element.classList.add("single-node");
+ treeOutline.setVisible(true);
+ treeOutline.element.treeElementForTest = treeOutline.children[0];
+ return treeOutline.element;
+ }
+}
diff --git a/Source/devtools/front_end/EmptyView.js b/Source/devtools/front_end/EmptyView.js
index a8b51c1..9db05c1 100644
--- a/Source/devtools/front_end/EmptyView.js
+++ b/Source/devtools/front_end/EmptyView.js
@@ -41,7 +41,7 @@
WebInspector.EmptyView.prototype = {
wasShown: function()
{
- this.element.className = "empty-view";
+ this.element.classList.add("empty-view");
this.element.textContent = this._text;
},
diff --git a/Source/devtools/front_end/EventListenersSidebarPane.js b/Source/devtools/front_end/EventListenersSidebarPane.js
index 2981e78..7e74a3f 100644
--- a/Source/devtools/front_end/EventListenersSidebarPane.js
+++ b/Source/devtools/front_end/EventListenersSidebarPane.js
@@ -190,28 +190,27 @@
WebInspector.EventListenerBar.prototype = {
update: function()
{
+ /**
+ * @param {?WebInspector.RemoteObject} nodeObject
+ * @this {WebInspector.EventListenerBar}
+ */
function updateWithNodeObject(nodeObject)
{
var properties = [];
- if (this.eventListener.type)
- properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("type", this.eventListener.type));
- if (typeof this.eventListener.useCapture !== "undefined")
- properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("useCapture", this.eventListener.useCapture));
- if (typeof this.eventListener.isAttribute !== "undefined")
- properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("isAttribute", this.eventListener.isAttribute));
+ properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("type", this.eventListener.type));
+ properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("useCapture", this.eventListener.useCapture));
+ properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("isAttribute", this.eventListener.isAttribute));
if (nodeObject)
properties.push(new WebInspector.RemoteObjectProperty("node", nodeObject));
if (typeof this.eventListener.handler !== "undefined") {
var remoteObject = WebInspector.RemoteObject.fromPayload(this.eventListener.handler);
properties.push(new WebInspector.RemoteObjectProperty("handler", remoteObject));
}
- if (typeof this.eventListener.handlerBody !== "undefined")
- properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("listenerBody", this.eventListener.handlerBody));
+ properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("listenerBody", this.eventListener.handlerBody));
if (this.eventListener.sourceName)
properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("sourceName", this.eventListener.sourceName));
- if (this.eventListener.location)
- properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("lineNumber", this.eventListener.location.lineNumber + 1));
+ properties.push(WebInspector.RemoteObjectProperty.fromPrimitiveValue("lineNumber", this.eventListener.location.lineNumber + 1));
this.updateProperties(properties);
}
@@ -230,7 +229,7 @@
}
if (node.id === this._nodeId) {
- this.titleElement.textContent = WebInspector.DOMPresentationUtils.appropriateSelectorFor(node);
+ this.titleElement.textContent = WebInspector.DOMPresentationUtils.simpleSelector(node);
return;
}
@@ -240,26 +239,15 @@
_setFunctionSubtitle: function(linkifier)
{
- // Requires that Function.toString() return at least the function's signature.
- if (this.eventListener.location) {
- this.subtitleElement.removeChildren();
- var urlElement;
- if (this.eventListener.location.scriptId)
- urlElement = linkifier.linkifyRawLocation(this.eventListener.location);
- if (!urlElement) {
- var url = this.eventListener.sourceName;
- var lineNumber = this.eventListener.location.lineNumber;
- var columnNumber = 0;
- urlElement = linkifier.linkifyLocation(url, lineNumber, columnNumber);
- }
- this.subtitleElement.appendChild(urlElement);
- } else {
- var match = this.eventListener.handlerBody.match(/function ([^\(]+?)\(/);
- if (match)
- this.subtitleElement.textContent = match[1];
- else
- this.subtitleElement.textContent = WebInspector.UIString("(anonymous function)");
+ this.subtitleElement.removeChildren();
+ var urlElement = linkifier.linkifyRawLocation(this.eventListener.location);
+ if (!urlElement) {
+ var url = this.eventListener.sourceName;
+ var lineNumber = this.eventListener.location.lineNumber;
+ var columnNumber = 0;
+ urlElement = linkifier.linkifyLocation(url, lineNumber, columnNumber);
}
+ this.subtitleElement.appendChild(urlElement);
},
__proto__: WebInspector.ObjectPropertiesSection.prototype
diff --git a/Source/devtools/front_end/ExtensionAPI.js b/Source/devtools/front_end/ExtensionAPI.js
index 34d703c..6dd47ae 100644
--- a/Source/devtools/front_end/ExtensionAPI.js
+++ b/Source/devtools/front_end/ExtensionAPI.js
@@ -104,6 +104,10 @@
};
}
+/**
+ * @param {number} injectedScriptId
+ * @return {!Object}
+ */
function injectedExtensionAPI(injectedScriptId)
{
@@ -156,7 +160,10 @@
extensionServer.sendRequest({ command: commands.Unsubscribe, type: this._type });
},
- _fire: function()
+ /**
+ * @param {...} vararg
+ */
+ _fire: function(vararg)
{
var listeners = this._listeners.slice();
for (var i = 0; i < listeners.length; ++i)
@@ -216,6 +223,9 @@
*/
function Network()
{
+ /**
+ * @this {EventSinkImpl}
+ */
function dispatchRequestEvent(message)
{
var request = message.arguments[1];
@@ -239,12 +249,12 @@
}
callback(result);
}
- return extensionServer.sendRequest({ command: commands.GetHAR }, callback && callbackWrapper);
+ extensionServer.sendRequest({ command: commands.GetHAR }, callback && callbackWrapper);
},
addRequestHeaders: function(headers)
{
- return extensionServer.sendRequest({ command: commands.AddRequestHeaders, headers: headers, extensionId: window.location.hostname });
+ extensionServer.sendRequest({ command: commands.AddRequestHeaders, headers: headers, extensionId: window.location.hostname });
}
}
@@ -343,6 +353,9 @@
{
this._id = id;
+ /**
+ * @this {EventSinkImpl}
+ */
function dispatchShowEvent(message)
{
var frameIndex = message.arguments[0];
@@ -357,6 +370,7 @@
/**
* @constructor
+ * @extends {ExtensionViewImpl}
*/
function PanelWithSidebarImpl(hostPanelName)
{
@@ -384,6 +398,47 @@
__proto__: ExtensionViewImpl.prototype
}
+function declareInterfaceClass(implConstructor)
+{
+ return function()
+ {
+ var impl = { __proto__: implConstructor.prototype };
+ implConstructor.apply(impl, arguments);
+ populateInterfaceClass(this, impl);
+ }
+}
+
+function defineDeprecatedProperty(object, className, oldName, newName)
+{
+ var warningGiven = false;
+ function getter()
+ {
+ if (!warningGiven) {
+ console.warn(className + "." + oldName + " is deprecated. Use " + className + "." + newName + " instead");
+ warningGiven = true;
+ }
+ return object[newName];
+ }
+ object.__defineGetter__(oldName, getter);
+}
+
+function extractCallbackArgument(args)
+{
+ var lastArgument = args[args.length - 1];
+ return typeof lastArgument === "function" ? lastArgument : undefined;
+}
+
+var AuditCategory = declareInterfaceClass(AuditCategoryImpl);
+var AuditResult = declareInterfaceClass(AuditResultImpl);
+var Button = declareInterfaceClass(ButtonImpl);
+var EventSink = declareInterfaceClass(EventSinkImpl);
+var ExtensionPanel = declareInterfaceClass(ExtensionPanelImpl);
+var ExtensionSidebarPane = declareInterfaceClass(ExtensionSidebarPaneImpl);
+var PanelWithSidebar = declareInterfaceClass(PanelWithSidebarImpl);
+var Request = declareInterfaceClass(RequestImpl);
+var Resource = declareInterfaceClass(ResourceImpl);
+var Timeline = declareInterfaceClass(TimelineImpl);
+
/**
* @constructor
* @extends {PanelWithSidebar}
@@ -393,6 +448,10 @@
PanelWithSidebar.call(this, "elements");
}
+ElementsPanel.prototype = {
+ __proto__: PanelWithSidebar.prototype
+}
+
/**
* @constructor
* @extends {PanelWithSidebar}
@@ -402,6 +461,10 @@
PanelWithSidebar.call(this, "sources");
}
+SourcesPanel.prototype = {
+ __proto__: PanelWithSidebar.prototype
+}
+
/**
* @constructor
* @extends {ExtensionViewImpl}
@@ -413,6 +476,9 @@
}
ExtensionPanelImpl.prototype = {
+ /**
+ * @return {!Object}
+ */
createStatusBarButton: function(iconPath, tooltipText, disabled)
{
var id = "button-" + extensionServer.nextObjectId();
@@ -480,7 +546,9 @@
setPage: function(page)
{
extensionServer.sendRequest({ command: commands.SetSidebarPage, id: this._id, page: page });
- }
+ },
+
+ __proto__: ExtensionViewImpl.prototype
}
/**
@@ -514,6 +582,9 @@
}
Audits.prototype = {
+ /**
+ * @return {!AuditCategory}
+ */
addCategory: function(displayName, resultCount)
{
var id = "extension-audit-category-" + extensionServer.nextObjectId();
@@ -529,6 +600,9 @@
*/
function AuditCategoryImpl(id)
{
+ /**
+ * @this {EventSinkImpl}
+ */
function dispatchAuditEvent(request)
{
var auditResult = new AuditResult(request.arguments[0]);
@@ -575,6 +649,9 @@
extensionServer.sendRequest(request);
},
+ /**
+ * @return {!Object}
+ */
createResult: function()
{
return new AuditResultNode(Array.prototype.slice.call(arguments));
@@ -590,11 +667,17 @@
extensionServer.sendRequest({ command: commands.StopAuditCategoryRun, resultId: this._id });
},
+ /**
+ * @type {!Object.<string, string>}
+ */
get Severity()
{
return apiPrivate.audits.Severity;
},
+ /**
+ * @return {!{type: string, arguments: !Array.<string|number>}}
+ */
createResourceLink: function(url, lineNumber)
{
return {
@@ -603,6 +686,9 @@
};
},
+ /**
+ * @return {!{type: string, arguments: !Array.<string|number>}}
+ */
_nodeFactory: function(type)
{
return {
@@ -623,6 +709,9 @@
}
AuditResultNode.prototype = {
+ /**
+ * @return {!Object}
+ */
addChild: function()
{
var node = new AuditResultNode(Array.prototype.slice.call(arguments));
@@ -636,14 +725,22 @@
*/
function InspectedWindow()
{
+ /**
+ * @this {EventSinkImpl}
+ */
function dispatchResourceEvent(message)
{
this._fire(new Resource(message.arguments[0]));
}
+
+ /**
+ * @this {EventSinkImpl}
+ */
function dispatchResourceContentEvent(message)
{
this._fire(new Resource(message.arguments[0]), message.arguments[1]);
}
+
this.onResourceAdded = new EventSink(events.ResourceAdded, dispatchResourceEvent);
this.onResourceContentCommitted = new EventSink(events.ResourceContentCommitted, dispatchResourceContentEvent);
}
@@ -659,9 +756,12 @@
console.warn("Passing userAgent as string parameter to inspectedWindow.reload() is deprecated. " +
"Use inspectedWindow.reload({ userAgent: value}) instead.");
}
- return extensionServer.sendRequest({ command: commands.Reload, options: options });
+ extensionServer.sendRequest({ command: commands.Reload, options: options });
},
+ /**
+ * @return {?Object}
+ */
eval: function(expression, evaluateOptions)
{
var callback = extractCallbackArgument(arguments);
@@ -678,7 +778,8 @@
};
if (typeof evaluateOptions === "object")
request.evaluateOptions = evaluateOptions;
- return extensionServer.sendRequest(request, callback && callbackWrapper);
+ extensionServer.sendRequest(request, callback && callbackWrapper);
+ return null;
},
getResources: function(callback)
@@ -691,7 +792,7 @@
{
callback(resources.map(wrapResource));
}
- return extensionServer.sendRequest({ command: commands.GetPageResources }, callback && callbackWrapper);
+ extensionServer.sendRequest({ command: commands.GetPageResources }, callback && callbackWrapper);
}
}
@@ -722,12 +823,12 @@
callback(response.content, response.encoding);
}
- return extensionServer.sendRequest({ command: commands.GetResourceContent, url: this._url }, callback && callbackWrapper);
+ extensionServer.sendRequest({ command: commands.GetResourceContent, url: this._url }, callback && callbackWrapper);
},
setContent: function(content, commit, callback)
{
- return extensionServer.sendRequest({ command: commands.SetResourceContent, url: this._url, content: content, commit: commit }, callback);
+ extensionServer.sendRequest({ command: commands.SetResourceContent, url: this._url, content: content, commit: commit }, callback);
}
}
@@ -788,9 +889,12 @@
{
if (typeof callback === "function")
message.requestId = this._registerCallback(callback);
- return this._port.postMessage(message);
+ this._port.postMessage(message);
},
+ /**
+ * @return {boolean}
+ */
hasHandler: function(command)
{
return !!this._handlers[command];
@@ -806,6 +910,9 @@
delete this._handlers[command];
},
+ /**
+ * @return {string}
+ */
nextObjectId: function()
{
return injectedScriptId + "_" + ++this._lastObjectId;
@@ -856,47 +963,6 @@
}
}
-function declareInterfaceClass(implConstructor)
-{
- return function()
- {
- var impl = { __proto__: implConstructor.prototype };
- implConstructor.apply(impl, arguments);
- populateInterfaceClass(this, impl);
- }
-}
-
-function defineDeprecatedProperty(object, className, oldName, newName)
-{
- var warningGiven = false;
- function getter()
- {
- if (!warningGiven) {
- console.warn(className + "." + oldName + " is deprecated. Use " + className + "." + newName + " instead");
- warningGiven = true;
- }
- return object[newName];
- }
- object.__defineGetter__(oldName, getter);
-}
-
-function extractCallbackArgument(args)
-{
- var lastArgument = args[args.length - 1];
- return typeof lastArgument === "function" ? lastArgument : undefined;
-}
-
-var AuditCategory = declareInterfaceClass(AuditCategoryImpl);
-var AuditResult = declareInterfaceClass(AuditResultImpl);
-var Button = declareInterfaceClass(ButtonImpl);
-var EventSink = declareInterfaceClass(EventSinkImpl);
-var ExtensionPanel = declareInterfaceClass(ExtensionPanelImpl);
-var ExtensionSidebarPane = declareInterfaceClass(ExtensionSidebarPaneImpl);
-var PanelWithSidebar = declareInterfaceClass(PanelWithSidebarImpl);
-var Request = declareInterfaceClass(RequestImpl);
-var Resource = declareInterfaceClass(ResourceImpl);
-var Timeline = declareInterfaceClass(TimelineImpl);
-
// extensionServer is a closure variable defined by the glue below -- make sure we fail if it's not there.
if (!extensionServer)
extensionServer = new ExtensionServerClient();
@@ -905,6 +971,56 @@
}
/**
+ * @suppress {checkVars, checkTypes}
+ */
+function platformExtensionAPI(coreAPI)
+{
+ function getTabId()
+ {
+ return tabId;
+ }
+ chrome = window.chrome || {};
+ // Override chrome.devtools as a workaround for a error-throwing getter being exposed
+ // in extension pages loaded into a non-extension process (only happens for remote client
+ // extensions)
+ var devtools_descriptor = Object.getOwnPropertyDescriptor(chrome, "devtools");
+ if (!devtools_descriptor || devtools_descriptor.get)
+ Object.defineProperty(chrome, "devtools", { value: {}, enumerable: true });
+ // Only expose tabId on chrome.devtools.inspectedWindow, not webInspector.inspectedWindow.
+ chrome.devtools.inspectedWindow = {};
+ chrome.devtools.inspectedWindow.__defineGetter__("tabId", getTabId);
+ chrome.devtools.inspectedWindow.__proto__ = coreAPI.inspectedWindow;
+ chrome.devtools.network = coreAPI.network;
+ chrome.devtools.panels = coreAPI.panels;
+
+ // default to expose experimental APIs for now.
+ if (extensionInfo.exposeExperimentalAPIs !== false) {
+ chrome.experimental = chrome.experimental || {};
+ chrome.experimental.devtools = chrome.experimental.devtools || {};
+
+ var properties = Object.getOwnPropertyNames(coreAPI);
+ for (var i = 0; i < properties.length; ++i) {
+ var descriptor = Object.getOwnPropertyDescriptor(coreAPI, properties[i]);
+ Object.defineProperty(chrome.experimental.devtools, properties[i], descriptor);
+ }
+ chrome.experimental.devtools.inspectedWindow = chrome.devtools.inspectedWindow;
+ }
+ if (extensionInfo.exposeWebInspectorNamespace)
+ window.webInspector = coreAPI;
+}
+
+/**
+ * @param {!ExtensionDescriptor} extensionInfo
+ * @return {string}
+ */
+function buildPlatformExtensionAPI(extensionInfo)
+{
+ return "var extensionInfo = " + JSON.stringify(extensionInfo) + ";" +
+ "var tabId = " + WebInspector._inspectedTabId + ";" +
+ platformExtensionAPI.toString();
+}
+
+/**
* @param {!ExtensionDescriptor} extensionInfo
* @return {string}
*/
diff --git a/Source/devtools/front_end/ExtensionAuditCategory.js b/Source/devtools/front_end/ExtensionAuditCategory.js
index e9bfdd9..a83b55c 100644
--- a/Source/devtools/front_end/ExtensionAuditCategory.js
+++ b/Source/devtools/front_end/ExtensionAuditCategory.js
@@ -30,7 +30,7 @@
/**
* @constructor
- * @extends {WebInspector.AuditCategory}
+ * @implements {WebInspector.AuditCategory}
* @param {string} extensionOrigin
* @param {string} id
* @param {string} displayName
@@ -45,18 +45,24 @@
}
WebInspector.ExtensionAuditCategory.prototype = {
- // AuditCategory interface
+ /**
+ * @override
+ */
get id()
{
return this._id;
},
+ /**
+ * @override
+ */
get displayName()
{
return this._displayName;
},
/**
+ * @override
* @param {!Array.<!WebInspector.NetworkRequest>} requests
* @param {function(!WebInspector.AuditRuleResult)} ruleResultCallback
* @param {function()} categoryDoneCallback
@@ -165,6 +171,7 @@
* @param {string} expression
* @param {string} title
* @param {?Object} evaluateOptions
+ * @return {!Element}
*/
object: function(expression, title, evaluateOptions)
{
@@ -184,6 +191,7 @@
* @this {WebInspector.ExtensionAuditCategoryResults}
* @param {string} expression
* @param {?Object} evaluateOptions
+ * @return {!Element}
*/
node: function(expression, evaluateOptions)
{
@@ -195,11 +203,12 @@
{
if (!nodeId)
return;
- var treeOutline = new WebInspector.ElementsTreeOutline(false, false);
- treeOutline.rootDOMNode = WebInspector.domAgent.nodeForId(nodeId);
- treeOutline.element.classList.add("outline-disclosure");
- treeOutline.setVisible(true);
- parentElement.appendChild(treeOutline.element);
+ var node = WebInspector.domAgent.nodeForId(nodeId);
+ var renderer = WebInspector.moduleManager.instance(WebInspector.Renderer, node);
+ if (renderer)
+ parentElement.appendChild(renderer.render(node));
+ else
+ console.error("No renderer for node found");
}
/**
* @param {!WebInspector.RemoteObject} remoteObject
diff --git a/Source/devtools/front_end/ExtensionPanel.js b/Source/devtools/front_end/ExtensionPanel.js
index 9f4315e..71eca98 100644
--- a/Source/devtools/front_end/ExtensionPanel.js
+++ b/Source/devtools/front_end/ExtensionPanel.js
@@ -51,6 +51,9 @@
}
WebInspector.ExtensionPanel.prototype = {
+ /**
+ * @return {!Element}
+ */
defaultFocusedElement: function()
{
return WebInspector.View.prototype.defaultFocusedElement.call(this);
@@ -172,7 +175,7 @@
setExpression: function(expression, title, evaluateOptions, securityOrigin, callback)
{
this._createObjectPropertiesView();
- return WebInspector.extensionServer.evaluate(expression, true, false, evaluateOptions, securityOrigin, this._onEvaluate.bind(this, title, callback));
+ WebInspector.extensionServer.evaluate(expression, true, false, evaluateOptions, securityOrigin, this._onEvaluate.bind(this, title, callback));
},
/**
diff --git a/Source/devtools/front_end/ExtensionServer.js b/Source/devtools/front_end/ExtensionServer.js
index a727b7e..af2775e 100644
--- a/Source/devtools/front_end/ExtensionServer.js
+++ b/Source/devtools/front_end/ExtensionServer.js
@@ -28,8 +28,14 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
+importScript("ExtensionRegistryStub.js");
+importScript("ExtensionAPI.js");
+importScript("ExtensionAuditCategory.js");
+
/**
* @constructor
+ * @implements {WebInspector.ExtensionServerAPI}
*/
WebInspector.ExtensionServer = function()
{
@@ -74,11 +80,15 @@
this._registerHandler(commands.Unsubscribe, this._onUnsubscribe.bind(this));
this._registerHandler(commands.UpdateButton, this._onUpdateButton.bind(this));
this._registerHandler(commands.UpdateAuditProgress, this._onUpdateAuditProgress.bind(this));
-
window.addEventListener("message", this._onWindowMessage.bind(this), false);
+
+ this._initExtensions();
}
WebInspector.ExtensionServer.prototype = {
+ /**
+ * @return {boolean}
+ */
hasExtensions: function()
{
return !!Object.keys(this._registeredExtensions).length;
@@ -214,7 +224,7 @@
return this._status.E_EXISTS(id);
var page = this._expandResourcePath(port._extensionOrigin, message.page);
- var panelDescriptor = new WebInspector.PanelDescriptor(id, message.title, undefined, undefined, new WebInspector.ExtensionPanel(id, page));
+ var panelDescriptor = new WebInspector.ExtensionServerPanelDescriptor(id, message.title, new WebInspector.ExtensionPanel(id, page));
this._clientObjects[id] = panelDescriptor.panel();
WebInspector.inspectorView.addPanel(panelDescriptor);
return this._status.OK();
@@ -275,6 +285,10 @@
var sidebar = this._clientObjects[message.id];
if (!sidebar)
return this._status.E_NOTFOUND(message.id);
+
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
function callback(error)
{
var result = error ? this._status.E_FAILED(error) : this._status.OK();
@@ -295,10 +309,25 @@
_onOpenResource: function(message)
{
- var a = document.createElement("a");
- a.href = message.url;
- a.lineNumber = message.lineNumber;
- return WebInspector.showAnchorLocation(a) ? this._status.OK() : this._status.E_NOTFOUND(message.url);
+ var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(message.url);
+ if (uiSourceCode) {
+ WebInspector.Revealer.reveal(new WebInspector.UILocation(uiSourceCode, message.lineNumber, 0));
+ return this._status.OK();
+ }
+
+ var resource = WebInspector.resourceForURL(message.url);
+ if (resource) {
+ WebInspector.Revealer.reveal(resource, message.lineNumber);
+ return this._status.OK();
+ }
+
+ var request = WebInspector.networkLog.requestForURL(message.url);
+ if (request) {
+ WebInspector.Revealer.reveal(request);
+ return this._status.OK();
+ }
+
+ return this._status.E_NOTFOUND(message.url);
},
_onSetOpenResourceHandler: function(message, port)
@@ -346,6 +375,7 @@
* @param {?Protocol.Error} error
* @param {?RuntimeAgent.RemoteObject} resultPayload
* @param {boolean=} wasThrown
+ * @this {WebInspector.ExtensionServer}
*/
function callback(error, resultPayload, wasThrown)
{
@@ -453,6 +483,9 @@
{
var resources = {};
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
function pushResourceData(contentProvider)
{
if (!resources[contentProvider.contentURL()])
@@ -471,6 +504,7 @@
{
/**
* @param {?string} content
+ * @this {WebInspector.ExtensionServer}
*/
function onContentAvailable(content)
{
@@ -505,6 +539,7 @@
{
/**
* @param {?Protocol.Error} error
+ * @this {WebInspector.ExtensionServer}
*/
function callbackWrapper(error)
{
@@ -547,6 +582,7 @@
if (WebInspector.panel("audits").getCategory(category.id))
return this._status.E_EXISTS(category.id);
this._clientObjects[message.id] = category;
+ // FIXME: register module manager extension instead of waking up audits module.
WebInspector.panel("audits").addCategory(category);
},
@@ -604,7 +640,7 @@
port.postMessage({ command: "callback", requestId: requestId, result: result });
},
- initExtensions: function()
+ _initExtensions: function()
{
this._registerAutosubscriptionHandler(WebInspector.extensionAPI.Events.ConsoleMessageAdded,
WebInspector.console, WebInspector.ConsoleModel.Events.MessageAdded, this._notifyConsoleMessageAdded);
@@ -614,42 +650,58 @@
WebInspector.workspace,
WebInspector.Workspace.Events.UISourceCodeAdded,
this._notifyResourceAdded);
- this._registerAutosubscriptionHandler(WebInspector.extensionAPI.Events.PanelObjectSelected + "elements",
- WebInspector.notifications,
- WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged,
- this._notifyElementsSelectionChanged);
+
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
+ function onElementsSubscriptionStarted()
+ {
+ WebInspector.notifications.addEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, this._notifyElementsSelectionChanged, this);
+ }
+
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
+ function onElementsSubscriptionStopped()
+ {
+ WebInspector.notifications.removeEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, this._notifyElementsSelectionChanged, this);
+ }
+
+ this._registerSubscriptionHandler(WebInspector.extensionAPI.Events.PanelObjectSelected + "elements",
+ onElementsSubscriptionStarted.bind(this), onElementsSubscriptionStopped.bind(this));
+
this._registerAutosubscriptionHandler(WebInspector.extensionAPI.Events.PanelObjectSelected + "sources",
WebInspector.notifications,
WebInspector.SourceFrame.Events.SelectionChanged,
this._notifySourceFrameSelectionChanged);
- this._registerAutosubscriptionHandler(WebInspector.extensionAPI.Events.ResourceContentCommitted,
- WebInspector.workspace,
- WebInspector.Workspace.Events.UISourceCodeContentCommitted,
- this._notifyUISourceCodeContentCommitted);
+ this._registerResourceContentCommittedHandler(this._notifyUISourceCodeContentCommitted);
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
function onTimelineSubscriptionStarted()
{
WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,
this._notifyTimelineEventRecorded, this);
WebInspector.timelineManager.start();
}
+
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
function onTimelineSubscriptionStopped()
{
WebInspector.timelineManager.stop();
WebInspector.timelineManager.removeEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,
this._notifyTimelineEventRecorded, this);
}
+
this._registerSubscriptionHandler(WebInspector.extensionAPI.Events.TimelineEventRecorded,
onTimelineSubscriptionStarted.bind(this), onTimelineSubscriptionStopped.bind(this));
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.InspectedURLChanged,
this._inspectedURLChanged, this);
- this._initDone = true;
- if (this._pendingExtensions) {
- this._pendingExtensions.forEach(this._innerAddExtension, this);
- delete this._pendingExtensions;
- }
InspectorExtensionRegistry.getExtensionsAsync();
},
@@ -710,11 +762,11 @@
},
/**
- * @param {!Array.<!ExtensionDescriptor>} extensions
+ * @param {!Array.<!ExtensionDescriptor>} extensionInfos
*/
- _addExtensions: function(extensions)
+ addExtensions: function(extensionInfos)
{
- extensions.forEach(this._addExtension, this);
+ extensionInfos.forEach(this._addExtension, this);
},
/**
@@ -722,21 +774,6 @@
*/
_addExtension: function(extensionInfo)
{
- if (this._initDone) {
- this._innerAddExtension(extensionInfo);
- return;
- }
- if (this._pendingExtensions)
- this._pendingExtensions.push(extensionInfo);
- else
- this._pendingExtensions = [extensionInfo];
- },
-
- /**
- * @param {!ExtensionDescriptor} extensionInfo
- */
- _innerAddExtension: function(extensionInfo)
- {
const urlOriginRegExp = new RegExp("([^:]+:\/\/[^/]*)\/"); // Can't use regexp literal here, MinJS chokes on it.
var startPage = extensionInfo.startPage;
var name = extensionInfo.name;
@@ -749,7 +786,7 @@
}
var extensionOrigin = originMatch[1];
if (!this._registeredExtensions[extensionOrigin]) {
- // See ExtensionAPI.js and ExtensionCommon.js for details.
+ // See ExtensionAPI.js for details.
InspectorFrontendHost.setInjectedScriptForOrigin(extensionOrigin, buildExtensionAPIInjectedScript(extensionInfo));
this._registeredExtensions[extensionOrigin] = { name: name };
}
@@ -764,12 +801,6 @@
return true;
},
- _onWindowMessage: function(event)
- {
- if (event.data === "registerExtension")
- this._registerExtension(event.origin, event.ports[0]);
- },
-
_registerExtension: function(origin, port)
{
if (!this._registeredExtensions.hasOwnProperty(origin)) {
@@ -782,6 +813,12 @@
port.start();
},
+ _onWindowMessage: function(event)
+ {
+ if (event.data === "registerExtension")
+ this._registerExtension(event.origin, event.ports[0]);
+ },
+
_onmessage: function(event)
{
var message = event.data;
@@ -804,8 +841,8 @@
_registerSubscriptionHandler: function(eventTopic, onSubscribeFirst, onUnsubscribeLast)
{
- this._subscriptionStartHandlers[eventTopic] = onSubscribeFirst;
- this._subscriptionStopHandlers[eventTopic] = onUnsubscribeLast;
+ this._subscriptionStartHandlers[eventTopic] = onSubscribeFirst;
+ this._subscriptionStopHandlers[eventTopic] = onUnsubscribeLast;
},
_registerAutosubscriptionHandler: function(eventTopic, eventTarget, frontendEventType, handler)
@@ -815,6 +852,31 @@
eventTarget.removeEventListener.bind(eventTarget, frontendEventType, handler, this));
},
+ _registerResourceContentCommittedHandler: function(handler)
+ {
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
+ function addFirstEventListener()
+ {
+ WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeContentCommitted, handler, this);
+ WebInspector.workspace.setHasResourceContentTrackingExtensions(true);
+ }
+
+ /**
+ * @this {WebInspector.ExtensionServer}
+ */
+ function removeLastEventListener()
+ {
+ WebInspector.workspace.setHasResourceContentTrackingExtensions(false);
+ WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.UISourceCodeContentCommitted, handler, this);
+ }
+
+ this._registerSubscriptionHandler(WebInspector.extensionAPI.Events.ResourceContentCommitted,
+ addFirstEventListener.bind(this),
+ removeLastEventListener.bind(this));
+ },
+
_expandResourcePath: function(extensionPath, resourcePath)
{
if (!resourcePath)
@@ -848,6 +910,7 @@
* @param {?Object} options
* @param {string} securityOrigin
* @param {function(?string, !RuntimeAgent.RemoteObject, boolean=)} callback
+ * @return {!WebInspector.ExtensionStatus.Record|undefined}
*/
evaluate: function(expression, exposeCommandLineAPI, returnByValue, options, securityOrigin, callback)
{
@@ -890,7 +953,7 @@
if (contextSecurityOrigin) {
context = frameContextList.contextBySecurityOrigin(contextSecurityOrigin);
if (!context) {
- console.warn("The JS context " + contextSecurityOrigin + " was not found in the frame " + frame.url)
+ console.warn("The JavaScript context " + contextSecurityOrigin + " was not found in the frame " + frame.url)
return this._status.E_NOTFOUND(contextSecurityOrigin)
}
} else {
@@ -907,9 +970,54 @@
/**
* @constructor
+ * @param {string} name
+ * @param {string} title
+ * @param {!WebInspector.Panel} panel
+ * @implements {WebInspector.PanelDescriptor}
+ */
+WebInspector.ExtensionServerPanelDescriptor = function(name, title, panel)
+{
+ this._name = name;
+ this._title = title;
+ this._panel = panel;
+}
+
+WebInspector.ExtensionServerPanelDescriptor.prototype = {
+ /**
+ * @return {string}
+ */
+ name: function()
+ {
+ return this._name;
+ },
+
+ /**
+ * @return {string}
+ */
+ title: function()
+ {
+ return this._title;
+ },
+
+ /**
+ * @return {!WebInspector.Panel}
+ */
+ panel: function()
+ {
+ return this._panel;
+ }
+}
+
+/**
+ * @constructor
*/
WebInspector.ExtensionStatus = function()
{
+ /**
+ * @param {string} code
+ * @param {string} description
+ * @return {!WebInspector.ExtensionStatus.Record}
+ */
function makeStatus(code, description)
{
var details = Array.prototype.slice.call(arguments, 2);
@@ -931,20 +1039,13 @@
this.E_FAILED = makeStatus.bind(null, "E_FAILED", "Operation failed: %s");
}
-WebInspector.addExtensions = function(extensions)
-{
- WebInspector.extensionServer._addExtensions(extensions);
-}
+/**
+ * @typedef {{code: string, description: string, details: !Array.<*>}}
+ */
+WebInspector.ExtensionStatus.Record;
WebInspector.extensionAPI = {};
defineCommonExtensionSymbols(WebInspector.extensionAPI);
-WebInspector.extensionServer = new WebInspector.ExtensionServer();
-
-window.addExtension = function(page, name)
-{
- WebInspector.extensionServer._addExtension({
- startPage: page,
- name: name,
- });
-}
+importScript("ExtensionPanel.js");
+importScript("ExtensionView.js");
diff --git a/Source/devtools/front_end/ExtensionServerProxy.js b/Source/devtools/front_end/ExtensionServerProxy.js
new file mode 100644
index 0000000..7c21d63
--- /dev/null
+++ b/Source/devtools/front_end/ExtensionServerProxy.js
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2014 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * @interface
+ */
+WebInspector.ExtensionServerAPI = function() { }
+
+WebInspector.ExtensionServerAPI.prototype = {
+ /**
+ * @param {!Array.<!ExtensionDescriptor>} descriptors
+ */
+ addExtensions: function(descriptors) { }
+}
+
+/**
+ * @constructor
+ */
+WebInspector.ExtensionServerProxy = function()
+{
+}
+
+WebInspector.ExtensionServerProxy._ensureExtensionServer = function()
+{
+ if (!WebInspector.extensionServer)
+ WebInspector.extensionServer = WebInspector.moduleManager.instance(WebInspector.ExtensionServerAPI);
+},
+
+WebInspector.ExtensionServerProxy.prototype = {
+ setFrontendReady: function()
+ {
+ this._frontendReady = true;
+ this._pushExtensionsToServer();
+ },
+
+ _addExtensions: function(extensions)
+ {
+ if (extensions.length === 0)
+ return;
+
+ console.assert(!this._pendingExtensions);
+ this._pendingExtensions = extensions;
+ this._pushExtensionsToServer();
+ },
+
+ _pushExtensionsToServer: function()
+ {
+ if (!this._frontendReady || !this._pendingExtensions)
+ return;
+ WebInspector.ExtensionServerProxy._ensureExtensionServer();
+ WebInspector.extensionServer.addExtensions(this._pendingExtensions);
+ delete this._pendingExtensions;
+ }
+}
+
+WebInspector.extensionServerProxy = new WebInspector.ExtensionServerProxy();
+
+WebInspector.addExtensions = function(extensions)
+{
+ WebInspector.extensionServerProxy._addExtensions(extensions);
+}
+
+WebInspector.setInspectedTabId = function(tabId)
+{
+ WebInspector._inspectedTabId = tabId;
+}
diff --git a/Source/devtools/front_end/ExtensionView.js b/Source/devtools/front_end/ExtensionView.js
index 08cad1d..814e660 100644
--- a/Source/devtools/front_end/ExtensionView.js
+++ b/Source/devtools/front_end/ExtensionView.js
@@ -38,7 +38,7 @@
WebInspector.ExtensionView = function(id, src, className)
{
WebInspector.View.call(this);
- this.element.className = "extension-view";
+ this.element.className = "extension-view fill" // Override flex;
this._id = id;
this._iframe = document.createElement("iframe");
diff --git a/Source/devtools/front_end/FileManager.js b/Source/devtools/front_end/FileManager.js
index 7dcc17e..08734ec 100644
--- a/Source/devtools/front_end/FileManager.js
+++ b/Source/devtools/front_end/FileManager.js
@@ -124,7 +124,7 @@
*/
close: function(url)
{
- InspectorFrontendHost.close(url);
+ // Currently a no-op.
},
/**
diff --git a/Source/devtools/front_end/FileSystemProjectDelegate.js b/Source/devtools/front_end/FileSystemProjectDelegate.js
index 0ef0951..01e9f4a 100644
--- a/Source/devtools/front_end/FileSystemProjectDelegate.js
+++ b/Source/devtools/front_end/FileSystemProjectDelegate.js
@@ -55,6 +55,10 @@
WebInspector.FileSystemProjectDelegate._styleSheetExtensions = ["css", "scss", "sass", "less"].keySet();
WebInspector.FileSystemProjectDelegate._documentExtensions = ["htm", "html", "asp", "aspx", "phtml", "jsp"].keySet();
+/**
+ * @param {string} fileSystemPath
+ * @return {string}
+ */
WebInspector.FileSystemProjectDelegate.projectId = function(fileSystemPath)
{
return "filesystem:" + fileSystemPath;
@@ -164,6 +168,7 @@
/**
* @param {boolean} success
* @param {string=} newName
+ * @this {WebInspector.FileSystemProjectDelegate}
*/
function innerCallback(success, newName)
{
@@ -171,14 +176,16 @@
callback(false, newName);
return;
}
+ var validNewName = /** @type {string} */ (newName);
+ console.assert(validNewName);
var slash = filePath.lastIndexOf("/");
var parentPath = filePath.substring(0, slash);
- filePath = parentPath + "/" + newName;
+ filePath = parentPath + "/" + validNewName;
var newURL = this._workspace.urlForPath(this._fileSystem.path(), filePath);
- var extension = this._extensionForPath(newName);
+ var extension = this._extensionForPath(validNewName);
var newOriginURL = this._fileSystemURL + filePath
var newContentType = this._contentTypeForExtension(extension);
- callback(true, newName, newURL, newOriginURL, newContentType);
+ callback(true, validNewName, newURL, newOriginURL, newContentType);
}
},
@@ -207,8 +214,8 @@
},
/**
- * @param {Array.<string>} queries
- * @param {Array.<string>} fileQueries
+ * @param {!Array.<string>} queries
+ * @param {!Array.<string>} fileQueries
* @param {boolean} caseSensitive
* @param {boolean} isRegex
* @param {!WebInspector.Progress} progress
@@ -216,13 +223,16 @@
*/
findFilesMatchingSearchRequest: function(queries, fileQueries, caseSensitive, isRegex, progress, callback)
{
- var result = [];
+ var result = null;
var queriesToRun = queries.slice();
if (!queriesToRun.length)
queriesToRun.push("");
progress.setTotalWork(queriesToRun.length);
searchNextQuery.call(this);
+ /**
+ * @this {WebInspector.FileSystemProjectDelegate}
+ */
function searchNextQuery()
{
if (!queriesToRun.length) {
@@ -235,6 +245,7 @@
/**
* @param {!Array.<string>} files
+ * @this {WebInspector.FileSystemProjectDelegate}
*/
function innerCallback(files)
{
@@ -277,7 +288,7 @@
/**
* @param {string} query
* @param {!WebInspector.Progress} progress
- * @param {function(Array.<string>)} callback
+ * @param {function(!Array.<string>)} callback
*/
_searchInPath: function(query, progress, callback)
{
@@ -287,11 +298,13 @@
/**
* @param {!Array.<string>} files
+ * @this {WebInspector.FileSystemProjectDelegate}
*/
function innerCallback(files)
{
/**
* @param {string} fullPath
+ * @this {WebInspector.FileSystemProjectDelegate}
*/
function trimAndNormalizeFileSystemPath(fullPath)
{
@@ -446,17 +459,25 @@
/**
* @param {?string} filePath
+ * @this {WebInspector.FileSystemProjectDelegate}
*/
function innerCallback(filePath)
{
+ if (!filePath) {
+ callback(null);
+ return;
+ }
createFilePath = filePath;
- if (!filePath || !content) {
+ if (!content) {
contentSet.call(this);
return;
}
this._fileSystem.setFileContent(filePath, content, contentSet.bind(this));
}
+ /**
+ * @this {WebInspector.FileSystemProjectDelegate}
+ */
function contentSet()
{
this._addFile(createFilePath);
@@ -510,14 +531,14 @@
{
this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.Reset, null);
},
-
+
__proto__: WebInspector.Object.prototype
}
/**
- * @type {?WebInspector.FileSystemProjectDelegate}
+ * @type {!WebInspector.FileSystemProjectDelegate}
*/
-WebInspector.fileSystemProjectDelegate = null;
+WebInspector.fileSystemProjectDelegate;
/**
* @constructor
@@ -561,6 +582,7 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
+ * @return {string}
*/
fileSystemPath: function(uiSourceCode)
{
@@ -569,7 +591,8 @@
},
/**
- * @param {!WebInspector.FileSystemProjectDelegate} fileSystemPath
+ * @param {string} fileSystemPath
+ * @return {!WebInspector.FileSystemProjectDelegate}
*/
delegate: function(fileSystemPath)
{
@@ -579,6 +602,6 @@
}
/**
- * @type {?WebInspector.FileSystemWorkspaceProvider}
+ * @type {!WebInspector.FileSystemWorkspaceProvider}
*/
-WebInspector.fileSystemWorkspaceProvider = null;
+WebInspector.fileSystemWorkspaceProvider;
diff --git a/Source/devtools/front_end/FileSystemView.js b/Source/devtools/front_end/FileSystemView.js
index 0b57300..43a7446 100644
--- a/Source/devtools/front_end/FileSystemView.js
+++ b/Source/devtools/front_end/FileSystemView.js
@@ -30,20 +30,19 @@
/**
* @constructor
- * @extends {WebInspector.SidebarView}
+ * @extends {WebInspector.SplitView}
* @param {!WebInspector.FileSystemModel.FileSystem} fileSystem
*/
WebInspector.FileSystemView = function(fileSystem)
{
- WebInspector.SidebarView.call(this, WebInspector.SidebarView.SidebarPosition.Start, "FileSystemViewSidebarWidth");
+ WebInspector.SplitView.call(this, true, false, "FileSystemViewSidebarWidth");
this.element.classList.add("file-system-view");
this.element.classList.add("storage-view");
var directoryTreeElement = this.element.createChild("ol", "filesystem-directory-tree");
this._directoryTree = new TreeOutline(directoryTreeElement);
- this.sidebarElement.appendChild(directoryTreeElement);
- this.sidebarElement.classList.add("outline-disclosure");
- this.sidebarElement.classList.add("sidebar");
+ this.sidebarElement().appendChild(directoryTreeElement);
+ this.sidebarElement().classList.add("outline-disclosure", "sidebar");
var rootItem = new WebInspector.FileSystemView.EntryTreeElement(this, fileSystem.root);
rootItem.expanded = true;
@@ -86,7 +85,7 @@
if (this._visibleView)
this._visibleView.detach();
this._visibleView = view;
- view.show(this.mainElement);
+ view.show(this.mainElement());
},
_refresh: function()
@@ -105,7 +104,7 @@
this._directoryTree.selectedTreeElement.deleteEntry();
},
- __proto__: WebInspector.SidebarView.prototype
+ __proto__: WebInspector.SplitView.prototype
}
/**
@@ -134,6 +133,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function()
{
diff --git a/Source/devtools/front_end/FileUtils.js b/Source/devtools/front_end/FileUtils.js
index bb05186..fae0b10 100644
--- a/Source/devtools/front_end/FileUtils.js
+++ b/Source/devtools/front_end/FileUtils.js
@@ -312,38 +312,6 @@
}
/**
- * @param {string} source
- * @param {number=} startIndex
- * @param {number=} lastIndex
- */
-WebInspector.findBalancedCurlyBrackets = function(source, startIndex, lastIndex) {
- lastIndex = lastIndex || source.length;
- startIndex = startIndex || 0;
- var counter = 0;
- var inString = false;
-
- for (var index = startIndex; index < lastIndex; ++index) {
- var character = source[index];
- if (inString) {
- if (character === "\\")
- ++index;
- else if (character === "\"")
- inString = false;
- } else {
- if (character === "\"")
- inString = true;
- else if (character === "{")
- ++counter;
- else if (character === "}") {
- if (--counter === 0)
- return index + 1;
- }
- }
- }
- return -1;
-}
-
-/**
* @constructor
* @implements {WebInspector.OutputStream}
*/
@@ -364,6 +332,7 @@
/**
* @param {boolean} accepted
+ * @this {WebInspector.FileOutputStream}
*/
function callbackWrapper(accepted)
{
@@ -394,7 +363,7 @@
},
/**
- * @param {?Event} event
+ * @param {!WebInspector.Event} event
*/
_onAppendDone: function(event)
{
diff --git a/Source/devtools/front_end/FilterBar.js b/Source/devtools/front_end/FilterBar.js
index f305bcf..a4d10c5 100644
--- a/Source/devtools/front_end/FilterBar.js
+++ b/Source/devtools/front_end/FilterBar.js
@@ -39,7 +39,7 @@
this._element.className = "hbox";
this._filterButton = new WebInspector.StatusBarButton(WebInspector.UIString("Filter"), "filters-toggle", 3);
- this._filterButton.element.addEventListener("mousedown", this._handleFilterButtonClick.bind(this), false);
+ this._filterButton.element.addEventListener("click", this._handleFilterButtonClick.bind(this), false);
this._filters = [];
}
@@ -126,6 +126,21 @@
this._filtersShown = !this._filtersShown;
this._updateFilterButton();
this.dispatchEventToListeners(WebInspector.FilterBar.Events.FiltersToggled, this._filtersShown);
+ if (this._filtersShown) {
+ for (var i = 0; i < this._filters.length; ++i) {
+ if (this._filters[i] instanceof WebInspector.TextFilterUI) {
+ var textFilterUI = /** @type {!WebInspector.TextFilterUI} */ (this._filters[i]);
+ textFilterUI.focus();
+ }
+ }
+ }
+ },
+
+ clear: function()
+ {
+ this._element.removeChildren();
+ this._filters = [];
+ this._updateFilterButton();
},
__proto__: WebInspector.Object.prototype
@@ -247,6 +262,11 @@
this._valueChanged();
},
+ focus: function()
+ {
+ this._filterInputElement.focus();
+ },
+
_valueChanged: function() {
var filterQuery = this.value();
@@ -401,7 +421,7 @@
* @constructor
* @implements {WebInspector.FilterUI}
* @extends {WebInspector.Object}
- * @param {!Array.<{value: *, label: string, title: string}>} options
+ * @param {!Array.<!{value: *, label: string, title: string}>} options
*/
WebInspector.ComboBoxFilterUI = function(options)
{
@@ -449,6 +469,22 @@
},
/**
+ * @param {number} index
+ */
+ setSelectedIndex: function(index)
+ {
+ this._filterComboBox.setSelectedIndex(index);
+ },
+
+ /**
+ * @return {number}
+ */
+ selectedIndex: function(index)
+ {
+ return this._filterComboBox.selectedIndex();
+ },
+
+ /**
* @param {?Event} event
*/
_filterChanged: function(event)
@@ -512,6 +548,15 @@
return this._checked;
},
+ /**
+ * @param {boolean} state
+ */
+ setState: function(state)
+ {
+ this._checked = state;
+ this._update();
+ },
+
_update: function()
{
this._checkElement.enableStyleClass("checkbox-filter-checkbox-checked", this._checked);
diff --git a/Source/devtools/front_end/FilteredItemSelectionDialog.js b/Source/devtools/front_end/FilteredItemSelectionDialog.js
index af24791..af6288d 100644
--- a/Source/devtools/front_end/FilteredItemSelectionDialog.js
+++ b/Source/devtools/front_end/FilteredItemSelectionDialog.js
@@ -82,11 +82,14 @@
var height = Math.max(relativeToElement.offsetHeight * 2 / 3, minHeight);
this.element.style.width = width + "px";
-
+ var container = WebInspector.inspectorView.devtoolsElement();
+ var box = relativeToElement.boxInWindow(window).relativeToElement(container);
const shadowPadding = 20; // shadow + padding
- element.positionAt(
- relativeToElement.totalOffsetLeft() + Math.max((relativeToElement.offsetWidth - width - 2 * shadowPadding) / 2, shadowPadding),
- relativeToElement.totalOffsetTop() + Math.max((relativeToElement.offsetHeight - height - 2 * shadowPadding) / 2, shadowPadding));
+ var positionX = box.x + Math.max((box.width - width - 2 * shadowPadding) / 2, shadowPadding);
+ positionX = Math.max(shadowPadding, Math.min(container.offsetWidth - width - 2 * shadowPadding, positionX));
+ var positionY = box.y + Math.max((box.height - height - 2 * shadowPadding) / 2, shadowPadding);
+ positionY = Math.max(shadowPadding, Math.min(container.offsetHeight - height - 2 * shadowPadding, positionY));
+ element.positionAt(positionX, positionY, container);
this._dialogHeight = height;
this._updateShowMatchingItems();
@@ -118,7 +121,8 @@
{
if (!this._delegate.itemCount())
return;
- this._delegate.selectItem(this._filteredItems[this._selectedIndexInFiltered], this._promptElement.value.trim());
+ var selectedIndex = this._selectedIndexInFiltered < this._filteredItems.length ? this._filteredItems[this._selectedIndexInFiltered] : null;
+ this._delegate.selectItem(selectedIndex, this._promptElement.value.trim());
},
_itemsLoaded: function()
@@ -196,6 +200,10 @@
return b - a;
}
+ /**
+ * @param {number} fromIndex
+ * @this {WebInspector.FilteredItemSelectionDialog}
+ */
function scoreItems(fromIndex)
{
var maxWorkItems = 1000;
@@ -452,7 +460,7 @@
},
/**
- * @param {number} itemIndex
+ * @param {?number} itemIndex
* @param {string} promptValue
*/
selectItem: function(itemIndex, promptValue)
@@ -482,48 +490,42 @@
* @constructor
* @extends {WebInspector.SelectionDialogContentProvider}
* @param {!WebInspector.View} view
- * @param {!WebInspector.ContentProvider} contentProvider
+ * @param {!WebInspector.UISourceCode} uiSourceCode
* @param {function(number, number)} selectItemCallback
*/
-WebInspector.JavaScriptOutlineDialog = function(view, contentProvider, selectItemCallback)
+WebInspector.JavaScriptOutlineDialog = function(view, uiSourceCode, selectItemCallback)
{
WebInspector.SelectionDialogContentProvider.call(this);
this._functionItems = [];
this._view = view;
this._selectItemCallback = selectItemCallback;
- contentProvider.requestContent(this._contentAvailable.bind(this));
+ this._outlineWorker = new Worker("ScriptFormatterWorker.js");
+ this._outlineWorker.onmessage = this._didBuildOutlineChunk.bind(this);
+ this._outlineWorker.postMessage({ method: "javaScriptOutline", params: { content: uiSourceCode.workingCopy() } });
}
/**
* @param {!WebInspector.View} view
- * @param {!WebInspector.ContentProvider} contentProvider
+ * @param {!WebInspector.UISourceCode} uiSourceCode
* @param {function(number, number)} selectItemCallback
*/
-WebInspector.JavaScriptOutlineDialog.show = function(view, contentProvider, selectItemCallback)
+WebInspector.JavaScriptOutlineDialog.show = function(view, uiSourceCode, selectItemCallback)
{
if (WebInspector.Dialog.currentInstance())
return null;
- var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(new WebInspector.JavaScriptOutlineDialog(view, contentProvider, selectItemCallback));
+ var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(new WebInspector.JavaScriptOutlineDialog(view, uiSourceCode, selectItemCallback));
WebInspector.Dialog.show(view.element, filteredItemSelectionDialog);
}
WebInspector.JavaScriptOutlineDialog.prototype = {
/**
- * @param {?string} content
+ * @param {!MessageEvent} event
*/
- _contentAvailable: function(content)
- {
- this._outlineWorker = new Worker("ScriptFormatterWorker.js");
- this._outlineWorker.onmessage = this._didBuildOutlineChunk.bind(this);
- const method = "outline";
- this._outlineWorker.postMessage({ method: method, params: { content: content } });
- },
-
_didBuildOutlineChunk: function(event)
{
- var data = event.data;
- var chunk = data["chunk"];
+ var data = /** @type {!WebInspector.JavaScriptOutlineDialog.MessageEventData} */ (event.data);
+ var chunk = data.chunk;
for (var i = 0; i < chunk.length; ++i)
this._functionItems.push(chunk[i]);
@@ -576,11 +578,13 @@
},
/**
- * @param {number} itemIndex
+ * @param {?number} itemIndex
* @param {string} promptValue
*/
selectItem: function(itemIndex, promptValue)
{
+ if (itemIndex === null)
+ return;
var lineNumber = this._functionItems[itemIndex].line;
if (!isNaN(lineNumber) && lineNumber >= 0)
this._selectItemCallback(lineNumber, this._functionItems[itemIndex].column);
@@ -620,14 +624,16 @@
/**
* @param {?WebInspector.UISourceCode} uiSourceCode
* @param {number=} lineNumber
+ * @param {number=} columnNumber
*/
- uiSourceCodeSelected: function(uiSourceCode, lineNumber)
+ uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
{
// Overridden by subclasses
},
/**
* @param {!WebInspector.Project} project
+ * @return {boolean}
*/
filterProject: function(project)
{
@@ -678,12 +684,13 @@
* @param {string} query
* @param {!Element} titleElement
* @param {!Element} subtitleElement
+ * @return {!Array.<!Element>}
*/
renderItem: function(itemIndex, query, titleElement, subtitleElement)
{
query = this.rewriteQuery(query);
var uiSourceCode = this._uiSourceCodes[itemIndex];
- titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumber ? this._queryLineNumber : "");
+ titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumberAndColumnNumber || "");
subtitleElement.textContent = uiSourceCode.fullDisplayName().trimEnd(100);
var indexes = [];
@@ -702,20 +709,23 @@
},
/**
- * @param {number} itemIndex
+ * @param {?number} itemIndex
* @param {string} promptValue
*/
selectItem: function(itemIndex, promptValue)
{
- if (/^:\d+$/.test(promptValue.trimRight())) {
- var lineNumber = parseInt(promptValue.trimRight().substring(1), 10) - 1;
- if (!isNaN(lineNumber) && lineNumber >= 0)
- this.uiSourceCodeSelected(null, lineNumber);
+ var parsedExpression = promptValue.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/);
+ if (!parsedExpression)
return;
- }
- var lineNumberMatch = promptValue.match(/[^:]+\:([\d]*)$/);
- var lineNumber = lineNumberMatch ? Math.max(parseInt(lineNumberMatch[1], 10) - 1, 0) : undefined;
- this.uiSourceCodeSelected(this._uiSourceCodes[itemIndex], lineNumber);
+
+ var lineNumber;
+ var columnNumber;
+ if (parsedExpression[2])
+ lineNumber = parseInt(parsedExpression[2].substr(1), 10) - 1;
+ if (parsedExpression[3])
+ columnNumber = parseInt(parsedExpression[3].substr(1), 10) - 1;
+ var uiSourceCode = itemIndex !== null ? this._uiSourceCodes[itemIndex] : null;
+ this.uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber);
},
/**
@@ -727,8 +737,8 @@
if (!query)
return query;
query = query.trim();
- var lineNumberMatch = query.match(/([^:]+)(\:[\d]*)$/);
- this._queryLineNumber = lineNumberMatch ? lineNumberMatch[2] : "";
+ var lineNumberMatch = query.match(/^([^:]+)((?::[^:]*){0,2})$/);
+ this._queryLineNumberAndColumnNumber = lineNumberMatch ? lineNumberMatch[2] : "";
return lineNumberMatch ? lineNumberMatch[1] : query;
},
@@ -769,14 +779,15 @@
/**
* @param {?WebInspector.UISourceCode} uiSourceCode
* @param {number=} lineNumber
+ * @param {number=} columnNumber
*/
- uiSourceCodeSelected: function(uiSourceCode, lineNumber)
+ uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
{
if (!uiSourceCode)
uiSourceCode = this._panel.currentUISourceCode();
if (!uiSourceCode)
return;
- this._panel.showUISourceCode(uiSourceCode, lineNumber);
+ this._panel.showUISourceCode(uiSourceCode, lineNumber, columnNumber);
},
/**
@@ -790,6 +801,7 @@
/**
* @param {!WebInspector.Project} project
+ * @return {boolean}
*/
filterProject: function(project)
{
@@ -834,14 +846,16 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {number=} lineNumber
+ * @param {number=} columnNumber
*/
- uiSourceCodeSelected: function(uiSourceCode, lineNumber)
+ uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
{
this._callback(uiSourceCode);
},
/**
* @param {!WebInspector.Project} project
+ * @return {boolean}
*/
filterProject: function(project)
{
@@ -866,3 +880,8 @@
filteredItemSelectionDialog.renderAsTwoRows();
WebInspector.Dialog.show(relativeToElement, filteredItemSelectionDialog);
}
+
+/**
+ * @typedef {{index: number, total: number, chunk: !Array.<!{selectorText: string, lineNumber: number, columnNumber: number}>}}
+ */
+WebInspector.JavaScriptOutlineDialog.MessageEventData;
diff --git a/Source/devtools/front_end/FlameChart.js b/Source/devtools/front_end/FlameChart.js
index 5fff735..33a8b6c 100644
--- a/Source/devtools/front_end/FlameChart.js
+++ b/Source/devtools/front_end/FlameChart.js
@@ -37,21 +37,19 @@
{
WebInspector.View.call(this);
this.registerRequiredCSS("flameChart.css");
- this.element.className = "fill";
this.element.id = "cpu-flame-chart";
this._overviewPane = new WebInspector.FlameChart.OverviewPane(dataProvider);
this._overviewPane.show(this.element);
- this._mainPane = new WebInspector.FlameChart.MainPane(dataProvider, this._overviewPane);
+ this._mainPane = new WebInspector.FlameChart.MainPane(dataProvider, this._overviewPane, false);
this._mainPane.show(this.element);
this._mainPane.addEventListener(WebInspector.FlameChart.Events.EntrySelected, this._onEntrySelected, this);
this._overviewPane._overviewGrid.addEventListener(WebInspector.OverviewGrid.Events.WindowChanged, this._onWindowChanged, this);
-
- if (!WebInspector.FlameChart._colorGenerator)
- WebInspector.FlameChart._colorGenerator = new WebInspector.FlameChart.ColorGenerator();
}
+WebInspector.FlameChart.DividersBarHeight = 20;
+
WebInspector.FlameChart.prototype = {
/**
* @param {!WebInspector.Event} event
@@ -94,15 +92,34 @@
{
}
+/** @typedef {!{
+ maxStackDepth: number,
+ totalTime: number,
+ entryLevels: !Array.<number>,
+ entryTotalTimes: !Array.<number>,
+ entrySelfTimes: !Array.<number>,
+ entryOffsets: !Array.<number>,
+ colorEntryIndexes: !Array.<number>,
+ entryTitles: !Array.<string>,
+ entryDeoptFlags: !Array.<number>
+ }}
+ */
+WebInspector.FlameChart.TimelineData;
+
WebInspector.FlameChartDataProvider.prototype = {
/**
- * @param {!WebInspector.FlameChart.ColorGenerator} colorGenerator
- * @return {!Object}
+ * @return {?WebInspector.FlameChart.TimelineData}
*/
- timelineData: function(colorGenerator) { },
+ timelineData: function() { },
+
+ /**
+ * @return {!WebInspector.FlameChart.ColorGenerator}
+ */
+ colorGenerator: function() { },
/**
* @param {number} entryIndex
+ * @return {?Array.<!{title: string, text: string}>}
*/
prepareHighlightedEntryInfo: function(entryIndex) { },
@@ -114,7 +131,7 @@
/**
* @param {number} entryIndex
- * @return {!Object}
+ * @return {?Object}
*/
entryData: function(entryIndex) { }
}
@@ -283,17 +300,27 @@
this._colorPairs = {};
this._colorIndexes = [];
this._currentColorIndex = 0;
- this._colorPairForID("(idle)::0", 50);
- this._colorPairForID("(program)::0", 50);
- this._colorPairForID("(garbage collector)::0", 50);
}
WebInspector.FlameChart.ColorGenerator.prototype = {
/**
+ * @param {string} id
+ * @param {string|!CanvasGradient} highlighted
+ * @param {string|!CanvasGradient} normal
+ */
+ setColorPairForID: function(id, highlighted, normal)
+ {
+ var colorPair = {index: this._currentColorIndex++, highlighted: highlighted, normal: normal};
+ this._colorPairs[id] = colorPair;
+ this._colorIndexes[colorPair.index] = colorPair;
+ },
+
+ /**
* @param {!string} id
* @param {number=} sat
+ * @return {!Object}
*/
- _colorPairForID: function(id, sat)
+ colorPairForID: function(id, sat)
{
if (typeof sat !== "number")
sat = 100;
@@ -321,7 +348,7 @@
_createPair: function(index, sat)
{
var hue = (index * 7 + 12 * (index % 2)) % 360;
- return {index: index, highlighted: "hsla(" + hue + ", " + sat + "%, 33%, 0.7)", normal: "hsla(" + hue + ", " + sat + "%, 66%, 0.7)"}
+ return {index: index, highlighted: "hsla(" + hue + ", " + sat + "%, 33%, 0.7)", normal: "hsla(" + hue + ", " + sat + "%, 66%, 0.7)"};
}
}
@@ -355,6 +382,7 @@
WebInspector.FlameChart.OverviewPane = function(dataProvider)
{
WebInspector.View.call(this);
+ this.element.classList.add("flame-chart-overview-pane");
this._overviewContainer = this.element.createChild("div", "overview-container");
this._overviewGrid = new WebInspector.OverviewGrid("flame-chart");
this._overviewGrid.element.classList.add("fill");
@@ -392,12 +420,15 @@
var timelineData = this._timelineData();
if (!timelineData)
return;
- this._overviewGrid.setWindow(timeLeft / timelineData._totalTime, timeRight / timelineData._totalTime);
+ this._overviewGrid.setWindow(timeLeft / timelineData.totalTime, timeRight / timelineData.totalTime);
},
+ /**
+ * @return {?WebInspector.FlameChart.TimelineData}
+ */
_timelineData: function()
{
- return this._dataProvider.timelineData(WebInspector.FlameChart._colorGenerator);
+ return this._dataProvider.timelineData();
},
onResize: function()
@@ -418,14 +449,14 @@
var timelineData = this._timelineData();
if (!timelineData)
return;
+ this._resetCanvas(this._overviewContainer.clientWidth, this._overviewContainer.clientHeight - WebInspector.FlameChart.DividersBarHeight);
this._overviewCalculator._updateBoundaries(this);
this._overviewGrid.updateDividers(this._overviewCalculator);
- this._resetCanvas(this._overviewContainer.clientWidth, this._overviewContainer.clientHeight - 20);
WebInspector.FlameChart.OverviewPane.drawOverviewCanvas(
timelineData,
this._overviewCanvas.getContext("2d"),
this._overviewContainer.clientWidth,
- this._overviewContainer.clientHeight - 20
+ this._overviewContainer.clientHeight - WebInspector.FlameChart.DividersBarHeight
);
},
@@ -444,7 +475,7 @@
}
/**
- * @param {!Object} timelineData
+ * @param {!WebInspector.FlameChart.TimelineData} timelineData
* @param {!number} width
*/
WebInspector.FlameChart.OverviewPane.calculateDrawData = function(timelineData, width)
@@ -467,7 +498,7 @@
}
/**
- * @param {!Object} timelineData
+ * @param {!WebInspector.FlameChart.TimelineData} timelineData
* @param {!Object} context
* @param {!number} width
* @param {!number} height
@@ -506,24 +537,27 @@
* @constructor
* @extends {WebInspector.View}
* @param {!WebInspector.FlameChartDataProvider} dataProvider
- * @param {!WebInspector.FlameChart.OverviewPaneInterface} overviewPane
+ * @param {?WebInspector.FlameChart.OverviewPaneInterface} overviewPane
+ * @param {boolean} isTopDown
*/
-WebInspector.FlameChart.MainPane = function(dataProvider, overviewPane)
+WebInspector.FlameChart.MainPane = function(dataProvider, overviewPane, isTopDown)
{
WebInspector.View.call(this);
+ this.element.classList.add("flame-chart-main-pane");
this._overviewPane = overviewPane;
- this._chartContainer = this.element.createChild("div", "chart-container");
+ this._isTopDown = isTopDown;
+
this._timelineGrid = new WebInspector.TimelineGrid();
- this._chartContainer.appendChild(this._timelineGrid.element);
+ this.element.appendChild(this._timelineGrid.element);
this._calculator = new WebInspector.FlameChart.Calculator();
- this._canvas = this._chartContainer.createChild("canvas");
+ this._canvas = this.element.createChild("canvas");
this._canvas.addEventListener("mousemove", this._onMouseMove.bind(this));
this._canvas.addEventListener("mousewheel", this._onMouseWheel.bind(this), false);
this._canvas.addEventListener("click", this._onClick.bind(this), false);
- WebInspector.installDragHandle(this._canvas, this._startCanvasDragging.bind(this), this._canvasDragging.bind(this), this._endCanvasDragging.bind(this), "col-resize");
+ WebInspector.installDragHandle(this._canvas, this._startCanvasDragging.bind(this), this._canvasDragging.bind(this), this._endCanvasDragging.bind(this), "move", null);
- this._entryInfo = this._chartContainer.createChild("div", "entry-info");
+ this._entryInfo = this.element.createChild("div", "profile-entry-info");
this._dataProvider = dataProvider;
@@ -537,9 +571,12 @@
}
WebInspector.FlameChart.MainPane.prototype = {
+ /**
+ * @return {?WebInspector.FlameChart.TimelineData}
+ */
_timelineData: function()
{
- return this._dataProvider.timelineData(WebInspector.FlameChart._colorGenerator);
+ return this._dataProvider.timelineData();
},
/**
@@ -567,6 +604,7 @@
this._dragStartPoint = event.pageX;
this._dragStartWindowLeft = this._windowLeft;
this._dragStartWindowRight = this._windowRight;
+ this._canvas.style.cursor = "";
return true;
},
@@ -588,7 +626,8 @@
if (windowRight === this._windowRight)
return;
windowShift = windowRight - this._dragStartWindowRight;
- this._overviewPane.setWindow(this._dragStartWindowLeft + windowShift, this._dragStartWindowRight + windowShift);
+ if (this._overviewPane)
+ this._overviewPane.setWindow(this._dragStartWindowLeft + windowShift, this._dragStartWindowRight + windowShift);
this._wasDragged = true;
},
@@ -629,7 +668,8 @@
if (this._highlightedEntryIndex === -1)
return;
var data = this._dataProvider.entryData(this._highlightedEntryIndex);
- this.dispatchEventToListeners(WebInspector.FlameChart.Events.EntrySelected, data);
+ if (data)
+ this.dispatchEventToListeners(WebInspector.FlameChart.Events.EntrySelected, data);
},
/**
@@ -637,6 +677,8 @@
*/
_onMouseWheel: function(e)
{
+ if (!this._overviewPane)
+ return;
if (e.wheelDeltaY) {
const zoomFactor = 1.1;
const mouseWheelZoomSpeed = 1 / 120;
@@ -660,7 +702,7 @@
if (!timelineData)
return -1;
var cursorTime = (x + this._pixelWindowLeft - this._paddingLeft) * this._pixelToTime;
- var cursorLevel = Math.floor((this._canvas.height / window.devicePixelRatio - y) / this._barHeight);
+ var cursorLevel = this._isTopDown ? Math.floor(y / this._barHeight - 1) : Math.floor((this._canvas.height / window.devicePixelRatio - y) / this._barHeight);
var entryOffsets = timelineData.entryOffsets;
var entryTotalTimes = timelineData.entryTotalTimes;
@@ -706,7 +748,7 @@
var entryTitles = timelineData.entryTitles;
var entryDeoptFlags = timelineData.entryDeoptFlags;
- var colorGenerator = WebInspector.FlameChart._colorGenerator;
+ var colorGenerator = this._dataProvider.colorGenerator();
var titleIndexes = new Uint32Array(timelineData.entryTotalTimes);
var lastTitleIndex = 0;
var dotsWidth = context.measureText("\u2026").width;
@@ -718,12 +760,12 @@
for (var i = 0; i < timelineData.maxStackDepth; ++i)
marksField.push(new Uint16Array(width));
- var barHeight = this._barHeight;
+ var barHeight = this._isTopDown ? -this._barHeight : this._barHeight;
var barX = 0;
var barWidth = 0;
var barRight = 0;
var barLevel = 0;
- var bHeight = height - barHeight;
+ var bHeight = this._isTopDown ? WebInspector.FlameChart.DividersBarHeight : height - this._barHeight;
context.strokeStyle = "black";
var colorPair;
var entryIndex = 0;
@@ -757,7 +799,7 @@
context.beginPath();
context.fillStyle = colorPair.highlighted;
}
- context.rect(barX, bHeight - barLevel * barHeight, barWidth, barHeight);
+ context.rect(barX, bHeight - barLevel * barHeight, barWidth, this._barHeight);
if (entryIndex === this._highlightedEntryIndex) {
context.fill();
context.beginPath();
@@ -769,7 +811,7 @@
context.fill();
}
- var font = (barHeight - 4) + "px " + window.getComputedStyle(this.element, null).getPropertyValue("font-family");
+ var font = (this._barHeight - 4) + "px " + window.getComputedStyle(this.element, null).getPropertyValue("font-family");
var boldFont = "bold " + font;
var isBoldFontSelected = false;
context.font = font;
@@ -777,7 +819,7 @@
context.fillStyle = "#333";
this._dotsWidth = context.measureText("\u2026").width;
- var textBaseHeight = bHeight + barHeight - 4;
+ var textBaseHeight = bHeight + this._barHeight - 4;
for (var i = 0; i < lastTitleIndex; ++i) {
entryIndex = titleIndexes[i];
if (isBoldFontSelected) {
@@ -869,7 +911,7 @@
this._timeWindowLeft = this._windowLeft * this._totalTime;
this._timeWindowRight = this._windowRight * this._totalTime;
- this._pixelWindowWidth = this._chartContainer.clientWidth - this._paddingLeft;
+ this._pixelWindowWidth = this.element.clientWidth - this._paddingLeft;
this._totalPixels = Math.floor(this._pixelWindowWidth / this._windowWidth);
this._pixelWindowLeft = Math.floor(this._totalPixels * this._windowLeft);
this._pixelWindowRight = Math.floor(this._totalPixels * this._windowRight);
@@ -894,10 +936,16 @@
update: function()
{
this._updateTimerId = 0;
- if (!this._timelineData())
+ if (!this._timelineData()) {
+ this._timelineGrid.hideDividers();
return;
+ }
this._updateBoundaries();
- this.draw(this._chartContainer.clientWidth, this._chartContainer.clientHeight);
+ if (this._timelineData().entryLevels.length)
+ this._timelineGrid.showDividers();
+ else
+ this._timelineGrid.hideDividers();
+ this.draw(this.element.clientWidth, this.element.clientHeight);
this._calculator._updateBoundaries(this);
this._timelineGrid.element.style.width = this.element.clientWidth;
this._timelineGrid.updateDividers(this._calculator);
diff --git a/Source/devtools/front_end/FontView.js b/Source/devtools/front_end/FontView.js
index 4c36314..ec4e5d1 100644
--- a/Source/devtools/front_end/FontView.js
+++ b/Source/devtools/front_end/FontView.js
@@ -44,6 +44,9 @@
WebInspector.FontView._measureFontSize = 50;
WebInspector.FontView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
diff --git a/Source/devtools/front_end/HandlerRegistry.js b/Source/devtools/front_end/HandlerRegistry.js
index 46a8430..3ecb48a 100644
--- a/Source/devtools/front_end/HandlerRegistry.js
+++ b/Source/devtools/front_end/HandlerRegistry.js
@@ -31,7 +31,6 @@
/**
* @constructor
* @extends {WebInspector.Object}
- * @implements {WebInspector.ContextMenu.Provider}
*/
WebInspector.HandlerRegistry = function(setting)
{
@@ -39,7 +38,8 @@
this._handlers = {};
this._setting = setting;
this._activeHandler = this._setting.get();
- WebInspector.ContextMenu.registerProvider(this);
+
+ WebInspector.moduleManager.registerModule("handler-registry");
}
WebInspector.HandlerRegistry.prototype = {
@@ -61,6 +61,7 @@
/**
* @param {!Object} data
+ * @return {boolean}
*/
dispatch: function(data)
{
@@ -70,6 +71,7 @@
/**
* @param {string} name
* @param {!Object} data
+ * @return {boolean}
*/
dispatchToHandler: function(name, data)
{
@@ -94,16 +96,6 @@
* @param {!WebInspector.ContextMenu} contextMenu
* @param {!Object} target
*/
- appendApplicableItems: function(event, contextMenu, target)
- {
- this._appendContentProviderItems(contextMenu, target);
- this._appendHrefItems(contextMenu, target);
- },
-
- /**
- * @param {!WebInspector.ContextMenu} contextMenu
- * @param {!Object} target
- */
_appendContentProviderItems: function(contextMenu, target)
{
if (!(target instanceof WebInspector.UISourceCode || target instanceof WebInspector.Resource || target instanceof WebInspector.NetworkRequest))
@@ -137,12 +129,13 @@
function doSave(forceSaveAs, content)
{
var url = contentProvider.contentURL();
- WebInspector.fileManager.save(url, content, forceSaveAs);
+ WebInspector.fileManager.save(url, /** @type {string} */ (content), forceSaveAs);
WebInspector.fileManager.close(url);
}
/**
* @param {boolean} forceSaveAs
+ * @this {WebInspector.HandlerRegistry}
*/
function save(forceSaveAs)
{
@@ -228,8 +221,47 @@
}
}
+/**
+ * @constructor
+ * @implements {WebInspector.ContextMenu.Provider}
+ */
+WebInspector.HandlerRegistry.ContextMenuProvider = function()
+{
+}
+
+WebInspector.HandlerRegistry.ContextMenuProvider.prototype = {
+ /**
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!Object} target
+ */
+ appendApplicableItems: function(event, contextMenu, target)
+ {
+ WebInspector.openAnchorLocationRegistry._appendContentProviderItems(contextMenu, target);
+ WebInspector.openAnchorLocationRegistry._appendHrefItems(contextMenu, target);
+ }
+}
/**
- * @type {?WebInspector.HandlerRegistry}
+ * @constructor
+ * @implements {WebInspector.Linkifier.LinkHandler}
*/
-WebInspector.openAnchorLocationRegistry = null;
+WebInspector.HandlerRegistry.LinkHandler = function()
+{
+}
+
+WebInspector.HandlerRegistry.LinkHandler.prototype = {
+ /**
+ * @param {string} url
+ * @param {number=} lineNumber
+ * @return {boolean}
+ */
+ handleLink: function(url, lineNumber)
+ {
+ return WebInspector.openAnchorLocationRegistry.dispatch({ url: url, lineNumber: lineNumber});
+ }
+}
+
+/**
+ * @type {!WebInspector.HandlerRegistry}
+ */
+WebInspector.openAnchorLocationRegistry;
diff --git a/Source/devtools/front_end/HeapSnapshot.js b/Source/devtools/front_end/HeapSnapshot.js
index dc18ce1..287c968 100644
--- a/Source/devtools/front_end/HeapSnapshot.js
+++ b/Source/devtools/front_end/HeapSnapshot.js
@@ -30,6 +30,9 @@
/**
* @constructor
+ * @param {!Uint32Array} array
+ * @param {number} start
+ * @param {number} end
*/
WebInspector.HeapSnapshotArraySlice = function(array, start, end)
{
@@ -39,11 +42,20 @@
}
WebInspector.HeapSnapshotArraySlice.prototype = {
+ /**
+ * @param {number} index
+ * @return {number}
+ */
item: function(index)
{
return this._array[this._start + index];
},
+ /**
+ * @param {number} start
+ * @param {number=} end
+ * @return {!Uint32Array}
+ */
slice: function(start, end)
{
if (typeof end === "undefined")
@@ -63,57 +75,94 @@
this.edgeIndex = edgeIndex || 0;
}
+/**
+ * @constructor
+ * @param {string} name
+ * @param {!WebInspector.HeapSnapshotNode.Serialized} node
+ * @param {number} nodeIndex
+ * @param {string} type
+ * @param {number} distance
+ */
+WebInspector.HeapSnapshotEdge.Serialized = function(name, node, nodeIndex, type, distance) {
+ this.name = name;
+ this.node = node;
+ this.nodeIndex = nodeIndex;
+ this.type = type;
+ this.distance = distance;
+};
+
WebInspector.HeapSnapshotEdge.prototype = {
+ /**
+ * @return {!WebInspector.HeapSnapshotEdge}
+ */
clone: function()
{
return new WebInspector.HeapSnapshotEdge(this._snapshot, this._edges, this.edgeIndex);
},
+ /**
+ * @return {boolean}
+ */
hasStringName: function()
{
throw new Error("Not implemented");
},
+ /**
+ * @return {string}
+ */
name: function()
{
throw new Error("Not implemented");
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode}
+ */
node: function()
{
return this._snapshot.createNode(this.nodeIndex());
},
+ /**
+ * @return {number}
+ */
nodeIndex: function()
{
return this._edges.item(this.edgeIndex + this._snapshot._edgeToNodeOffset);
},
+ /**
+ * @return {!Array.<number>}
+ */
rawEdges: function()
{
return this._edges;
},
+ /**
+ * @return {string}
+ */
toString: function()
{
return "HeapSnapshotEdge: " + this.name();
},
+ /**
+ * @return {string}
+ */
type: function()
{
return this._snapshot._edgeTypes[this._type()];
},
+ /**
+ * @return {!WebInspector.HeapSnapshotEdge.Serialized}
+ */
serialize: function()
{
var node = this.node();
- return {
- name: this.name(),
- node: node.serialize(),
- nodeIndex: this.nodeIndex(),
- type: this.type(),
- distance: node.distance()
- };
+ return new WebInspector.HeapSnapshotEdge.Serialized(this.name(), node.serialize(), this.nodeIndex(), this.type(), node.distance());
},
_type: function()
@@ -136,21 +185,33 @@
this.edge.edgeIndex = 0;
},
+ /**
+ * @return {boolean}
+ */
hasNext: function()
{
return this.edge.edgeIndex < this.edge._edges.length;
},
+ /**
+ * @return {number}
+ */
index: function()
{
return this.edge.edgeIndex;
},
+ /**
+ * @param {number} newIndex
+ */
setIndex: function(newIndex)
{
this.edge.edgeIndex = newIndex;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotEdge}
+ */
item: function()
{
return this.edge;
@@ -177,37 +238,74 @@
this.setRetainerIndex(retainerIndex);
}
+/**
+ * @constructor
+ * @param {string} name
+ * @param {!WebInspector.HeapSnapshotNode.Serialized} node
+ * @param {number} nodeIndex
+ * @param {string} type
+ * @param {number} distance
+ */
+WebInspector.HeapSnapshotRetainerEdge.Serialized = function(name, node, nodeIndex, type, distance) {
+ this.name = name;
+ this.node = node;
+ this.nodeIndex = nodeIndex;
+ this.type = type;
+ this.distance = distance;
+}
+
WebInspector.HeapSnapshotRetainerEdge.prototype = {
+ /**
+ * @return {!WebInspector.HeapSnapshotRetainerEdge}
+ */
clone: function()
{
return new WebInspector.HeapSnapshotRetainerEdge(this._snapshot, this._retainedNodeIndex, this.retainerIndex());
},
+ /**
+ * @return {boolean}
+ */
hasStringName: function()
{
return this._edge().hasStringName();
},
+ /**
+ * @return {string}
+ */
name: function()
{
return this._edge().name();
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode}
+ */
node: function()
{
return this._node();
},
+ /**
+ * @return {number}
+ */
nodeIndex: function()
{
return this._nodeIndex;
},
+ /**
+ * @return {number}
+ */
retainerIndex: function()
{
return this._retainerIndex;
},
+ /**
+ * @param {number} newIndex
+ */
setRetainerIndex: function(newIndex)
{
if (newIndex !== this._retainerIndex) {
@@ -216,6 +314,9 @@
}
},
+ /**
+ * @param {number} edgeIndex
+ */
set edgeIndex(edgeIndex)
{
var retainerIndex = this._firstRetainer + edgeIndex;
@@ -241,23 +342,26 @@
return this._edgeInstance;
},
+ /**
+ * @return {string}
+ */
toString: function()
{
return this._edge().toString();
},
+ /**
+ * @return {!WebInspector.HeapSnapshotRetainerEdge.Serialized}
+ */
serialize: function()
{
var node = this.node();
- return {
- name: this.name(),
- node: node.serialize(),
- nodeIndex: this.nodeIndex(),
- type: this.type(),
- distance: node.distance()
- };
+ return new WebInspector.HeapSnapshotRetainerEdge.Serialized(this.name(), node.serialize(), this.nodeIndex(), this.type(), node.distance());
},
+ /**
+ * @return {string}
+ */
type: function()
{
return this._edge().type();
@@ -278,21 +382,33 @@
this.retainer.setRetainerIndex(0);
},
+ /**
+ * @return {boolean}
+ */
hasNext: function()
{
return this.retainer.retainerIndex() < this.retainer._retainersCount;
},
+ /**
+ * @return {number}
+ */
index: function()
{
return this.retainer.retainerIndex();
},
+ /**
+ * @param {number} newIndex
+ */
setIndex: function(newIndex)
{
this.retainer.setRetainerIndex(newIndex);
},
+ /**
+ * @return {!WebInspector.HeapSnapshotRetainerEdge}
+ */
item: function()
{
return this.retainer;
@@ -315,33 +431,71 @@
this.nodeIndex = nodeIndex;
}
+/**
+ * @constructor
+ * @param {string} id
+ * @param {string} name
+ * @param {number} distance
+ * @param {number|undefined} nodeIndex
+ * @param {number} retainedSize
+ * @param {number} selfSize
+ * @param {string} type
+ */
+WebInspector.HeapSnapshotNode.Serialized = function(id, name, distance, nodeIndex, retainedSize, selfSize, type) {
+ this.id = id;
+ this.name = name;
+ this.distance = distance;
+ this.nodeIndex = nodeIndex;
+ this.retainedSize = retainedSize;
+ this.selfSize = selfSize;
+ this.type = type;
+}
+
WebInspector.HeapSnapshotNode.prototype = {
+ /**
+ * @return {number}
+ */
distance: function()
{
return this._snapshot._nodeDistances[this.nodeIndex / this._snapshot._nodeFieldCount];
},
+ /**
+ * @return {string}
+ */
className: function()
{
throw new Error("Not implemented");
},
+ /**
+ * @return {number}
+ */
classIndex: function()
{
throw new Error("Not implemented");
},
+ /**
+ * @return {number}
+ */
dominatorIndex: function()
{
var nodeFieldCount = this._snapshot._nodeFieldCount;
return this._snapshot._dominatorsTree[this.nodeIndex / this._snapshot._nodeFieldCount] * nodeFieldCount;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotEdgeIterator}
+ */
edges: function()
{
return new WebInspector.HeapSnapshotEdgeIterator(this._snapshot.createEdge(this.rawEdges(), 0));
},
+ /**
+ * @return {number}
+ */
edgesCount: function()
{
return (this._edgeIndexesEnd() - this._edgeIndexesStart()) / this._snapshot._edgeFieldsCount;
@@ -352,54 +506,69 @@
throw new Error("Not implemented");
},
+ /**
+ * @return {boolean}
+ */
isRoot: function()
{
return this.nodeIndex === this._snapshot._rootNodeIndex;
},
+ /**
+ * @return {string}
+ */
name: function()
{
return this._snapshot._strings[this._name()];
},
+ /**
+ * @return {!WebInspector.HeapSnapshotArraySlice}
+ */
rawEdges: function()
{
return new WebInspector.HeapSnapshotArraySlice(this._snapshot._containmentEdges, this._edgeIndexesStart(), this._edgeIndexesEnd());
},
+ /**
+ * @return {number}
+ */
retainedSize: function()
{
- var snapshot = this._snapshot;
- return snapshot._nodes[this.nodeIndex + snapshot._nodeRetainedSizeOffset];
+ return this._snapshot._retainedSizes[this._ordinal()];
},
+ /**
+ * @return {!WebInspector.HeapSnapshotRetainerEdgeIterator}
+ */
retainers: function()
{
return new WebInspector.HeapSnapshotRetainerEdgeIterator(this._snapshot.createRetainingEdge(this.nodeIndex, 0));
},
+ /**
+ * @return {number}
+ */
selfSize: function()
{
var snapshot = this._snapshot;
return snapshot._nodes[this.nodeIndex + snapshot._nodeSelfSizeOffset];
},
+ /**
+ * @return {string}
+ */
type: function()
{
return this._snapshot._nodeTypes[this._type()];
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode.Serialized}
+ */
serialize: function()
{
- return {
- id: this.id(),
- name: this.name(),
- distance: this.distance(),
- nodeIndex: this.nodeIndex,
- retainedSize: this.retainedSize(),
- selfSize: this.selfSize(),
- type: this.type(),
- };
+ return new WebInspector.HeapSnapshotNode.Serialized(this.id(), this.name(), this.distance(), this.nodeIndex, this.retainedSize(), this.selfSize(), this.type());
},
_name: function()
@@ -450,21 +619,33 @@
this.node.nodeIndex = this.node._firstNodeIndex;
},
+ /**
+ * @return {boolean}
+ */
hasNext: function()
{
return this.node.nodeIndex < this._nodesLength;
},
+ /**
+ * @return {number}
+ */
index: function()
{
return this.node.nodeIndex;
},
+ /**
+ * @param {number} newIndex
+ */
setIndex: function(newIndex)
{
this.node.nodeIndex = newIndex;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode}
+ */
item: function()
{
return this.node;
@@ -486,10 +667,6 @@
this._dispatcher = dispatcher;
}
-WebInspector.HeapSnapshotProgress.Event = {
- Update: "ProgressUpdate"
-};
-
WebInspector.HeapSnapshotProgress.prototype = {
/**
* @param {string} status
@@ -517,7 +694,7 @@
{
// May be undefined in tests.
if (this._dispatcher)
- this._dispatcher.sendEvent(WebInspector.HeapSnapshotProgress.Event.Update, text);
+ this._dispatcher.sendEvent(WebInspector.HeapSnapshotProgressEvent.Update, text);
}
}
@@ -528,7 +705,6 @@
*/
WebInspector.HeapSnapshot = function(profile, progress)
{
- this.uid = profile.snapshot.uid;
this._nodes = profile.nodes;
this._containmentEdges = profile.edges;
/** @type {!HeapSnapshotMetainfo} */
@@ -546,15 +722,13 @@
this._init();
- if (WebInspector.HeapSnapshot.enableAllocationProfiler) {
+ if (profile.snapshot.trace_function_count) {
this._progress.updateStatus("Buiding allocation statistics\u2026");
this._allocationProfile = new WebInspector.AllocationProfile(profile);
this._progress.updateStatus("Done");
}
}
-WebInspector.HeapSnapshot.enableAllocationProfiler = false;
-
/**
* @constructor
*/
@@ -577,7 +751,6 @@
{
// New format.
this.title = "";
- this.uid = 0;
this.meta = new HeapSnapshotMetainfo();
this.node_count = 0;
this.edge_count = 0;
@@ -744,6 +917,9 @@
return new WebInspector.HeapSnapshotNodeIterator(this.rootNode());
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode}
+ */
rootNode: function()
{
return this.createNode(this._rootNodeIndex);
@@ -777,6 +953,7 @@
* @param {boolean} sortedIndexes
* @param {string} key
* @param {string=} filterString
+ * @return {!Object.<string, !WebInspector.HeapSnapshotCommon.Aggregate>}
*/
aggregates: function(sortedIndexes, key, filterString)
{
@@ -811,16 +988,26 @@
return aggregatesByClassName;
},
+ /**
+ * @return {!Array.<!WebInspector.HeapSnapshotCommon.SerializedTraceTop>}
+ */
allocationTracesTops: function()
{
return this._allocationProfile.serializeTraceTops();
},
+ /**
+ * @param {string} nodeId
+ * @return {!WebInspector.HeapSnapshotCommon.AllocationNodeCallers}
+ */
allocationNodeCallers: function(nodeId)
{
return this._allocationProfile.serializeCallers(nodeId);
},
+ /**
+ * @return {!Object.<string, !WebInspector.HeapSnapshotCommon.AggregateForDiff>}
+ */
aggregatesForDiff: function()
{
if (this._aggregatesForDiff)
@@ -1282,19 +1469,16 @@
var nodeSelfSizeOffset = this._nodeSelfSizeOffset;
var nodeFieldCount = this._nodeFieldCount;
var dominatorsTree = this._dominatorsTree;
- // Reuse now unused edge_count field to store retained size.
- var nodeRetainedSizeOffset = this._nodeRetainedSizeOffset = this._nodeEdgeCountOffset;
- delete this._nodeEdgeCountOffset;
+ var retainedSizes = this._retainedSizes = new Float64Array(nodeCount);
- for (var nodeIndex = 0, l = nodes.length; nodeIndex < l; nodeIndex += nodeFieldCount)
- nodes[nodeIndex + nodeRetainedSizeOffset] = nodes[nodeIndex + nodeSelfSizeOffset];
+ for (var nodeOrdinal = 0; nodeOrdinal < nodeCount; ++nodeOrdinal)
+ retainedSizes[nodeOrdinal] = nodes[nodeOrdinal * nodeFieldCount + nodeSelfSizeOffset];
// Propagate retained sizes for each node excluding root.
for (var postOrderIndex = 0; postOrderIndex < nodeCount - 1; ++postOrderIndex) {
var nodeOrdinal = postOrderIndex2NodeOrdinal[postOrderIndex];
- var nodeIndex = nodeOrdinal * nodeFieldCount;
- var dominatorIndex = dominatorsTree[nodeOrdinal] * nodeFieldCount;
- nodes[dominatorIndex + nodeRetainedSizeOffset] += nodes[nodeIndex + nodeRetainedSizeOffset];
+ var dominatorOrdinal = dominatorsTree[nodeOrdinal];
+ retainedSizes[dominatorOrdinal] += retainedSizes[nodeOrdinal];
}
},
@@ -1359,6 +1543,11 @@
throw new Error("Not implemented");
},
+ /**
+ * @param {string} baseSnapshotId
+ * @param {!Object.<string, !WebInspector.HeapSnapshotCommon.AggregateForDiff>} baseSnapshotAggregates
+ * @return {!Object.<string, !WebInspector.HeapSnapshotCommon.Diff>}
+ */
calculateSnapshotDiff: function(baseSnapshotId, baseSnapshotAggregates)
{
var snapshotDiff = this._snapshotDiffs[baseSnapshotId];
@@ -1373,7 +1562,7 @@
if (diff)
snapshotDiff[className] = diff;
}
- var emptyBaseAggregate = { ids: [], indexes: [], selfSizes: [] };
+ var emptyBaseAggregate = new WebInspector.HeapSnapshotCommon.AggregateForDiff();
for (var className in aggregates) {
if (className in baseSnapshotAggregates)
continue;
@@ -1384,6 +1573,11 @@
return snapshotDiff;
},
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.AggregateForDiff} baseAggregate
+ * @param {!WebInspector.HeapSnapshotCommon.Aggregate} aggregate
+ * @return {?WebInspector.HeapSnapshotCommon.Diff}
+ */
_calculateDiffForClass: function(baseAggregate, aggregate)
{
var baseIds = baseAggregate.ids;
@@ -1394,12 +1588,7 @@
var i = 0, l = baseIds.length;
var j = 0, m = indexes.length;
- var diff = { addedCount: 0,
- removedCount: 0,
- addedSize: 0,
- removedSize: 0,
- deletedIndexes: [],
- addedIndexes: [] };
+ var diff = new WebInspector.HeapSnapshotCommon.Diff();
var nodeB = this.createNode(indexes[j]);
while (i < l && j < m) {
@@ -1447,6 +1636,10 @@
return null;
},
+ /**
+ * @param {string} snapshotObjectId
+ * @return {?string}
+ */
nodeClassName: function(snapshotObjectId)
{
var node = this._nodeForSnapshotObjectId(snapshotObjectId);
@@ -1455,6 +1648,24 @@
return null;
},
+ /**
+ * @param {string} name
+ * @return {!Array.<number>}
+ */
+ idsOfObjectsWithName: function(name)
+ {
+ var ids = [];
+ for (var it = this._allNodes(); it.hasNext(); it.next()) {
+ if (it.item().name() === name)
+ ids.push(it.item().id());
+ }
+ return ids;
+ },
+
+ /**
+ * @param {string} snapshotObjectId
+ * @return {?Array.<string>}
+ */
dominatorIdsForNode: function(snapshotObjectId)
{
var node = this._nodeForSnapshotObjectId(snapshotObjectId);
@@ -1476,6 +1687,11 @@
return parsedFilter.bind(this);
},
+ /**
+ * @param {number} nodeIndex
+ * @param {boolean} showHiddenData
+ * @return {!WebInspector.HeapSnapshotEdgesProvider}
+ */
createEdgesProvider: function(nodeIndex, showHiddenData)
{
var node = this.createNode(nodeIndex);
@@ -1483,22 +1699,39 @@
return new WebInspector.HeapSnapshotEdgesProvider(this, filter, node.edges());
},
+ /**
+ * @param {number} nodeIndex
+ * @return {!WebInspector.HeapSnapshotEdgesProvider}
+ */
createEdgesProviderForTest: function(nodeIndex, filter)
{
var node = this.createNode(nodeIndex);
return new WebInspector.HeapSnapshotEdgesProvider(this, filter, node.edges());
},
+ /**
+ * @param {boolean} showHiddenData
+ * @return {?function(!WebInspector.HeapSnapshotEdge):boolean}
+ */
retainingEdgesFilter: function(showHiddenData)
{
return null;
},
+ /**
+ * @param {boolean} showHiddenData
+ * @return {?function(!WebInspector.HeapSnapshotEdge):boolean}
+ */
containmentEdgesFilter: function(showHiddenData)
{
return null;
},
+ /**
+ * @param {number} nodeIndex
+ * @param {boolean} showHiddenData
+ * @return {!WebInspector.HeapSnapshotEdgesProvider}
+ */
createRetainingEdgesProvider: function(nodeIndex, showHiddenData)
{
var node = this.createNode(nodeIndex);
@@ -1506,6 +1739,11 @@
return new WebInspector.HeapSnapshotEdgesProvider(this, filter, node.retainers());
},
+ /**
+ * @param {string} baseSnapshotId
+ * @param {string} className
+ * @return {!WebInspector.HeapSnapshotNodesProvider}
+ */
createAddedNodesProvider: function(baseSnapshotId, className)
{
var snapshotDiff = this._snapshotDiffs[baseSnapshotId];
@@ -1513,30 +1751,69 @@
return new WebInspector.HeapSnapshotNodesProvider(this, null, diffForClass.addedIndexes);
},
+ /**
+ * @param {!Array.<number>} nodeIndexes
+ * @return {!WebInspector.HeapSnapshotNodesProvider}
+ */
createDeletedNodesProvider: function(nodeIndexes)
{
return new WebInspector.HeapSnapshotNodesProvider(this, null, nodeIndexes);
},
+ /**
+ * @return {?function(!WebInspector.HeapSnapshotNode):boolean}
+ */
classNodesFilter: function()
{
return null;
},
+ /**
+ * @param {string} className
+ * @param {string} aggregatesKey
+ * @return {!WebInspector.HeapSnapshotNodesProvider}
+ */
createNodesProviderForClass: function(className, aggregatesKey)
{
return new WebInspector.HeapSnapshotNodesProvider(this, this.classNodesFilter(), this.aggregates(false, aggregatesKey)[className].idxs);
},
+ /**
+ * @param {number} nodeIndex
+ * @return {!WebInspector.HeapSnapshotNodesProvider}
+ */
createNodesProviderForDominator: function(nodeIndex)
{
var node = this.createNode(nodeIndex);
return new WebInspector.HeapSnapshotNodesProvider(this, null, this._dominatedNodesOfNode(node));
},
+ /**
+ * @return {number}
+ */
+ _maxJsNodeId: function()
+ {
+ var nodeFieldCount = this._nodeFieldCount;
+ var nodes = this._nodes;
+ var nodesLength = nodes.length;
+ var id = 0;
+ for (var nodeIndex = this._nodeIdOffset; nodeIndex < nodesLength; nodeIndex += nodeFieldCount) {
+ var nextId = nodes[nodeIndex];
+ // JS objects have odd ids, skip native objects.
+ if (nextId % 2 === 0)
+ continue;
+ if (id < nextId)
+ id = nextId;
+ }
+ return id;
+ },
+
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.StaticData}
+ */
updateStaticData: function()
{
- return {nodeCount: this.nodeCount, rootNodeIndex: this._rootNodeIndex, totalSize: this.totalSize, uid: this.uid};
+ return new WebInspector.HeapSnapshotCommon.StaticData(this.nodeCount, this._rootNodeIndex, this.totalSize, this._maxJsNodeId());
}
};
@@ -1593,11 +1870,17 @@
this._position = 0;
},
+ /**
+ * @return {boolean}
+ */
hasNext: function()
{
return this._position < this._iterationOrder.length;
},
+ /**
+ * @return {boolean}
+ */
isEmpty: function()
{
if (this._iterationOrder)
@@ -1624,12 +1907,18 @@
return true;
},
+ /**
+ * @return {*}
+ */
item: function()
{
this._iterator.setIndex(this._iterationOrder[this._position]);
return this._iterator.item();
},
+ /**
+ * @type {number}
+ */
get length()
{
this._createIterationOrder();
@@ -1644,6 +1933,7 @@
/**
* @param {number} begin
* @param {number} end
+ * @return {!WebInspector.HeapSnapshotCommon.ItemsRange}
*/
serializeItemsRange: function(begin, end)
{
@@ -1666,12 +1956,7 @@
var result = new Array(count);
for (var i = 0 ; i < count && this.hasNext(); ++i, this.next())
result[i] = this.item().serialize();
- result.length = i;
- result.totalLength = this._iterationOrder.length;
-
- result.startPosition = startPosition;
- result.endPosition = this._position;
- return result;
+ return new WebInspector.HeapSnapshotCommon.ItemsRange(startPosition, this._position, this._iterationOrder.length, result);
},
sortAll: function()
@@ -1694,11 +1979,6 @@
}
}
-WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator = function(fieldNames)
-{
- return {fieldName1: fieldNames[0], ascending1: fieldNames[1], fieldName2: fieldNames[2], ascending2: fieldNames[3]};
-}
-
/**
* @constructor
* @extends {WebInspector.HeapSnapshotFilteredOrderedIterator}
@@ -1710,6 +1990,13 @@
}
WebInspector.HeapSnapshotEdgesProvider.prototype = {
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.ComparatorConfig} comparator
+ * @param {number} leftBound
+ * @param {number} rightBound
+ * @param {number} windowLeft
+ * @param {number} windowRight
+ */
sort: function(comparator, leftBound, rightBound, windowLeft, windowRight)
{
var fieldName1 = comparator.fieldName1;
@@ -1800,6 +2087,10 @@
}
WebInspector.HeapSnapshotNodesProvider.prototype = {
+ /**
+ * @param {string} snapshotObjectId
+ * @return {number}
+ */
nodePosition: function(snapshotObjectId)
{
this._createIterationOrder();
diff --git a/Source/devtools/front_end/HeapSnapshotCommon.js b/Source/devtools/front_end/HeapSnapshotCommon.js
new file mode 100644
index 0000000..62abea2
--- /dev/null
+++ b/Source/devtools/front_end/HeapSnapshotCommon.js
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+WebInspector.HeapSnapshotProgressEvent = {
+ Update: "ProgressUpdate"
+};
+
+WebInspector.HeapSnapshotCommon = {
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.AllocationNodeCallers = function()
+{
+ /** @type {!Array.<!WebInspector.HeapSnapshotCommon.SerializedTraceTop>} */
+ this.nodesWithSingleCaller;
+ /** @type {!Array.<!WebInspector.HeapSnapshotCommon.SerializedTraceTop>} */
+ this.branchingCallers;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.Aggregate = function()
+{
+ /** @type {number} */
+ this.count;
+ /** @type {number} */
+ this.distance;
+ /** @type {number} */
+ this.self;
+ /** @type {number} */
+ this.maxRet;
+ /** @type {number} */
+ this.type;
+ /** @type {string} */
+ this.name;
+ /** @type {!Array.<number>} */
+ this.idxs;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.AggregateForDiff = function() {
+ /** @type {!Array.<number>} */
+ this.indexes = [];
+ /** @type {!Array.<string>} */
+ this.ids = [];
+ /** @type {!Array.<number>} */
+ this.selfSizes = [];
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.Diff = function()
+{
+ /** @type {number} */
+ this.addedCount = 0;
+ /** @type {number} */
+ this.removedCount = 0;
+ /** @type {number} */
+ this.addedSize = 0;
+ /** @type {number} */
+ this.removedSize = 0;
+ /** @type {!Array.<number>} */
+ this.deletedIndexes = [];
+ /** @type {!Array.<number>} */
+ this.addedIndexes = [];
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.DiffForClass = function()
+{
+ /** @type {number} */
+ this.addedCount;
+ /** @type {number} */
+ this.removedCount;
+ /** @type {number} */
+ this.addedSize;
+ /** @type {number} */
+ this.removedSize;
+ /** @type {!Array.<number>} */
+ this.deletedIndexes;
+ /** @type {!Array.<number>} */
+ this.addedIndexes;
+
+ /** @type {number} */
+ this.countDelta;
+ /** @type {number} */
+ this.sizeDelta;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.ComparatorConfig = function()
+{
+ /** @type {string} */
+ this.fieldName1;
+ /** @type {boolean} */
+ this.ascending1;
+ /** @type {string} */
+ this.fieldName2;
+ /** @type {boolean} */
+ this.ascending2;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.WorkerCommand = function()
+{
+ /** @type {number} */
+ this.callId;
+ /** @type {string} */
+ this.disposition;
+ /** @type {number} */
+ this.objectId;
+ /** @type {number} */
+ this.newObjectId;
+ /** @type {string} */
+ this.methodName;
+ /** @type {!Array.<*>} */
+ this.methodArguments;
+ /** @type {string} */
+ this.source;
+}
+
+/**
+ * @constructor
+ * @param {number} startPosition
+ * @param {number} endPosition
+ * @param {number} totalLength
+ * @param {!Array.<*>} items
+ */
+WebInspector.HeapSnapshotCommon.ItemsRange = function(startPosition, endPosition, totalLength, items)
+{
+ /** @type {number} */
+ this.startPosition = startPosition;
+ /** @type {number} */
+ this.endPosition = endPosition;
+ /** @type {number} */
+ this.totalLength = totalLength;
+ /** @type {!Array.<*>} */
+ this.items = items;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.SerializedTraceTop = function()
+{
+ /** @type {string} */
+ this.id;
+ /** @type {string} */
+ this.name;
+ /** @type {string} */
+ this.scriptName;
+ /** @type {number} */
+ this.line;
+ /** @type {number} */
+ this.column;
+ /** @type {number} */
+ this.count;
+ /** @type {number} */
+ this.size;
+ /** @type {boolean} */
+ this.hasChildren;
+}
+
+/**
+ * @param {number} nodeCount
+ * @param {number} rootNodeIndex
+ * @param {number} totalSize
+ * @param {number} maxJSObjectId
+ * @constructor
+ */
+WebInspector.HeapSnapshotCommon.StaticData = function(nodeCount, rootNodeIndex, totalSize, maxJSObjectId)
+{
+ /** @type {number} */
+ this.nodeCount = nodeCount;
+ /** @type {number} */
+ this.rootNodeIndex = rootNodeIndex;
+ /** @type {number} */
+ this.totalSize = totalSize;
+ /** @type {number} */
+ this.maxJSObjectId = maxJSObjectId;
+}
diff --git a/Source/devtools/front_end/HeapSnapshotDataGrids.js b/Source/devtools/front_end/HeapSnapshotDataGrids.js
index 39048ee..9229ac8 100644
--- a/Source/devtools/front_end/HeapSnapshotDataGrids.js
+++ b/Source/devtools/front_end/HeapSnapshotDataGrids.js
@@ -48,6 +48,7 @@
* @type {boolean}
*/
this._populatedAndSorted = false;
+ this._nameFilter = "";
this.addEventListener("sorting complete", this._sortingComplete, this);
this.addEventListener(WebInspector.DataGrid.Events.SortingChanged, this.sortingChanged, this);
}
@@ -65,7 +66,7 @@
return 100;
},
- dispose: function()
+ _disposeAllNodes: function()
{
var children = this.topLevelNodes();
for (var i = 0, l = children.length; i < l; ++i)
@@ -97,11 +98,10 @@
},
/**
- * @param {!WebInspector.ProfilesPanel} profilesPanel
* @param {!WebInspector.ContextMenu} contextMenu
* @param {?Event} event
*/
- populateContextMenu: function(profilesPanel, contextMenu, event)
+ populateContextMenu: function(contextMenu, event)
{
var td = event.target.enclosingNodeOrSelfWithNodeName("td");
if (!td)
@@ -109,11 +109,11 @@
var node = td.heapSnapshotNode;
function revealInDominatorsView()
{
- profilesPanel.showObject(node.snapshotNodeId, "Dominators");
+ WebInspector.panels.profiles.showObject(node.snapshotNodeId, "Dominators");
}
function revealInSummaryView()
{
- profilesPanel.showObject(node.snapshotNodeId, "Summary");
+ WebInspector.panels.profiles.showObject(node.snapshotNodeId, "Summary");
}
if(node && node.showRetainingEdges) {
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Reveal in Summary view" : "Reveal in Summary View"), revealInSummaryView.bind(this));
@@ -132,6 +132,9 @@
delete this._lastSortAscending;
},
+ /**
+ * @return {!Array.<!WebInspector.HeapSnapshotGridNode>}
+ */
topLevelNodes: function()
{
return this.rootNode().children;
@@ -153,15 +156,7 @@
var prevNode = this._highlightedNode;
this._clearCurrentHighlight();
this._highlightedNode = node;
- this._highlightedNode.element.classList.add("highlighted-row");
- // If highlighted node hasn't changed reinsert it to make the highlight animation restart.
- if (node === prevNode) {
- var element = node.element;
- var parent = element.parentElement;
- var nextSibling = element.nextSibling;
- parent.removeChild(element);
- parent.insertBefore(element, nextSibling);
- }
+ WebInspector.runCSSAnimationOnce(this._highlightedNode.element, "highlighted-row");
},
nodeWasDetached: function(node)
@@ -180,12 +175,17 @@
changeNameFilter: function(filter)
{
- filter = filter.toLowerCase();
+ this._nameFilter = filter.toLowerCase();
+ this._applyNameFilter();
+ },
+
+ _applyNameFilter: function()
+ {
var children = this.topLevelNodes();
for (var i = 0, l = children.length; i < l; ++i) {
var node = children[i];
if (node.depth === 0)
- node.revealed = node._name.toLowerCase().indexOf(filter) !== -1;
+ node.revealed = node._name.toLowerCase().indexOf(this._nameFilter) !== -1;
}
this.updateVisibleNodes();
},
@@ -282,6 +282,9 @@
}
WebInspector.HeapSnapshotViewportDataGrid.prototype = {
+ /**
+ * @return {!Array.<!WebInspector.HeapSnapshotGridNode>}
+ */
topLevelNodes: function()
{
return this._topLevelNodes;
@@ -377,6 +380,7 @@
removeTopLevelNodes: function()
{
+ this._disposeAllNodes();
this.rootNode().removeChildren();
this._topLevelNodes = [];
},
@@ -482,7 +486,7 @@
setDataSource: function(snapshot, nodeIndex)
{
this.snapshot = snapshot;
- var node = new WebInspector.HeapSnapshotNode(snapshot, nodeIndex || snapshot.rootNodeIndex);
+ var node = { nodeIndex: nodeIndex || snapshot.rootNodeIndex };
var fakeEdge = { node: node };
this.setRootNode(new WebInspector.HeapSnapshotObjectNode(this, false, fakeEdge, null));
this.rootNode().sort();
@@ -490,7 +494,9 @@
sortingChanged: function()
{
- this.rootNode().sort();
+ var rootNode = this.rootNode();
+ if (rootNode.hasChildren)
+ rootNode.sort();
},
__proto__: WebInspector.HeapSnapshotSortableDataGrid.prototype
@@ -628,6 +634,10 @@
return;
}
+ /**
+ * @param {?string} className
+ * @this {WebInspector.HeapSnapshotConstructorsDataGrid}
+ */
function didGetClassName(className)
{
if (!className) {
@@ -680,12 +690,12 @@
this._requestInProgress = this._nextRequest;
this._nextRequest = null;
}
- this.dispose();
this.removeTopLevelNodes();
this.resetSortingCache();
for (var constructor in aggregates)
this.appendTopLevelNode(new WebInspector.HeapSnapshotConstructorNode(this, constructor, aggregates[constructor], key));
this.sortingChanged();
+ this._applyNameFilter();
this._lastKey = key;
},
@@ -734,10 +744,10 @@
{id: "object", title: WebInspector.UIString("Constructor"), disclosure: true, sortable: true},
{id: "addedCount", title: WebInspector.UIString("# New"), width: "72px", sortable: true},
{id: "removedCount", title: WebInspector.UIString("# Deleted"), width: "72px", sortable: true},
- {id: "countDelta", title: "# Delta", width: "64px", sortable: true},
+ {id: "countDelta", title: WebInspector.UIString("# Delta"), width: "64px", sortable: true},
{id: "addedSize", title: WebInspector.UIString("Alloc. Size"), width: "72px", sortable: true, sort: WebInspector.DataGrid.Order.Descending},
{id: "removedSize", title: WebInspector.UIString("Freed Size"), width: "72px", sortable: true},
- {id: "sizeDelta", title: "Size Delta", width: "72px", sortable: true}
+ {id: "sizeDelta", title: WebInspector.UIString("Size Delta"), width: "72px", sortable: true}
];
WebInspector.HeapSnapshotViewportDataGrid.call(this, columns);
}
@@ -776,7 +786,6 @@
setBaseDataSource: function(baseSnapshot)
{
this.baseSnapshot = baseSnapshot;
- this.dispose();
this.removeTopLevelNodes();
this.resetSortingCache();
if (this.baseSnapshot === this.snapshot) {
@@ -788,9 +797,16 @@
_populateChildren: function()
{
+ /**
+ * @this {WebInspector.HeapSnapshotDiffDataGrid}
+ */
function aggregatesForDiffReceived(aggregatesForDiff)
{
this.snapshot.calculateSnapshotDiff(this.baseSnapshot.uid, aggregatesForDiff, didCalculateSnapshotDiff.bind(this));
+
+ /**
+ * @this {WebInspector.HeapSnapshotDiffDataGrid}
+ */
function didCalculateSnapshotDiff(diffByClassName)
{
for (var className in diffByClassName) {
@@ -867,6 +883,9 @@
return;
}
+ /**
+ * @this {WebInspector.HeapSnapshotDominatorsDataGrid}
+ */
function didGetDominators(dominatorIds)
{
if (!dominatorIds) {
@@ -878,6 +897,9 @@
expandNextDominator.call(this, dominatorIds, dominatorNode);
}
+ /**
+ * @this {WebInspector.HeapSnapshotDominatorsDataGrid}
+ */
function expandNextDominator(dominatorIds, dominatorNode)
{
if (!dominatorNode) {
@@ -922,6 +944,11 @@
{
this._snapshot = snapshot;
this._snapshot.allocationTracesTops(didReceiveAllocationTracesTops.bind(this));
+
+ /**
+ * @param {!Array.<!WebInspector.DataGrid>} tops
+ * @this {WebInspector.AllocationDataGrid}
+ */
function didReceiveAllocationTracesTops(tops)
{
var root = this.rootNode();
@@ -953,6 +980,11 @@
return;
this._populated = true;
this._dataGrid._snapshot.allocationNodeCallers(this.data.id, didReceiveCallers.bind(this));
+
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.AllocationNodeCallers} callers
+ * @this {WebInspector.AllocationGridNode}
+ */
function didReceiveCallers(callers)
{
var callersChain = callers.nodesWithSingleCaller;
diff --git a/Source/devtools/front_end/HeapSnapshotGridNodes.js b/Source/devtools/front_end/HeapSnapshotGridNodes.js
index aa1acea..a20d45d 100644
--- a/Source/devtools/front_end/HeapSnapshotGridNodes.js
+++ b/Source/devtools/front_end/HeapSnapshotGridNodes.js
@@ -52,6 +52,15 @@
PopulateComplete: "PopulateComplete"
}
+/**
+ * @param {!Array.<string>} fieldNames
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
+WebInspector.HeapSnapshotGridNode.createComparator = function(fieldNames)
+{
+ return /** @type {!WebInspector.HeapSnapshotCommon.ComparatorConfig} */ ({fieldName1: fieldNames[0], ascending1: fieldNames[1], fieldName2: fieldNames[2], ascending2: fieldNames[3]});
+}
+
WebInspector.HeapSnapshotGridNode.prototype = {
/**
* @return {!WebInspector.HeapSnapshotProviderProxy}
@@ -71,6 +80,10 @@
return this._providerObject;
},
+ /**
+ * @param {string} columnIdentifier
+ * @return {!Element}
+ */
createCell: function(columnIdentifier)
{
var cell = WebInspector.DataGridNode.prototype.createCell.call(this, columnIdentifier);
@@ -87,8 +100,8 @@
dispose: function()
{
- if (this._provider())
- this._provider().dispose();
+ if (this._providerObject)
+ this._providerObject.dispose();
for (var node = this.children[0]; node; node = node.traverseNextNode(true, this, true))
if (node.dispose)
node.dispose();
@@ -115,6 +128,7 @@
/**
* @param {number} nodePosition
+ * @return {?WebInspector.DataGridNode}
*/
childForPosition: function(nodePosition)
{
@@ -158,6 +172,9 @@
return;
this._populated = true;
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function sorted()
{
this._populateChildren();
@@ -174,14 +191,19 @@
},
/**
- * @param {?number} fromPosition
- * @param {?number} toPosition
+ * @param {?number=} fromPosition
+ * @param {?number=} toPosition
+ * @param {function()=} afterPopulate
*/
_populateChildren: function(fromPosition, toPosition, afterPopulate)
{
fromPosition = fromPosition || 0;
toPosition = toPosition || fromPosition + this._dataGrid.defaultPopulateCount();
var firstNotSerializedPosition = fromPosition;
+
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function serializeNextChunk()
{
if (firstNotSerializedPosition >= toPosition)
@@ -190,6 +212,10 @@
this._provider().serializeItemsRange(firstNotSerializedPosition, end, childrenRetrieved.bind(this));
firstNotSerializedPosition = end;
}
+
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function insertRetrievedChild(item, insertionIndex)
{
if (this._savedChildren) {
@@ -201,27 +227,37 @@
}
this.insertChild(this._createChildNode(item), insertionIndex);
}
+
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function insertShowMoreButton(from, to, insertionIndex)
{
var button = new WebInspector.ShowMoreDataGridNode(this._populateChildren.bind(this), from, to, this._dataGrid.defaultPopulateCount());
this.insertChild(button, insertionIndex);
}
- function childrenRetrieved(items)
+
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.ItemsRange} itemsRange
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
+ function childrenRetrieved(itemsRange)
{
var itemIndex = 0;
- var itemPosition = items.startPosition;
+ var itemPosition = itemsRange.startPosition;
+ var items = itemsRange.items;
var insertionIndex = 0;
if (!this._retrievedChildrenRanges.length) {
- if (items.startPosition > 0) {
+ if (itemsRange.startPosition > 0) {
this._retrievedChildrenRanges.push({from: 0, to: 0});
- insertShowMoreButton.call(this, 0, items.startPosition, insertionIndex++);
+ insertShowMoreButton.call(this, 0, itemsRange.startPosition, insertionIndex++);
}
- this._retrievedChildrenRanges.push({from: items.startPosition, to: items.endPosition});
+ this._retrievedChildrenRanges.push({from: itemsRange.startPosition, to: itemsRange.endPosition});
for (var i = 0, l = items.length; i < l; ++i)
insertRetrievedChild.call(this, items[i], insertionIndex++);
- if (items.endPosition < items.totalLength)
- insertShowMoreButton.call(this, items.endPosition, items.totalLength, insertionIndex++);
+ if (itemsRange.endPosition < itemsRange.totalLength)
+ insertShowMoreButton.call(this, itemsRange.endPosition, itemsRange.totalLength, insertionIndex++);
} else {
var rangeIndex = 0;
var found = false;
@@ -234,16 +270,16 @@
}
insertionIndex += range.to - range.from;
// Skip the button if there is one.
- if (range.to < items.totalLength)
+ if (range.to < itemsRange.totalLength)
insertionIndex += 1;
++rangeIndex;
}
- if (!found || items.startPosition < range.from) {
+ if (!found || itemsRange.startPosition < range.from) {
// Update previous button.
- this.children[insertionIndex - 1].setEndPosition(items.startPosition);
- insertShowMoreButton.call(this, items.startPosition, found ? range.from : items.totalLength, insertionIndex);
- range = {from: items.startPosition, to: items.startPosition};
+ this.children[insertionIndex - 1].setEndPosition(itemsRange.startPosition);
+ insertShowMoreButton.call(this, itemsRange.startPosition, found ? range.from : itemsRange.totalLength, insertionIndex);
+ range = {from: itemsRange.startPosition, to: itemsRange.startPosition};
if (!found)
rangeIndex = this._retrievedChildrenRanges.length;
this._retrievedChildrenRanges.splice(rangeIndex, 0, range);
@@ -254,7 +290,7 @@
// Also it is always true here that range.from <= itemPosition <= range.to
// Stretch the range right bound to include all new items.
- while (range.to < items.endPosition) {
+ while (range.to < itemsRange.endPosition) {
// Skip already added nodes.
var skipCount = range.to - itemPosition;
insertionIndex += skipCount;
@@ -263,9 +299,9 @@
// We're at the position before button: ...<?node>x<button>
var nextRange = this._retrievedChildrenRanges[rangeIndex + 1];
- var newEndOfRange = nextRange ? nextRange.from : items.totalLength;
- if (newEndOfRange > items.endPosition)
- newEndOfRange = items.endPosition;
+ var newEndOfRange = nextRange ? nextRange.from : itemsRange.totalLength;
+ if (newEndOfRange > itemsRange.endPosition)
+ newEndOfRange = itemsRange.endPosition;
while (itemPosition < newEndOfRange) {
insertRetrievedChild.call(this, items[itemIndex++], insertionIndex++);
++itemPosition;
@@ -279,10 +315,10 @@
} else {
range.to = newEndOfRange;
// Remove or update next button.
- if (newEndOfRange === items.totalLength)
+ if (newEndOfRange === itemsRange.totalLength)
this.removeChild(this.children[insertionIndex]);
else
- this.children[insertionIndex].setStartPosition(items.endPosition);
+ this.children[insertionIndex].setStartPosition(itemsRange.endPosition);
}
}
}
@@ -317,12 +353,19 @@
sort: function()
{
this._dataGrid.recursiveSortingEnter();
+
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function afterSort()
{
this._saveChildren();
this.removeChildren();
this._retrievedChildrenRanges = [];
+ /**
+ * @this {WebInspector.HeapSnapshotGridNode}
+ */
function afterPopulate()
{
for (var i = 0, l = this.children.length; i < l; ++i) {
@@ -375,6 +418,10 @@
};
WebInspector.HeapSnapshotGenericObjectNode.prototype = {
+ /**
+ * @param {string} columnIdentifier
+ * @return {!Element}
+ */
createCell: function(columnIdentifier)
{
var cell = columnIdentifier !== "object" ? this._createValueCell(columnIdentifier) : this._createObjectCell();
@@ -498,6 +545,9 @@
updateHasChildren: function()
{
+ /**
+ * @this {WebInspector.HeapSnapshotGenericObjectNode}
+ */
function isEmptyCallback(isEmpty)
{
this.hasChildren = !isEmpty;
@@ -505,6 +555,11 @@
this._provider().isEmpty(isEmptyCallback.bind(this));
},
+ /**
+ * @param {string} fullName
+ * @param {boolean} hasObjectId
+ * @return {string}
+ */
shortenWindowURL: function(fullName, hasObjectId)
{
var startPos = fullName.indexOf("/");
@@ -586,6 +641,9 @@
return prefix + childNode._referenceType + "#" + childNode._referenceName;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
comparator: function()
{
var sortAscending = this._dataGrid.isSortOrderAscending();
@@ -597,7 +655,7 @@
retainedSize: ["retainedSize", sortAscending, "!edgeName", true],
distance: ["distance", sortAscending, "_name", true]
}[sortColumnIdentifier] || ["!edgeName", true, "retainedSize", false];
- return WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(sortFields);
+ return WebInspector.HeapSnapshotGridNode.createComparator(sortFields);
},
_emptyData: function()
@@ -616,6 +674,7 @@
break;
case "internal":
case "hidden":
+ case "weak":
nameClass = "console-formatted-null";
break;
case "element":
@@ -660,6 +719,9 @@
};
WebInspector.HeapSnapshotInstanceNode.prototype = {
+ /**
+ * @return {!WebInspector.HeapSnapshotProviderProxy}
+ */
createProvider: function()
{
var showHiddenData = WebInspector.settings.showAdvancedHeapSnapshotProperties.get();
@@ -683,6 +745,9 @@
return childNode._referenceType + "#" + childNode._referenceName;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
comparator: function()
{
var sortAscending = this._dataGrid.isSortOrderAscending();
@@ -696,7 +761,7 @@
shallowSize: ["selfSize", sortAscending, "!edgeName", true],
retainedSize: ["retainedSize", sortAscending, "!edgeName", true]
}[sortColumnIdentifier] || ["!edgeName", true, "retainedSize", false];
- return WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(sortFields);
+ return WebInspector.HeapSnapshotGridNode.createComparator(sortFields);
},
_emptyData: function()
@@ -730,6 +795,9 @@
/**
* @constructor
+ * @param {string} className
+ * @param {!WebInspector.HeapSnapshotCommon.Aggregate} aggregate
+ * @param {string} aggregatesKey
* @extends {WebInspector.HeapSnapshotGridNode}
*/
WebInspector.HeapSnapshotConstructorNode = function(tree, className, aggregate, aggregatesKey)
@@ -759,11 +827,17 @@
*/
revealNodeBySnapshotObjectId: function(snapshotObjectId, callback)
{
+ /**
+ * @this {WebInspector.HeapSnapshotConstructorNode}
+ */
function didExpand()
{
this._provider().nodePosition(snapshotObjectId, didGetNodePosition.bind(this));
}
+ /**
+ * @this {WebInspector.HeapSnapshotConstructorNode}
+ */
function didGetNodePosition(nodePosition)
{
if (nodePosition === -1) {
@@ -774,6 +848,9 @@
}
}
+ /**
+ * @this {WebInspector.HeapSnapshotConstructorNode}
+ */
function didPopulateChildren(nodePosition)
{
var indexOfFirsChildInRange = 0;
@@ -782,7 +859,7 @@
if (range.from <= nodePosition && nodePosition < range.to) {
var childIndex = indexOfFirsChildInRange + nodePosition - range.from;
var instanceNode = this.children[childIndex];
- this._dataGrid.highlightNode(instanceNode);
+ this._dataGrid.highlightNode(/** @type {!WebInspector.HeapSnapshotGridNode} */ (instanceNode));
callback(true);
return;
}
@@ -794,6 +871,10 @@
this.expandWithoutPopulate(didExpand.bind(this));
},
+ /**
+ * @param {string} columnIdentifier
+ * @return {!Element}
+ */
createCell: function(columnIdentifier)
{
var cell = columnIdentifier !== "object" ? this._createValueCell(columnIdentifier) : WebInspector.HeapSnapshotGridNode.prototype.createCell.call(this, columnIdentifier);
@@ -807,6 +888,9 @@
return new WebInspector.HeapSnapshotInstanceNode(this._dataGrid, null, this._dataGrid.snapshot, item);
},
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
comparator: function()
{
var sortAscending = this._dataGrid.isSortOrderAscending();
@@ -818,7 +902,7 @@
shallowSize: ["selfSize", sortAscending, "id", true],
retainedSize: ["retainedSize", sortAscending, "id", true]
}[sortColumnIdentifier];
- return WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(sortFields);
+ return WebInspector.HeapSnapshotGridNode.createComparator(sortFields);
},
_childHashForEntity: function(node)
@@ -889,55 +973,84 @@
callback(false);
},
+ /**
+ * @param {number} beginPosition
+ * @param {number} endPosition
+ * @param {!function(!WebInspector.HeapSnapshotCommon.ItemsRange)} callback
+ */
serializeItemsRange: function(beginPosition, endPosition, callback)
{
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.ItemsRange} items
+ * @this {WebInspector.HeapSnapshotDiffNodesProvider}
+ */
function didReceiveAllItems(items)
{
items.totalLength = this._addedCount + this._removedCount;
callback(items);
}
- function didReceiveDeletedItems(addedItems, items)
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.ItemsRange} addedItems
+ * @param {!WebInspector.HeapSnapshotCommon.ItemsRange} itemsRange
+ * @this {WebInspector.HeapSnapshotDiffNodesProvider}
+ */
+ function didReceiveDeletedItems(addedItems, itemsRange)
{
- if (!addedItems.length)
- addedItems.startPosition = this._addedCount + items.startPosition;
+ var items = itemsRange.items;
+ if (!addedItems.items.length)
+ addedItems.startPosition = this._addedCount + itemsRange.startPosition;
for (var i = 0; i < items.length; i++) {
items[i].isAddedNotRemoved = false;
- addedItems.push(items[i]);
+ addedItems.items.push(items[i]);
}
- addedItems.endPosition = this._addedCount + items.endPosition;
+ addedItems.endPosition = this._addedCount + itemsRange.endPosition;
didReceiveAllItems.call(this, addedItems);
}
- function didReceiveAddedItems(items)
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.ItemsRange} itemsRange
+ * @this {WebInspector.HeapSnapshotDiffNodesProvider}
+ */
+ function didReceiveAddedItems(itemsRange)
{
+ var items = itemsRange.items;
for (var i = 0; i < items.length; i++)
items[i].isAddedNotRemoved = true;
- if (items.endPosition < endPosition)
- return this._deletedNodesProvider.serializeItemsRange(0, endPosition - items.endPosition, didReceiveDeletedItems.bind(this, items));
+ if (itemsRange.endPosition < endPosition)
+ return this._deletedNodesProvider.serializeItemsRange(0, endPosition - itemsRange.endPosition, didReceiveDeletedItems.bind(this, itemsRange));
- items.totalLength = this._addedCount + this._removedCount;
- didReceiveAllItems.call(this, items);
+ itemsRange.totalLength = this._addedCount + this._removedCount;
+ didReceiveAllItems.call(this, itemsRange);
}
- if (beginPosition < this._addedCount)
+ if (beginPosition < this._addedCount) {
this._addedNodesProvider.serializeItemsRange(beginPosition, endPosition, didReceiveAddedItems.bind(this));
- else
- this._deletedNodesProvider.serializeItemsRange(beginPosition - this._addedCount, endPosition - this._addedCount, didReceiveDeletedItems.bind(this, []));
+ } else {
+ var emptyRange = new WebInspector.HeapSnapshotCommon.ItemsRange(0, 0, 0, []);
+ this._deletedNodesProvider.serializeItemsRange(beginPosition - this._addedCount, endPosition - this._addedCount, didReceiveDeletedItems.bind(this, emptyRange));
+ }
},
sortAndRewind: function(comparator, callback)
{
+ /**
+ * @this {WebInspector.HeapSnapshotDiffNodesProvider}
+ */
function afterSort()
{
this._deletedNodesProvider.sortAndRewind(comparator, callback);
}
this._addedNodesProvider.sortAndRewind(comparator, afterSort.bind(this));
- }
+ },
+
+ __proto__: WebInspector.HeapSnapshotProviderProxy.prototype
};
/**
* @constructor
+ * @param {string} className
+ * @param {!WebInspector.HeapSnapshotCommon.DiffForClass} diffForClass
* @extends {WebInspector.HeapSnapshotGridNode}
*/
WebInspector.HeapSnapshotDiffNode = function(tree, className, diffForClass)
@@ -962,7 +1075,7 @@
createProvider: function()
{
var tree = this._dataGrid;
- return new WebInspector.HeapSnapshotDiffNodesProvider(
+ return new WebInspector.HeapSnapshotDiffNodesProvider(
tree.snapshot.createAddedNodesProvider(tree.baseSnapshot.uid, this._name),
tree.baseSnapshot.createDeletedNodesProvider(this._deletedIndexes),
this._addedCount,
@@ -987,6 +1100,9 @@
return childNode.snapshotNodeId;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
comparator: function()
{
var sortAscending = this._dataGrid.isSortOrderAscending();
@@ -1000,7 +1116,7 @@
removedSize: ["selfSize", sortAscending, "id", true],
sizeDelta: ["selfSize", sortAscending, "id", true]
}[sortColumnIdentifier];
- return WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(sortFields);
+ return WebInspector.HeapSnapshotGridNode.createComparator(sortFields);
},
_signForDelta: function(delta)
@@ -1053,15 +1169,21 @@
/**
* @param {number} snapshotObjectId
- * @param {function(?WebInspector.HeapSnapshotDominatorObjectNode)} callback
+ * @param {function(?WebInspector.DataGridNode)} callback
*/
retrieveChildBySnapshotObjectId: function(snapshotObjectId, callback)
{
+ /**
+ * @this {WebInspector.HeapSnapshotDominatorObjectNode}
+ */
function didExpand()
{
this._provider().nodePosition(snapshotObjectId, didGetNodePosition.bind(this));
}
+ /**
+ * @this {WebInspector.HeapSnapshotDominatorObjectNode}
+ */
function didGetNodePosition(nodePosition)
{
if (nodePosition === -1) {
@@ -1071,6 +1193,9 @@
this._populateChildren(nodePosition, null, didPopulateChildren.bind(this, nodePosition));
}
+ /**
+ * @this {WebInspector.HeapSnapshotDominatorObjectNode}
+ */
function didPopulateChildren(nodePosition)
{
var child = this.childForPosition(nodePosition);
@@ -1098,6 +1223,9 @@
return childNode.snapshotNodeId;
},
+ /**
+ * @return {!WebInspector.HeapSnapshotCommon.ComparatorConfig}
+ */
comparator: function()
{
var sortAscending = this._dataGrid.isSortOrderAscending();
@@ -1107,7 +1235,7 @@
shallowSize: ["selfSize", sortAscending, "id", true],
retainedSize: ["retainedSize", sortAscending, "id", true]
}[sortColumnIdentifier];
- return WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.createComparator(sortFields);
+ return WebInspector.HeapSnapshotGridNode.createComparator(sortFields);
},
_emptyData: function()
diff --git a/Source/devtools/front_end/HeapSnapshotLoader.js b/Source/devtools/front_end/HeapSnapshotLoader.js
index 2f5aae0..132886f 100644
--- a/Source/devtools/front_end/HeapSnapshotLoader.js
+++ b/Source/devtools/front_end/HeapSnapshotLoader.js
@@ -31,7 +31,6 @@
/**
* @constructor
* @param {!WebInspector.HeapSnapshotWorkerDispatcher} dispatcher
- * @implements {WebInspector.OutputStream}
*/
WebInspector.HeapSnapshotLoader = function(dispatcher)
{
@@ -58,11 +57,13 @@
this._parseStringsArray();
},
+ /**
+ * @return {!WebInspector.JSHeapSnapshot}
+ */
buildSnapshot: function(constructorName)
{
this._progress.updateStatus("Processing snapshot\u2026");
- var constructor = WebInspector[constructorName];
- var result = new constructor(this._snapshot, this._progress);
+ var result = new WebInspector.JSHeapSnapshot(this._snapshot, this._progress);
this._reset();
return result;
},
@@ -134,7 +135,7 @@
break;
}
case "parse-snapshot-info": {
- var closingBracketIndex = WebInspector.findBalancedCurlyBrackets(this._json);
+ var closingBracketIndex = WebInspector.TextUtils.findBalancedCurlyBrackets(this._json);
if (closingBracketIndex === -1)
return;
this._snapshot.snapshot = /** @type {!HeapSnapshotHeader} */ (JSON.parse(this._json.slice(0, closingBracketIndex)));
@@ -191,7 +192,8 @@
return;
this._snapshot.edges = this._array;
this._array = null;
- if (WebInspector.HeapSnapshot.enableAllocationProfiler)
+ // If there is allocation info parse it, otherwise jump straight to strings.
+ if (this._snapshot.snapshot.trace_function_count)
this._state = "find-trace-function-infos";
else
this._state = "find-strings";
diff --git a/Source/devtools/front_end/HeapSnapshotProxy.js b/Source/devtools/front_end/HeapSnapshotProxy.js
index dfb921f..af4f4e0 100644
--- a/Source/devtools/front_end/HeapSnapshotProxy.js
+++ b/Source/devtools/front_end/HeapSnapshotProxy.js
@@ -30,138 +30,6 @@
/**
* @constructor
- * @extends {WebInspector.Object}
- */
-WebInspector.HeapSnapshotWorkerWrapper = function()
-{
-}
-
-WebInspector.HeapSnapshotWorkerWrapper.prototype = {
- postMessage: function(message)
- {
- },
- terminate: function()
- {
- },
-
- __proto__: WebInspector.Object.prototype
-}
-
-/**
- * @constructor
- * @extends {WebInspector.HeapSnapshotWorkerWrapper}
- */
-WebInspector.HeapSnapshotRealWorker = function()
-{
- this._worker = new Worker("HeapSnapshotWorker.js");
- this._worker.addEventListener("message", this._messageReceived.bind(this), false);
-}
-
-WebInspector.HeapSnapshotRealWorker.prototype = {
- _messageReceived: function(event)
- {
- var message = event.data;
- this.dispatchEventToListeners("message", message);
- },
-
- postMessage: function(message)
- {
- this._worker.postMessage(message);
- },
-
- terminate: function()
- {
- this._worker.terminate();
- },
-
- __proto__: WebInspector.HeapSnapshotWorkerWrapper.prototype
-}
-
-
-/**
- * @constructor
- */
-WebInspector.AsyncTaskQueue = function()
-{
- this._queue = [];
- this._isTimerSheduled = false;
-}
-
-WebInspector.AsyncTaskQueue.prototype = {
- /**
- * @param {function()} task
- */
- addTask: function(task)
- {
- this._queue.push(task);
- this._scheduleTimer();
- },
-
- _onTimeout: function()
- {
- this._isTimerSheduled = false;
- var queue = this._queue;
- this._queue = [];
- for (var i = 0; i < queue.length; i++) {
- try {
- queue[i]();
- } catch (e) {
- console.error("Exception while running task: " + e.stack);
- }
- }
- this._scheduleTimer();
- },
-
- _scheduleTimer: function()
- {
- if (this._queue.length && !this._isTimerSheduled) {
- setTimeout(this._onTimeout.bind(this), 0);
- this._isTimerSheduled = true;
- }
- }
-}
-
-/**
- * @constructor
- * @extends {WebInspector.HeapSnapshotWorkerWrapper}
- */
-WebInspector.HeapSnapshotFakeWorker = function()
-{
- this._dispatcher = new WebInspector.HeapSnapshotWorkerDispatcher(window, this._postMessageFromWorker.bind(this));
- this._asyncTaskQueue = new WebInspector.AsyncTaskQueue();
-}
-
-WebInspector.HeapSnapshotFakeWorker.prototype = {
- postMessage: function(message)
- {
- function dispatch()
- {
- if (this._dispatcher)
- this._dispatcher.dispatchMessage({data: message});
- }
- this._asyncTaskQueue.addTask(dispatch.bind(this));
- },
-
- terminate: function()
- {
- this._dispatcher = null;
- },
-
- _postMessageFromWorker: function(message)
- {
- function send()
- {
- this.dispatchEventToListeners("message", message);
- }
- this._asyncTaskQueue.addTask(send.bind(this));
- },
-
- __proto__: WebInspector.HeapSnapshotWorkerWrapper.prototype
-}
-
-
-/**
- * @constructor
* @param {function(string, *)} eventHandler
* @extends {WebInspector.Object}
*/
@@ -172,19 +40,20 @@
this._nextCallId = 1;
this._callbacks = [];
this._previousCallbacks = [];
- // There is no support for workers in Chromium DRT.
- this._worker = typeof InspectorTest === "undefined" ? new WebInspector.HeapSnapshotRealWorker() : new WebInspector.HeapSnapshotFakeWorker();
- this._worker.addEventListener("message", this._messageReceived, this);
+ this._worker = new Worker("HeapSnapshotWorker.js");
+ this._worker.onmessage = this._messageReceived.bind(this);
}
WebInspector.HeapSnapshotWorkerProxy.prototype = {
/**
+ * @param {number} profileUid
+ * @param {function(!WebInspector.HeapSnapshotProxy)} snapshotReceivedCallback
* @return {!WebInspector.HeapSnapshotLoaderProxy}
*/
- createLoader: function(snapshotConstructorName, proxyConstructor)
+ createLoader: function(profileUid, snapshotReceivedCallback)
{
var objectId = this._nextObjectId++;
- var proxy = new WebInspector.HeapSnapshotLoaderProxy(this, objectId, snapshotConstructorName, proxyConstructor);
+ var proxy = new WebInspector.HeapSnapshotLoaderProxy(this, objectId, profileUid, snapshotReceivedCallback);
this._postMessage({callId: this._nextCallId++, disposition: "create", objectId: objectId, methodName: "WebInspector.HeapSnapshotLoader"});
return proxy;
},
@@ -201,6 +70,13 @@
this._postMessage({callId: this._nextCallId++, disposition: "dispose", objectId: objectId});
},
+ evaluateForTest: function(script, callback)
+ {
+ var callId = this._nextCallId++;
+ this._callbacks[callId] = callback;
+ this._postMessage({callId: callId, disposition: "evaluateForTest", source: script});
+ },
+
callGetter: function(callback, objectId, getterName)
{
var callId = this._nextCallId++;
@@ -208,12 +84,23 @@
this._postMessage({callId: callId, disposition: "getter", objectId: objectId, methodName: getterName});
},
+ /**
+ * @param {?function(...[?])} callback
+ * @param {string} objectId
+ * @param {string} methodName
+ * @param {function(new:T, ...[?])} proxyConstructor
+ * @return {?Object}
+ * @template T
+ */
callFactoryMethod: function(callback, objectId, methodName, proxyConstructor)
{
var callId = this._nextCallId++;
var methodArguments = Array.prototype.slice.call(arguments, 4);
var newObjectId = this._nextObjectId++;
+ /**
+ * @this {WebInspector.HeapSnapshotWorkerProxy}
+ */
function wrapCallback(remoteResult)
{
callback(remoteResult ? new proxyConstructor(this, newObjectId) : null);
@@ -229,6 +116,11 @@
}
},
+ /**
+ * @param {function(*)} callback
+ * @param {string} objectId
+ * @param {string} methodName
+ */
callMethod: function(callback, objectId, methodName)
{
var callId = this._nextCallId++;
@@ -270,6 +162,9 @@
return result;
},
+ /**
+ * @param {!MessageEvent} event
+ */
_messageReceived: function(event)
{
var data = event.data;
@@ -281,7 +176,7 @@
if (data.error) {
if (data.errorMethodName)
WebInspector.log(WebInspector.UIString("An error happened when a call for method '%s' was requested", data.errorMethodName));
- WebInspector.log(data.errorCallStack);
+ WebInspector.log(data["errorCallStack"]);
delete this._callbacks[data.callId];
return;
}
@@ -303,6 +198,7 @@
/**
* @constructor
+ * @param {number} objectId
*/
WebInspector.HeapSnapshotProxyObject = function(worker, objectId)
{
@@ -311,6 +207,10 @@
}
WebInspector.HeapSnapshotProxyObject.prototype = {
+ /**
+ * @param {string} workerMethodName
+ * @param {!Array.<*>} args
+ */
_callWorker: function(workerMethodName, args)
{
args.splice(1, 0, this._objectId);
@@ -328,20 +228,35 @@
},
/**
+ * @param {?function(...[?])} callback
+ * @param {string} methodName
+ * @param {function (new:T, ...[?])} proxyConstructor
* @param {...*} var_args
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ * @template T
*/
callFactoryMethod: function(callback, methodName, proxyConstructor, var_args)
{
return this._callWorker("callFactoryMethod", Array.prototype.slice.call(arguments, 0));
},
+ /**
+ * @param {function(T)|undefined} callback
+ * @param {string} getterName
+ * @return {*}
+ * @template T
+ */
callGetter: function(callback, getterName)
{
return this._callWorker("callGetter", Array.prototype.slice.call(arguments, 0));
},
/**
+ * @param {function(T)|undefined} callback
+ * @param {string} methodName
* @param {...*} var_args
+ * @return {*}
+ * @template T
*/
callMethod: function(callback, methodName, var_args)
{
@@ -357,25 +272,19 @@
* @constructor
* @extends {WebInspector.HeapSnapshotProxyObject}
* @implements {WebInspector.OutputStream}
+ * @param {number} objectId
+ * @param {number} profileUid
+ * @param {function(!WebInspector.HeapSnapshotProxy)} snapshotReceivedCallback
*/
-WebInspector.HeapSnapshotLoaderProxy = function(worker, objectId, snapshotConstructorName, proxyConstructor)
+WebInspector.HeapSnapshotLoaderProxy = function(worker, objectId, profileUid, snapshotReceivedCallback)
{
WebInspector.HeapSnapshotProxyObject.call(this, worker, objectId);
- this._snapshotConstructorName = snapshotConstructorName;
- this._proxyConstructor = proxyConstructor;
- this._pendingSnapshotConsumers = [];
+ this._profileUid = profileUid;
+ this._snapshotReceivedCallback = snapshotReceivedCallback;
}
WebInspector.HeapSnapshotLoaderProxy.prototype = {
/**
- * @param {function(!WebInspector.HeapSnapshotProxy)} callback
- */
- addConsumer: function(callback)
- {
- this._pendingSnapshotConsumers.push(callback);
- },
-
- /**
* @param {string} chunk
* @param {function(!WebInspector.OutputStream)=} callback
*/
@@ -389,23 +298,27 @@
*/
close: function(callback)
{
+ /**
+ * @this {WebInspector.HeapSnapshotLoaderProxy}
+ */
function buildSnapshot()
{
if (callback)
callback();
- this.callFactoryMethod(updateStaticData.bind(this), "buildSnapshot", this._proxyConstructor, this._snapshotConstructorName);
+ this.callFactoryMethod(updateStaticData.bind(this), "buildSnapshot", WebInspector.HeapSnapshotProxy);
}
+
+ /**
+ * @param {!WebInspector.HeapSnapshotProxy} snapshotProxy
+ * @this {WebInspector.HeapSnapshotLoaderProxy}
+ */
function updateStaticData(snapshotProxy)
{
this.dispose();
- snapshotProxy.updateStaticData(notifyPendingConsumers.bind(this));
+ snapshotProxy.setProfileUid(this._profileUid);
+ snapshotProxy.updateStaticData(this._snapshotReceivedCallback.bind(this));
}
- function notifyPendingConsumers(snapshotProxy)
- {
- for (var i = 0; i < this._pendingSnapshotConsumers.length; ++i)
- this._pendingSnapshotConsumers[i](snapshotProxy);
- this._pendingSnapshotConsumers = [];
- }
+
this.callMethod(buildSnapshot.bind(this), "close");
},
@@ -416,10 +329,14 @@
/**
* @constructor
* @extends {WebInspector.HeapSnapshotProxyObject}
+ * @param {!WebInspector.HeapSnapshotWorkerProxy} worker
+ * @param {number} objectId
*/
WebInspector.HeapSnapshotProxy = function(worker, objectId)
{
WebInspector.HeapSnapshotProxyObject.call(this, worker, objectId);
+ /** @type {?WebInspector.HeapSnapshotCommon.StaticData} */
+ this._staticData = null;
}
WebInspector.HeapSnapshotProxy.prototype = {
@@ -448,46 +365,73 @@
this.callMethod(callback, "dominatorIdsForNode", nodeIndex);
},
+ /**
+ * @param {number} nodeIndex
+ * @param {boolean} showHiddenData
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createEdgesProvider: function(nodeIndex, showHiddenData)
{
return this.callFactoryMethod(null, "createEdgesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndex, showHiddenData);
},
+ /**
+ * @param {number} nodeIndex
+ * @param {boolean} showHiddenData
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createRetainingEdgesProvider: function(nodeIndex, showHiddenData)
{
return this.callFactoryMethod(null, "createRetainingEdgesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndex, showHiddenData);
},
+ /**
+ * @param {string} baseSnapshotId
+ * @param {string} className
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createAddedNodesProvider: function(baseSnapshotId, className)
{
return this.callFactoryMethod(null, "createAddedNodesProvider", WebInspector.HeapSnapshotProviderProxy, baseSnapshotId, className);
},
+ /**
+ * @param {!Array.<number>} nodeIndexes
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createDeletedNodesProvider: function(nodeIndexes)
{
return this.callFactoryMethod(null, "createDeletedNodesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndexes);
},
+ /**
+ * @param {function(*):boolean} filter
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createNodesProvider: function(filter)
{
return this.callFactoryMethod(null, "createNodesProvider", WebInspector.HeapSnapshotProviderProxy, filter);
},
+ /**
+ * @param {string} className
+ * @param {string} aggregatesKey
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createNodesProviderForClass: function(className, aggregatesKey)
{
return this.callFactoryMethod(null, "createNodesProviderForClass", WebInspector.HeapSnapshotProviderProxy, className, aggregatesKey);
},
+ /**
+ * @param {number} nodeIndex
+ * @return {?WebInspector.HeapSnapshotProviderProxy}
+ */
createNodesProviderForDominator: function(nodeIndex)
{
return this.callFactoryMethod(null, "createNodesProviderForDominator", WebInspector.HeapSnapshotProviderProxy, nodeIndex);
},
- maxJsNodeId: function(callback)
- {
- this.callMethod(callback, "maxJsNodeId");
- },
-
allocationTracesTops: function(callback)
{
this.callMethod(callback, "allocationTracesTops");
@@ -500,7 +444,7 @@
dispose: function()
{
- this.disposeWorker();
+ throw new Error("Should never be called");
},
get nodeCount()
@@ -515,6 +459,10 @@
updateStaticData: function(callback)
{
+ /**
+ * @param {!WebInspector.HeapSnapshotCommon.StaticData} staticData
+ * @this {WebInspector.HeapSnapshotProxy}
+ */
function dataReceived(staticData)
{
this._staticData = staticData;
@@ -530,7 +478,20 @@
get uid()
{
- return this._staticData.uid;
+ return this._profileUid;
+ },
+
+ setProfileUid: function(profileUid)
+ {
+ this._profileUid = profileUid;
+ },
+
+ /**
+ * @return {number}
+ */
+ maxJSObjectId: function()
+ {
+ return this._staticData.maxJSObjectId;
},
__proto__: WebInspector.HeapSnapshotProxyObject.prototype
@@ -540,6 +501,8 @@
/**
* @constructor
* @extends {WebInspector.HeapSnapshotProxyObject}
+ * @param {!WebInspector.HeapSnapshotWorkerProxy} worker
+ * @param {number} objectId
*/
WebInspector.HeapSnapshotProviderProxy = function(worker, objectId)
{
@@ -557,6 +520,11 @@
this.callMethod(callback, "isEmpty");
},
+ /**
+ * @param {number} startPosition
+ * @param {number} endPosition
+ * @param {function(!WebInspector.HeapSnapshotCommon.ItemsRange)} callback
+ */
serializeItemsRange: function(startPosition, endPosition, callback)
{
this.callMethod(callback, "serializeItemsRange", startPosition, endPosition);
diff --git a/Source/devtools/front_end/HeapSnapshotView.js b/Source/devtools/front_end/HeapSnapshotView.js
index 7768585..ddceec9 100644
--- a/Source/devtools/front_end/HeapSnapshotView.js
+++ b/Source/devtools/front_end/HeapSnapshotView.js
@@ -31,17 +31,16 @@
/**
* @constructor
* @extends {WebInspector.View}
- * @param {!WebInspector.ProfilesPanel} parent
* @param {!WebInspector.HeapProfileHeader} profile
*/
-WebInspector.HeapSnapshotView = function(parent, profile)
+WebInspector.HeapSnapshotView = function(profile)
{
WebInspector.View.call(this);
this.element.classList.add("heap-snapshot-view");
- this.parent = parent;
- this.parent.addEventListener("profile added", this._onProfileHeaderAdded, this);
+ profile.profileType().addEventListener(WebInspector.HeapSnapshotProfileType.SnapshotReceived, this._onReceivSnapshot, this);
+ profile.profileType().addEventListener(WebInspector.ProfileType.Events.RemoveProfileHeader, this._onProfileHeaderRemoved, this);
if (profile._profileType.id === WebInspector.TrackingHeapSnapshotProfileType.TypeId) {
this._trackingOverviewGrid = new WebInspector.HeapTrackingOverviewGrid(profile);
@@ -49,85 +48,75 @@
this._trackingOverviewGrid.show(this.element);
}
- this.viewsContainer = document.createElement("div");
- this.viewsContainer.classList.add("views-container");
- this.element.appendChild(this.viewsContainer);
+ this.viewsContainer = new WebInspector.SplitView(false, true, "heapSnapshotRetainersViewSize", 200, 200);
+ this.viewsContainer.show(this.element);
+ this.viewsContainer.setMainElementConstraints(50, 50);
+ this.viewsContainer.setSidebarElementConstraints(70, 70);
this.containmentView = new WebInspector.View();
- this.containmentView.element.classList.add("view");
this.containmentDataGrid = new WebInspector.HeapSnapshotContainmentDataGrid();
this.containmentDataGrid.element.addEventListener("mousedown", this._mouseDownInContentsGrid.bind(this), true);
this.containmentDataGrid.show(this.containmentView.element);
this.containmentDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._selectionChanged, this);
this.constructorsView = new WebInspector.View();
- this.constructorsView.element.classList.add("view");
- this.constructorsView.element.appendChild(this._createToolbarWithClassNameFilter());
this.constructorsDataGrid = new WebInspector.HeapSnapshotConstructorsDataGrid();
- this.constructorsDataGrid.element.classList.add("class-view-grid");
this.constructorsDataGrid.element.addEventListener("mousedown", this._mouseDownInContentsGrid.bind(this), true);
this.constructorsDataGrid.show(this.constructorsView.element);
this.constructorsDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._selectionChanged, this);
this.dataGrid = /** @type {!WebInspector.HeapSnapshotSortableDataGrid} */ (this.constructorsDataGrid);
this.currentView = this.constructorsView;
- this.currentView.show(this.viewsContainer);
+ this.currentView.show(this.viewsContainer.mainElement());
this.diffView = new WebInspector.View();
- this.diffView.element.classList.add("view");
- this.diffView.element.appendChild(this._createToolbarWithClassNameFilter());
this.diffDataGrid = new WebInspector.HeapSnapshotDiffDataGrid();
- this.diffDataGrid.element.classList.add("class-view-grid");
this.diffDataGrid.show(this.diffView.element);
this.diffDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._selectionChanged, this);
this.dominatorView = new WebInspector.View();
- this.dominatorView.element.classList.add("view");
this.dominatorDataGrid = new WebInspector.HeapSnapshotDominatorsDataGrid();
this.dominatorDataGrid.element.addEventListener("mousedown", this._mouseDownInContentsGrid.bind(this), true);
this.dominatorDataGrid.show(this.dominatorView.element);
this.dominatorDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._selectionChanged, this);
- if (WebInspector.HeapSnapshot.enableAllocationProfiler) {
+ if (WebInspector.experimentsSettings.allocationProfiler.isEnabled() && profile.profileType() === WebInspector.ProfileTypeRegistry.instance.trackingHeapSnapshotProfileType) {
this.allocationView = new WebInspector.View();
- this.allocationView.element.classList.add("view");
this.allocationDataGrid = new WebInspector.AllocationDataGrid();
this.allocationDataGrid.element.addEventListener("mousedown", this._mouseDownInContentsGrid.bind(this), true);
this.allocationDataGrid.show(this.allocationView.element);
this.allocationDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._selectionChanged, this);
}
- this.retainmentViewHeader = document.createElement("div");
- this.retainmentViewHeader.classList.add("retainers-view-header");
- WebInspector.installDragHandle(this.retainmentViewHeader, this._startRetainersHeaderDragging.bind(this), this._retainersHeaderDragging.bind(this), this._endRetainersHeaderDragging.bind(this), "row-resize");
- var retainingPathsTitleDiv = document.createElement("div");
- retainingPathsTitleDiv.className = "title";
- var retainingPathsTitle = document.createElement("span");
+ this.retainmentViewHeader = document.createElementWithClass("div", "retainers-view-header");
+ var retainingPathsTitleDiv = this.retainmentViewHeader.createChild("div", "title");
+ var retainingPathsTitle = retainingPathsTitleDiv.createChild("span");
retainingPathsTitle.textContent = WebInspector.UIString("Object's retaining tree");
- retainingPathsTitleDiv.appendChild(retainingPathsTitle);
- this.retainmentViewHeader.appendChild(retainingPathsTitleDiv);
- this.element.appendChild(this.retainmentViewHeader);
+ this.viewsContainer.hideDefaultResizer();
+ this.viewsContainer.installResizer(this.retainmentViewHeader);
this.retainmentView = new WebInspector.View();
- this.retainmentView.element.classList.add("view");
this.retainmentView.element.classList.add("retaining-paths-view");
+ this.retainmentView.element.appendChild(this.retainmentViewHeader);
this.retainmentDataGrid = new WebInspector.HeapSnapshotRetainmentDataGrid();
this.retainmentDataGrid.show(this.retainmentView.element);
this.retainmentDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._inspectedObjectChanged, this);
- this.retainmentView.show(this.element);
+ this.retainmentView.show(this.viewsContainer.sidebarElement());
this.retainmentDataGrid.reset();
this.viewSelect = new WebInspector.StatusBarComboBox(this._onSelectedViewChanged.bind(this));
- this.views = [{title: "Summary", view: this.constructorsView, grid: this.constructorsDataGrid},
- {title: "Comparison", view: this.diffView, grid: this.diffDataGrid},
- {title: "Containment", view: this.containmentView, grid: this.containmentDataGrid}];
+ this.views = [{title: WebInspector.UIString("Summary"), view: this.constructorsView, grid: this.constructorsDataGrid}];
+
+ if (profile.profileType() !== WebInspector.ProfileTypeRegistry.instance.trackingHeapSnapshotProfileType)
+ this.views.push({title: WebInspector.UIString("Comparison"), view: this.diffView, grid: this.diffDataGrid});
+ this.views.push({title: WebInspector.UIString("Containment"), view: this.containmentView, grid: this.containmentDataGrid});
if (WebInspector.settings.showAdvancedHeapSnapshotProperties.get())
- this.views.push({title: "Dominators", view: this.dominatorView, grid: this.dominatorDataGrid});
- if (WebInspector.HeapSnapshot.enableAllocationProfiler)
- this.views.push({title: "Allocation", view: this.allocationView, grid: this.allocationDataGrid});
+ this.views.push({title: WebInspector.UIString("Dominators"), view: this.dominatorView, grid: this.dominatorDataGrid});
+ if (this.allocationView)
+ this.views.push({title: WebInspector.UIString("Allocation"), view: this.allocationView, grid: this.allocationDataGrid});
this.views.current = 0;
for (var i = 0; i < this.views.length; ++i)
this.viewSelect.createOption(WebInspector.UIString(this.views[i].title));
@@ -135,30 +124,38 @@
this._profile = profile;
this.baseSelect = new WebInspector.StatusBarComboBox(this._changeBase.bind(this));
- this.baseSelect.element.classList.add("hidden");
this._updateBaseOptions();
- this.filterSelect = new WebInspector.StatusBarComboBox(this._changeFilter.bind(this));
+ this._filterSelect = new WebInspector.StatusBarComboBox(this._changeFilter.bind(this));
this._updateFilterOptions();
+ this._classNameFilter = new WebInspector.StatusBarInput("Class filter");
+ this._classNameFilter.setOnChangeHandler(this._onClassFilterChanged.bind(this));
+
this.selectedSizeText = new WebInspector.StatusBarText("");
this._popoverHelper = new WebInspector.ObjectPopoverHelper(this.element, this._getHoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), undefined, true);
+ this._updateSelectorsVisibility();
this._refreshView();
}
WebInspector.HeapSnapshotView.prototype = {
_refreshView: function()
{
- this.profile.load(profileCallback.bind(this));
+ this._profile.load(profileCallback.bind(this));
+ /**
+ * @this {WebInspector.HeapSnapshotView}
+ */
function profileCallback(heapSnapshotProxy)
{
var list = this._profiles();
var profileIndex = list.indexOf(this._profile);
this.baseSelect.setSelectedIndex(Math.max(0, profileIndex - 1));
this.dataGrid.setDataSource(heapSnapshotProxy);
+ if (this._trackingOverviewGrid)
+ this._trackingOverviewGrid._updateGrid();
}
},
@@ -171,42 +168,27 @@
this.constructorsDataGrid.setSelectionRange(minId, maxId);
},
- dispose: function()
- {
- this.parent.removeEventListener("profile added", this._onProfileHeaderAdded, this);
- this.profile.dispose();
- if (this.baseProfile)
- this.baseProfile.dispose();
- this.containmentDataGrid.dispose();
- this.constructorsDataGrid.dispose();
- this.diffDataGrid.dispose();
- this.dominatorDataGrid.dispose();
- this.retainmentDataGrid.dispose();
- },
-
get statusBarItems()
{
- return [this.viewSelect.element, this.baseSelect.element, this.filterSelect.element, this.selectedSizeText.element];
- },
-
- get profile()
- {
- return this._profile;
- },
-
- get baseProfile()
- {
- return this._profile.profileType().getProfile(this._baseProfileUid);
+ var result = [this.viewSelect.element, this._classNameFilter.element];
+ if (this._profile.profileType() !== WebInspector.ProfileTypeRegistry.instance.trackingHeapSnapshotProfileType)
+ result.push(this.baseSelect.element, this._filterSelect.element);
+ result.push(this.selectedSizeText.element);
+ return result;
},
wasShown: function()
{
// FIXME: load base and current snapshots in parallel
- this.profile.load(profileCallback.bind(this));
+ this._profile.load(profileCallback.bind(this));
+
+ /**
+ * @this {WebInspector.HeapSnapshotView}
+ */
function profileCallback() {
- this.profile._wasShown();
- if (this.baseProfile)
- this.baseProfile.load(function() { });
+ this._profile._wasShown();
+ if (this._baseProfile)
+ this._baseProfile.load(function() { });
}
},
@@ -218,12 +200,6 @@
this.helpPopover.hide();
},
- onResize: function()
- {
- var height = this.retainmentView.element.clientHeight;
- this._updateRetainmentViewHeight(height);
- },
-
searchCanceled: function()
{
if (this._searchResults) {
@@ -257,6 +233,7 @@
/**
* @param {boolean} found
+ * @this {WebInspector.HeapSnapshotView}
*/
function didHighlight(found)
{
@@ -341,16 +318,25 @@
this._jumpToSearchResult(this._currentSearchResultIndex);
},
+ /**
+ * @return {boolean}
+ */
showingFirstSearchResult: function()
{
return (this._currentSearchResultIndex === 0);
},
+ /**
+ * @return {boolean}
+ */
showingLastSearchResult: function()
{
return (this._searchResults && this._currentSearchResultIndex === (this._searchResults.length - 1));
},
+ /**
+ * @return {number}
+ */
currentSearchResultIndex: function() {
return this._currentSearchResultIndex;
},
@@ -376,14 +362,14 @@
_changeBase: function()
{
- if (this._baseProfileUid === this._profiles()[this.baseSelect.selectedIndex()].uid)
+ if (this._baseProfile=== this._profiles()[this.baseSelect.selectedIndex()])
return;
- this._baseProfileUid = this._profiles()[this.baseSelect.selectedIndex()].uid;
+ this._baseProfile = this._profiles()[this.baseSelect.selectedIndex()];
var dataGrid = /** @type {!WebInspector.HeapSnapshotDiffDataGrid} */ (this.dataGrid);
// Change set base data source only if main data source is already set.
if (dataGrid.snapshot)
- this.baseProfile.load(dataGrid.setBaseDataSource.bind(dataGrid));
+ this._baseProfile.load(dataGrid.setBaseDataSource.bind(dataGrid));
if (!this.currentQuery || !this._searchFinishedCallback || !this._searchResults)
return;
@@ -397,12 +383,12 @@
_changeFilter: function()
{
- var profileIndex = this.filterSelect.selectedIndex() - 1;
+ var profileIndex = this._filterSelect.selectedIndex() - 1;
this.dataGrid.filterSelectIndexChanged(this._profiles(), profileIndex);
WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
action: WebInspector.UserMetrics.UserActionNames.HeapSnapshotFilterChanged,
- label: this.filterSelect.selectedOption().label
+ label: this._filterSelect.selectedOption().label
});
if (!this.currentQuery || !this._searchFinishedCallback || !this._searchResults)
@@ -415,22 +401,12 @@
this.performSearch(this.currentQuery, this._searchFinishedCallback);
},
- _createToolbarWithClassNameFilter: function()
+ /**
+ * @param {string} value
+ */
+ _onClassFilterChanged: function(value)
{
- var toolbar = document.createElement("div");
- toolbar.classList.add("class-view-toolbar");
- var classNameFilter = document.createElement("input");
- classNameFilter.classList.add("class-name-filter");
- classNameFilter.setAttribute("placeholder", WebInspector.UIString("Class filter"));
- classNameFilter.addEventListener("keyup", this._changeNameFilter.bind(this, classNameFilter), false);
- toolbar.appendChild(classNameFilter);
- return toolbar;
- },
-
- _changeNameFilter: function(classNameInputElement)
- {
- var filter = classNameInputElement.value;
- this.dataGrid.changeNameFilter(filter);
+ this.dataGrid.changeNameFilter(value);
},
/**
@@ -447,7 +423,7 @@
*/
populateContextMenu: function(contextMenu, event)
{
- this.dataGrid.populateContextMenu(this.parent, contextMenu, event);
+ this.dataGrid.populateContextMenu(contextMenu, event);
},
_selectionChanged: function(event)
@@ -460,7 +436,7 @@
_inspectedObjectChanged: function(event)
{
var selectedNode = event.target.selectedNode;
- if (!this.profile.fromFile() && selectedNode instanceof WebInspector.HeapSnapshotGenericObjectNode)
+ if (!this._profile.fromFile() && selectedNode instanceof WebInspector.HeapSnapshotGenericObjectNode)
ConsoleAgent.addInspectedHeapObject(selectedNode.snapshotNodeId);
},
@@ -498,6 +474,9 @@
return;
}
+ /**
+ * @this {WebInspector.HeapSnapshotView}
+ */
function dataGridContentShown(event)
{
var dataGrid = event.data;
@@ -517,7 +496,11 @@
if (dataGrid.snapshot)
return;
- this.profile.load(didLoadSnapshot.bind(this));
+ this._profile.load(didLoadSnapshot.bind(this));
+
+ /**
+ * @this {WebInspector.HeapSnapshotView}
+ */
function didLoadSnapshot(snapshotProxy)
{
if (this.dataGrid !== dataGrid)
@@ -525,12 +508,15 @@
if (dataGrid.snapshot !== snapshotProxy)
dataGrid.setDataSource(snapshotProxy);
if (dataGrid === this.diffDataGrid) {
- if (!this._baseProfileUid)
- this._baseProfileUid = this._profiles()[this.baseSelect.selectedIndex()].uid;
- this.baseProfile.load(didLoadBaseSnaphot.bind(this));
+ if (!this._baseProfile)
+ this._baseProfile = this._profiles()[this.baseSelect.selectedIndex()];
+ this._baseProfile.load(didLoadBaseSnaphot.bind(this));
}
}
+ /**
+ * @this {WebInspector.HeapSnapshotView}
+ */
function didLoadBaseSnaphot(baseSnapshotProxy)
{
if (this.diffDataGrid.baseSnapshot !== baseSnapshotProxy)
@@ -545,24 +531,14 @@
_updateSelectorsVisibility: function()
{
- if (this.currentView === this.diffView)
- this.baseSelect.element.classList.remove("hidden");
- else
- this.baseSelect.element.classList.add("hidden");
+ this.baseSelect.visible = (this.currentView === this.diffView);
+ this._filterSelect.visible = (this.currentView === this.constructorsView);
+ this._classNameFilter.visible = (this.currentView === this.constructorsView || this.currentView === this.diffView);
- if (this.currentView === this.constructorsView) {
- if (this._trackingOverviewGrid) {
- this._trackingOverviewGrid.element.classList.remove("hidden");
+ if (this._trackingOverviewGrid) {
+ this._trackingOverviewGrid.element.classList.toggle("hidden", this.currentView !== this.constructorsView);
+ if (this.currentView === this.constructorsView)
this._trackingOverviewGrid.update();
- this.viewsContainer.classList.add("reserve-80px-at-top");
- }
- this.filterSelect.element.classList.remove("hidden");
- } else {
- this.filterSelect.element.classList.add("hidden");
- if (this._trackingOverviewGrid) {
- this._trackingOverviewGrid.element.classList.add("hidden");
- this.viewsContainer.classList.remove("reserve-80px-at-top");
- }
}
},
@@ -576,7 +552,7 @@
var view = this.views[this.views.current];
this.currentView = view.view;
this.dataGrid = view.grid;
- this.currentView.show(this.viewsContainer);
+ this.currentView.show(this.viewsContainer.mainElement());
this.refreshVisibleData();
this.dataGrid.updateWidths();
@@ -608,49 +584,11 @@
_resolveObjectForPopover: function(element, showCallback, objectGroupName)
{
- if (this.profile.fromFile())
+ if (this._profile.fromFile())
return;
element.node.queryObjectContent(showCallback, objectGroupName);
},
- /**
- * @return {boolean}
- */
- _startRetainersHeaderDragging: function(event)
- {
- if (!this.isShowing())
- return false;
-
- this._previousDragPosition = event.pageY;
- return true;
- },
-
- _retainersHeaderDragging: function(event)
- {
- var height = this.retainmentView.element.clientHeight;
- height += this._previousDragPosition - event.pageY;
- this._previousDragPosition = event.pageY;
- this._updateRetainmentViewHeight(height);
- event.consume(true);
- },
-
- _endRetainersHeaderDragging: function(event)
- {
- delete this._previousDragPosition;
- event.consume();
- },
-
- _updateRetainmentViewHeight: function(height)
- {
- height = Number.constrain(height, Preferences.minConsoleHeight, this.element.clientHeight - Preferences.minConsoleHeight);
- this.viewsContainer.style.bottom = (height + this.retainmentViewHeader.clientHeight) + "px";
- if (this._trackingOverviewGrid && this.currentView === this.constructorsView)
- this.viewsContainer.classList.add("reserve-80px-at-top");
- this.retainmentView.element.style.height = height + "px";
- this.retainmentViewHeader.style.bottom = height + "px";
- this.currentView.doResize();
- },
-
_updateBaseOptions: function()
{
var list = this._profiles();
@@ -668,31 +606,49 @@
{
var list = this._profiles();
// We're assuming that snapshots can only be added.
- if (this.filterSelect.size() - 1 === list.length)
+ if (this._filterSelect.size() - 1 === list.length)
return;
- if (!this.filterSelect.size())
- this.filterSelect.createOption(WebInspector.UIString("All objects"));
+ if (!this._filterSelect.size())
+ this._filterSelect.createOption(WebInspector.UIString("All objects"));
- for (var i = this.filterSelect.size() - 1, n = list.length; i < n; ++i) {
+ for (var i = this._filterSelect.size() - 1, n = list.length; i < n; ++i) {
var title = list[i].title;
if (!i)
title = WebInspector.UIString("Objects allocated before %s", title);
else
title = WebInspector.UIString("Objects allocated between %s and %s", list[i - 1].title, title);
- this.filterSelect.createOption(title);
+ this._filterSelect.createOption(title);
}
},
+ _updateControls: function()
+ {
+ this._updateBaseOptions();
+ this._updateFilterOptions();
+ },
+
/**
* @param {!WebInspector.Event} event
*/
- _onProfileHeaderAdded: function(event)
+ _onReceivSnapshot: function(event)
{
- if (!event.data || event.data.type !== this._profile.profileType().id)
- return;
- this._updateBaseOptions();
- this._updateFilterOptions();
+ this._updateControls();
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onProfileHeaderRemoved: function(event)
+ {
+ var profile = event.data;
+ if (this._profile === profile) {
+ this.detach();
+ this._profile.profileType().removeEventListener(WebInspector.ProfileType.Events.AddProfileHeader, this._onReceivSnapshot, this);
+ this._profile.profileType().removeEventListener(WebInspector.ProfileType.Events.RemoveProfileHeader, this._onProfileHeaderRemoved, this);
+ } else {
+ this._updateControls();
+ }
},
__proto__: WebInspector.View.prototype
@@ -744,19 +700,10 @@
},
/**
- * @param {!HeapProfilerAgent.ProfileHeader} profileHeader
- */
- addProfileHeader: function(profileHeader)
- {
- this._genericCaller("addProfileHeader");
- },
-
- /**
* @override
- * @param {number} uid
* @param {string} chunk
*/
- addHeapSnapshotChunk: function(uid, chunk)
+ addHeapSnapshotChunk: function(chunk)
{
this._genericCaller("addHeapSnapshotChunk");
},
@@ -765,8 +712,9 @@
* @override
* @param {number} done
* @param {number} total
+ * @param {boolean=} finished
*/
- reportHeapSnapshotProgress: function(done, total)
+ reportHeapSnapshotProgress: function(done, total, finished)
{
this._genericCaller("reportHeapSnapshotProgress");
},
@@ -786,10 +734,12 @@
* @constructor
* @extends {WebInspector.ProfileType}
* @implements {HeapProfilerAgent.Dispatcher}
+ * @param {string=} id
+ * @param {string=} title
*/
-WebInspector.HeapSnapshotProfileType = function()
+WebInspector.HeapSnapshotProfileType = function(id, title)
{
- WebInspector.ProfileType.call(this, WebInspector.HeapSnapshotProfileType.TypeId, WebInspector.UIString("Take Heap Snapshot"));
+ WebInspector.ProfileType.call(this, id || WebInspector.HeapSnapshotProfileType.TypeId, title || WebInspector.UIString("Take Heap Snapshot"));
WebInspector.HeapProfilerDispatcher._dispatcher.register(this);
}
@@ -872,58 +822,51 @@
{
if (this.profileBeingRecorded())
return;
- this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this, WebInspector.UIString("Snapshotting\u2026"));
+ this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this);
this.addProfile(this._profileBeingRecorded);
- HeapProfilerAgent.takeHeapSnapshot(true, callback);
- },
+ this._profileBeingRecorded.updateStatus(WebInspector.UIString("Snapshotting\u2026"));
- /**
- * @param {!HeapProfilerAgent.ProfileHeader} profileHeader
- */
- addProfileHeader: function(profileHeader)
- {
- var profile = this.profileBeingRecorded();
- if (!profile)
- return;
- profile.title = profileHeader.title;
- profile.uid = profileHeader.uid;
- profile.maxJSObjectId = profileHeader.maxJSObjectId || 0;
-
- profile.sidebarElement.mainTitle = profile.title;
- profile.sidebarElement.subtitle = "";
- profile.sidebarElement.wait = false;
-
- this._profileSamples = null;
- this._profileBeingRecorded = null;
-
- WebInspector.panels.profiles._showProfile(profile);
- profile.existingView()._refreshView();
+ /**
+ * @param {?string} error
+ * @this {WebInspector.HeapSnapshotProfileType}
+ */
+ function didTakeHeapSnapshot(error)
+ {
+ var profile = this._profileBeingRecorded;
+ profile.title = WebInspector.UIString("Snapshot %d", profile.uid);
+ profile._finishLoad();
+ this._profileBeingRecorded = null;
+ WebInspector.panels.profiles.showProfile(profile);
+ callback();
+ }
+ HeapProfilerAgent.takeHeapSnapshot(true, didTakeHeapSnapshot.bind(this));
},
/**
* @override
- * @param {number} uid
* @param {string} chunk
*/
- addHeapSnapshotChunk: function(uid, chunk)
+ addHeapSnapshotChunk: function(chunk)
{
- var profile = this.getProfile(uid);
- if (profile)
- profile.transferChunk(chunk);
+ if (!this.profileBeingRecorded())
+ return;
+ this.profileBeingRecorded().transferChunk(chunk);
},
/**
* @override
* @param {number} done
* @param {number} total
+ * @param {boolean=} finished
*/
- reportHeapSnapshotProgress: function(done, total)
+ reportHeapSnapshotProgress: function(done, total, finished)
{
var profile = this.profileBeingRecorded();
if (!profile)
return;
- profile.sidebarElement.subtitle = WebInspector.UIString("%.0f%", (done / total) * 100);
- profile.sidebarElement.wait = true;
+ profile.updateStatus(WebInspector.UIString("%.0f%", (done / total) * 100), true);
+ if (finished)
+ profile._prepareToLoad();
},
/**
@@ -934,17 +877,6 @@
this._reset();
},
- /**
- * @override
- * @param {!WebInspector.ProfileHeader} profile
- */
- removeProfile: function(profile)
- {
- if (this._profileBeingRecorded !== profile && !profile.fromFile())
- HeapProfilerAgent.removeProfile(profile.uid);
- WebInspector.ProfileType.prototype.removeProfile.call(this, profile);
- },
-
_snapshotReceived: function(profile)
{
if (this._profileBeingRecorded === profile)
@@ -959,13 +891,10 @@
/**
* @constructor
* @extends {WebInspector.HeapSnapshotProfileType}
- * @param {!WebInspector.ProfilesPanel} profilesPanel
*/
-WebInspector.TrackingHeapSnapshotProfileType = function(profilesPanel)
+WebInspector.TrackingHeapSnapshotProfileType = function()
{
- WebInspector.ProfileType.call(this, WebInspector.TrackingHeapSnapshotProfileType.TypeId, WebInspector.UIString("Record Heap Allocations"));
- this._profilesPanel = profilesPanel;
- WebInspector.HeapProfilerDispatcher._dispatcher.register(this);
+ WebInspector.HeapSnapshotProfileType.call(this, WebInspector.TrackingHeapSnapshotProfileType.TypeId, WebInspector.UIString("Record Heap Allocations"));
}
WebInspector.TrackingHeapSnapshotProfileType.TypeId = "HEAP-RECORD";
@@ -1016,10 +945,7 @@
if (profileSamples.totalTime < timestamp - profileSamples.timestamps[0])
profileSamples.totalTime *= 2;
this.dispatchEventToListeners(WebInspector.TrackingHeapSnapshotProfileType.HeapStatsUpdate, this._profileSamples);
- var profile = this._profileBeingRecorded;
- profile.sidebarElement.wait = true;
- if (profile.sidebarElement && !profile.sidebarElement.wait)
- profile.sidebarElement.wait = true;
+ this._profileBeingRecorded.updateStatus(null, true);
},
/**
@@ -1058,7 +984,7 @@
{
if (this.profileBeingRecorded())
return;
- this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this, WebInspector.UIString("Recording\u2026"));
+ this._profileBeingRecorded = new WebInspector.HeapProfileHeader(this);
this._lastSeenIndex = -1;
this._profileSamples = {
'sizes': [],
@@ -1070,13 +996,28 @@
this._profileBeingRecorded._profileSamples = this._profileSamples;
this._recording = true;
this.addProfile(this._profileBeingRecorded);
- HeapProfilerAgent.startTrackingHeapObjects();
+ this._profileBeingRecorded.updateStatus(WebInspector.UIString("Recording\u2026"));
+ HeapProfilerAgent.startTrackingHeapObjects(WebInspector.experimentsSettings.allocationProfiler.isEnabled());
this.dispatchEventToListeners(WebInspector.TrackingHeapSnapshotProfileType.TrackingStarted);
},
_stopRecordingProfile: function()
{
- HeapProfilerAgent.stopTrackingHeapObjects(true);
+ var profile = this._profileBeingRecorded;
+ profile.updateStatus(WebInspector.UIString("Snapshotting\u2026"));
+ /**
+ * @param {?string} error
+ * @this {WebInspector.HeapSnapshotProfileType}
+ */
+ function didTakeHeapSnapshot(error)
+ {
+ profile._finishLoad();
+ this._profileSamples = null;
+ this._profileBeingRecorded = null;
+ WebInspector.panels.profiles.showProfile(profile);
+ }
+
+ HeapProfilerAgent.stopTrackingHeapObjects(true, didTakeHeapSnapshot.bind(this));
this._recording = false;
this.dispatchEventToListeners(WebInspector.TrackingHeapSnapshotProfileType.TrackingStopped);
},
@@ -1109,21 +1050,32 @@
this._lastSeenIndex = -1;
},
+ /**
+ * @override
+ */
+ profileBeingRecordedRemoved: function()
+ {
+ this._stopRecordingProfile();
+ this._profileSamples = null;
+ },
+
__proto__: WebInspector.HeapSnapshotProfileType.prototype
}
/**
* @constructor
* @extends {WebInspector.ProfileHeader}
- * @param {!WebInspector.ProfileType} type
- * @param {string} title
- * @param {number=} uid
- * @param {number=} maxJSObjectId
+ * @param {!WebInspector.HeapSnapshotProfileType} type
+ * @param {string=} title
*/
-WebInspector.HeapProfileHeader = function(type, title, uid, maxJSObjectId)
+WebInspector.HeapProfileHeader = function(type, title)
{
- WebInspector.ProfileHeader.call(this, type, title, uid);
- this.maxJSObjectId = maxJSObjectId;
+ WebInspector.ProfileHeader.call(this, type, title || WebInspector.UIString("Snapshot %d", type._nextProfileUid));
+ this.maxJSObjectId = -1;
+ /**
+ * @type {?WebInspector.HeapSnapshotWorkerProxy}
+ */
+ this._workerProxy = null;
/**
* @type {?WebInspector.OutputStream}
*/
@@ -1132,13 +1084,18 @@
* @type {?WebInspector.HeapSnapshotProxy}
*/
this._snapshotProxy = null;
+ /**
+ * @type {?Array.<function(!WebInspector.HeapSnapshotProxy)>}
+ */
+ this._loadCallbacks = [];
this._totalNumberOfChunks = 0;
- this._transferHandler = null;
+ this._bufferedWriter = null;
}
WebInspector.HeapProfileHeader.prototype = {
/**
* @override
+ * @return {!WebInspector.ProfileSidebarTreeElement}
*/
createSidebarTreeElement: function()
{
@@ -1147,11 +1104,11 @@
/**
* @override
- * @param {!WebInspector.ProfilesPanel} profilesPanel
+ * @return {!WebInspector.HeapSnapshotView}
*/
- createView: function(profilesPanel)
+ createView: function()
{
- return new WebInspector.HeapSnapshotView(profilesPanel, this);
+ return new WebInspector.HeapSnapshotView(this);
},
/**
@@ -1166,53 +1123,49 @@
callback(this._snapshotProxy);
return;
}
+ this._loadCallbacks.push(callback);
+ },
- this._numberOfChunks = 0;
- if (!this._receiver) {
- this._setupWorker();
- this._transferHandler = new WebInspector.BackendSnapshotLoader(this);
- this.sidebarElement.subtitle = WebInspector.UIString("Loading\u2026");
- this.sidebarElement.wait = true;
- this._transferSnapshot();
+ _prepareToLoad: function()
+ {
+ console.assert(!this._receiver, "Already loading");
+ this._setupWorker();
+ this.updateStatus(WebInspector.UIString("Loading\u2026"), true);
+ },
+
+ _finishLoad: function()
+ {
+ this._receiver.close(function() {});
+ if (this._bufferedWriter) {
+ this._bufferedWriter.close(this._didWriteToTempFile.bind(this));
+ this._bufferedWriter = null;
}
- var loaderProxy = /** @type {?WebInspector.HeapSnapshotLoaderProxy} */ (this._receiver);
- console.assert(loaderProxy);
- loaderProxy.addConsumer(callback);
},
- _transferSnapshot: function()
+ _didWriteToTempFile: function(tempFile)
{
- function finishTransfer()
- {
- if (this._transferHandler) {
- this._transferHandler.finishTransfer();
- this._totalNumberOfChunks = this._transferHandler._totalNumberOfChunks;
- }
+ this._tempFile = tempFile;
+ if (!tempFile)
+ this._failedToCreateTempFile = true;
+ if (this._onTempFileReady) {
+ this._onTempFileReady();
+ this._onTempFileReady = null;
}
- HeapProfilerAgent.getHeapSnapshot(this.uid, finishTransfer.bind(this));
- },
-
- snapshotConstructorName: function()
- {
- return "JSHeapSnapshot";
- },
-
- snapshotProxyConstructor: function()
- {
- return WebInspector.HeapSnapshotProxy;
},
_setupWorker: function()
{
+ /**
+ * @this {WebInspector.HeapProfileHeader}
+ */
function setProfileWait(event)
{
- this.sidebarElement.wait = event.data;
+ this.updateStatus(null, event.data);
}
- var worker = new WebInspector.HeapSnapshotWorkerProxy(this._handleWorkerEvent.bind(this));
- worker.addEventListener("wait", setProfileWait, this);
- var loaderProxy = worker.createLoader(this.snapshotConstructorName(), this.snapshotProxyConstructor());
- loaderProxy.addConsumer(this._snapshotReceived.bind(this));
- this._receiver = loaderProxy;
+ console.assert(!this._workerProxy, "HeapSnapshotWorkerProxy already exists");
+ this._workerProxy = new WebInspector.HeapSnapshotWorkerProxy(this._handleWorkerEvent.bind(this));
+ this._workerProxy.addEventListener("wait", setProfileWait, this);
+ this._receiver = this._workerProxy.createLoader(this.uid, this._snapshotReceived.bind(this));
},
/**
@@ -1221,9 +1174,10 @@
*/
_handleWorkerEvent: function(eventName, data)
{
- if (WebInspector.HeapSnapshotProgress.Event.Update !== eventName)
+ if (WebInspector.HeapSnapshotProgressEvent.Update !== eventName)
return;
- this._updateSubtitle(data);
+ var subtitle = /** @type {string} */ (data);
+ this.updateStatus(subtitle);
},
/**
@@ -1231,26 +1185,17 @@
*/
dispose: function()
{
- if (this._receiver)
- this._receiver.close();
- else if (this._snapshotProxy)
- this._snapshotProxy.dispose();
- if (this._view) {
- var view = this._view;
- this._view = null;
- view.dispose();
- }
- },
-
- _updateSubtitle: function(value)
- {
- this.sidebarElement.subtitle = value;
+ if (this._workerProxy)
+ this._workerProxy.dispose();
+ this.removeTempFile();
+ this._wasDisposed = true;
},
_didCompleteSnapshotTransfer: function()
{
- this.sidebarElement.subtitle = Number.bytesToString(this._snapshotProxy.totalSize);
- this.sidebarElement.wait = false;
+ if (!this._snapshotProxy)
+ return;
+ this.updateStatus(Number.bytesToString(this._snapshotProxy.totalSize), false);
},
/**
@@ -1258,31 +1203,34 @@
*/
transferChunk: function(chunk)
{
- this._transferHandler.transferChunk(chunk);
+ if (!this._bufferedWriter)
+ this._bufferedWriter = new WebInspector.BufferedTempFileWriter("heap-profiler", this.uid);
+ this._bufferedWriter.write(chunk);
+
+ ++this._totalNumberOfChunks;
+ this._receiver.write(chunk, function() {});
},
_snapshotReceived: function(snapshotProxy)
{
+ if (this._wasDisposed)
+ return;
this._receiver = null;
- if (snapshotProxy)
- this._snapshotProxy = snapshotProxy;
+ this._snapshotProxy = snapshotProxy;
+ this.maxJSObjectId = snapshotProxy.maxJSObjectId();
this._didCompleteSnapshotTransfer();
- var worker = /** @type {!WebInspector.HeapSnapshotWorkerProxy} */ (this._snapshotProxy.worker);
- worker.startCheckingForLongRunningCalls();
+ this._workerProxy.startCheckingForLongRunningCalls();
this.notifySnapshotReceived();
-
- function didGetMaxNodeId(id)
- {
- this.maxJSObjectId = id;
- }
-
- if (this.fromFile())
- snapshotProxy.maxJsNodeId(didGetMaxNodeId.bind(this));
},
notifySnapshotReceived: function()
{
+ for (var i = 0; i < this._loadCallbacks.length; i++)
+ this._loadCallbacks[i](this._snapshotProxy);
+ this._loadCallbacks = null;
this._profileType._snapshotReceived(this);
+ if (this.canSaveToFile())
+ this.dispatchEventToListeners(WebInspector.ProfileHeader.Events.ProfileReceived);
},
// Hook point for tests.
@@ -1296,7 +1244,7 @@
*/
canSaveToFile: function()
{
- return !this.fromFile() && !!this._snapshotProxy && !this._receiver;
+ return !this.fromFile() && this._snapshotProxy;
},
/**
@@ -1308,29 +1256,42 @@
/**
* @param {boolean} accepted
+ * @this {WebInspector.HeapProfileHeader}
*/
function onOpen(accepted)
{
if (!accepted)
return;
- this._receiver = fileOutputStream;
- this._transferHandler = new WebInspector.SaveSnapshotHandler(this);
- this._transferSnapshot();
+ if (this._failedToCreateTempFile) {
+ WebInspector.log("Failed to open temp file with heap snapshot",
+ WebInspector.ConsoleMessage.MessageLevel.Error);
+ fileOutputStream.close();
+ } else if (this._tempFile) {
+ var delegate = new WebInspector.SaveSnapshotOutputStreamDelegate(this);
+ this._tempFile.writeToOutputSteam(fileOutputStream, delegate);
+ } else {
+ this._onTempFileReady = onOpen.bind(this, accepted);
+ this._updateSaveProgress(0, 1);
+ }
}
this._fileName = this._fileName || "Heap-" + new Date().toISO8601Compact() + this._profileType.fileExtension();
fileOutputStream.open(this._fileName, onOpen.bind(this));
},
+ _updateSaveProgress: function(value, total)
+ {
+ var percentValue = ((total ? (value / total) : 0) * 100).toFixed(0);
+ this.updateStatus(WebInspector.UIString("Saving\u2026 %d\%", percentValue));
+ },
+
/**
* @override
* @param {!File} file
*/
loadFromFile: function(file)
{
- this.sidebarElement.subtitle = WebInspector.UIString("Loading\u2026");
- this.sidebarElement.wait = true;
+ this.updateStatus(WebInspector.UIString("Loading\u2026"), true);
this._setupWorker();
-
var delegate = new WebInspector.HeapSnapshotLoadFromFileDelegate(this);
var fileReader = this._createFileReader(file, delegate);
fileReader.start(this._receiver);
@@ -1344,102 +1305,6 @@
__proto__: WebInspector.ProfileHeader.prototype
}
-
-/**
- * @constructor
- * @param {!WebInspector.HeapProfileHeader} header
- * @param {string} title
- */
-WebInspector.SnapshotTransferHandler = function(header, title)
-{
- this._numberOfChunks = 0;
- this._savedChunks = 0;
- this._header = header;
- this._totalNumberOfChunks = 0;
- this._title = title;
-}
-
-
-WebInspector.SnapshotTransferHandler.prototype = {
- /**
- * @param {string} chunk
- */
- transferChunk: function(chunk)
- {
- ++this._numberOfChunks;
- this._header._receiver.write(chunk, this._didTransferChunk.bind(this));
- },
-
- finishTransfer: function()
- {
- },
-
- _didTransferChunk: function()
- {
- this._updateProgress(++this._savedChunks, this._totalNumberOfChunks);
- },
-
- _updateProgress: function(value, total)
- {
- }
-}
-
-
-/**
- * @constructor
- * @param {!WebInspector.HeapProfileHeader} header
- * @extends {WebInspector.SnapshotTransferHandler}
- */
-WebInspector.SaveSnapshotHandler = function(header)
-{
- WebInspector.SnapshotTransferHandler.call(this, header, "Saving\u2026 %d\%");
- this._totalNumberOfChunks = header._totalNumberOfChunks;
- this._updateProgress(0, this._totalNumberOfChunks);
-}
-
-
-WebInspector.SaveSnapshotHandler.prototype = {
- _updateProgress: function(value, total)
- {
- var percentValue = ((total ? (value / total) : 0) * 100).toFixed(0);
- this._header._updateSubtitle(WebInspector.UIString(this._title, percentValue));
- if (value === total) {
- this._header._receiver.close();
- this._header._didCompleteSnapshotTransfer();
- }
- },
-
- __proto__: WebInspector.SnapshotTransferHandler.prototype
-}
-
-
-/**
- * @constructor
- * @param {!WebInspector.HeapProfileHeader} header
- * @extends {WebInspector.SnapshotTransferHandler}
- */
-WebInspector.BackendSnapshotLoader = function(header)
-{
- WebInspector.SnapshotTransferHandler.call(this, header, "Loading\u2026 %d\%");
-}
-
-
-WebInspector.BackendSnapshotLoader.prototype = {
- finishTransfer: function()
- {
- this._header._receiver.close(this._didFinishTransfer.bind(this));
- this._totalNumberOfChunks = this._numberOfChunks;
- },
-
- _didFinishTransfer: function()
- {
- console.assert(this._totalNumberOfChunks === this._savedChunks, "Not all chunks were transfered.");
- },
-
- __proto__: WebInspector.SnapshotTransferHandler.prototype
-}
-
-
/**
* @constructor
* @implements {WebInspector.OutputStreamDelegate}
@@ -1470,18 +1335,60 @@
*/
onError: function (reader, e)
{
+ var subtitle;
switch(e.target.error.code) {
case e.target.error.NOT_FOUND_ERR:
- this._snapshotHeader._updateSubtitle(WebInspector.UIString("'%s' not found.", reader.fileName()));
- break;
- case e.target.error.NOT_READABLE_ERR:
- this._snapshotHeader._updateSubtitle(WebInspector.UIString("'%s' is not readable", reader.fileName()));
- break;
- case e.target.error.ABORT_ERR:
+ subtitle = WebInspector.UIString("'%s' not found.", reader.fileName());
break;
+ case e.target.error.NOT_READABLE_ERR:
+ subtitle = WebInspector.UIString("'%s' is not readable", reader.fileName());
+ break;
+ case e.target.error.ABORT_ERR:
+ return;
default:
- this._snapshotHeader._updateSubtitle(WebInspector.UIString("'%s' error %d", reader.fileName(), e.target.error.code));
+ subtitle = WebInspector.UIString("'%s' error %d", reader.fileName(), e.target.error.code);
}
+ this._snapshotHeader.updateStatus(subtitle);
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.OutputStreamDelegate}
+ * @param {!WebInspector.HeapProfileHeader} profileHeader
+ */
+WebInspector.SaveSnapshotOutputStreamDelegate = function(profileHeader)
+{
+ this._profileHeader = profileHeader;
+}
+
+WebInspector.SaveSnapshotOutputStreamDelegate.prototype = {
+ onTransferStarted: function()
+ {
+ this._profileHeader._updateSaveProgress(0, 1);
+ },
+
+ onTransferFinished: function()
+ {
+ this._profileHeader._didCompleteSnapshotTransfer();
+ },
+
+ /**
+ * @param {!WebInspector.ChunkedReader} reader
+ */
+ onChunkTransferred: function(reader)
+ {
+ this._profileHeader._updateSaveProgress(reader.loadedSize(), reader.fileSize());
+ },
+
+ /**
+ * @param {!WebInspector.ChunkedReader} reader
+ */
+ onError: function(reader, event)
+ {
+ WebInspector.log("Failed to read heap snapshot from temp file: " + event.message,
+ WebInspector.ConsoleMessage.MessageLevel.Error);
+ this.onTransferFinished();
}
}
@@ -1495,6 +1402,7 @@
WebInspector.View.call(this);
this.registerRequiredCSS("flameChart.css");
this.element.id = "heap-recording-view";
+ this.element.classList.add("heap-tracking-overview");
this._overviewContainer = this.element.createChild("div", "overview-container");
this._overviewGrid = new WebInspector.OverviewGrid("heap-recording");
@@ -1790,6 +1698,7 @@
/**
* @param {number} time
+ * @return {number}
*/
computePosition: function(time)
{
@@ -1806,21 +1715,33 @@
return Number.secondsToString((value + this._minimumBoundaries) / 1000, hires);
},
+ /**
+ * @return {number}
+ */
maximumBoundary: function()
{
return this._maximumBoundaries;
},
+ /**
+ * @return {number}
+ */
minimumBoundary: function()
{
return this._minimumBoundaries;
},
+ /**
+ * @return {number}
+ */
zeroTime: function()
{
return this._minimumBoundaries;
},
+ /**
+ * @return {number}
+ */
boundarySpan: function()
{
return this._maximumBoundaries - this._minimumBoundaries;
diff --git a/Source/devtools/front_end/HeapSnapshotWorker.js b/Source/devtools/front_end/HeapSnapshotWorker.js
index aadd6cf..bec04b3 100644
--- a/Source/devtools/front_end/HeapSnapshotWorker.js
+++ b/Source/devtools/front_end/HeapSnapshotWorker.js
@@ -29,14 +29,14 @@
*/
WebInspector = {};
-WebInspector.UIString = function(s) { return s; };
importScripts("AllocationProfile.js");
importScripts("HeapSnapshot.js");
+importScripts("HeapSnapshotCommon.js");
importScripts("HeapSnapshotLoader.js");
importScripts("HeapSnapshotWorkerDispatcher.js");
importScripts("JSHeapSnapshot.js");
-importScripts("FileUtils.js");
+importScripts("TextUtils.js");
importScripts("UIString.js");
importScripts("utilities.js");
diff --git a/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js b/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js
index 3c17c89..4f3daa7 100644
--- a/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js
+++ b/Source/devtools/front_end/HeapSnapshotWorkerDispatcher.js
@@ -59,7 +59,7 @@
dispatchMessage: function(event)
{
- var data = event.data;
+ var data = /** @type {!WebInspector.HeapSnapshotCommon.WorkerCommand } */(event.data);
var response = {callId: data.callId};
try {
switch (data.disposition) {
@@ -91,6 +91,14 @@
response.result = object[data.methodName].apply(object, data.methodArguments);
break;
}
+ case "evaluateForTest": {
+ try {
+ response.result = eval(data.source)
+ } catch (e) {
+ response.result = e.toString();
+ }
+ break;
+ }
}
} catch (e) {
response.error = e.toString();
diff --git a/Source/devtools/front_end/HelpScreen.js b/Source/devtools/front_end/HelpScreen.js
index 36f2425..5c3f227 100644
--- a/Source/devtools/front_end/HelpScreen.js
+++ b/Source/devtools/front_end/HelpScreen.js
@@ -39,7 +39,7 @@
this.markAsRoot();
this.registerRequiredCSS("helpScreen.css");
- this.element.className = "help-window-outer";
+ this.element.classList.add("help-window-outer");
this.element.addEventListener("keydown", this._onKeyDown.bind(this), false);
this.element.tabIndex = 0;
@@ -88,7 +88,7 @@
if (visibleHelpScreen)
visibleHelpScreen.hide();
WebInspector.HelpScreen._visibleScreen = this;
- this.show(document.body);
+ this.show(WebInspector.inspectorView.devtoolsElement());
this.focus();
},
@@ -129,29 +129,19 @@
/**
* @constructor
- * @param {string=} title
- * @param {string=} message
* @extends {WebInspector.HelpScreen}
*/
-WebInspector.HelpScreenUntilReload = function(title, message)
+WebInspector.RemoteDebuggingTerminatedScreen = function(reason)
{
- WebInspector.HelpScreen.call(this, title);
+ WebInspector.HelpScreen.call(this, WebInspector.UIString("Detached from the target"));
var p = this.contentElement.createChild("p");
p.classList.add("help-section");
- p.textContent = message;
- WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
+ p.createChild("span").textContent = WebInspector.UIString("Remote debugging has been terminated with reason: ");
+ p.createChild("span", "error-message").textContent = reason;
+ p.createChild("br");
+ p.createChild("span").textContent = WebInspector.UIString("Please re-attach to the new target.");
}
-WebInspector.HelpScreenUntilReload.prototype = {
- /**
- * @override
- */
- willHide: function()
- {
- WebInspector.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
- WebInspector.HelpScreen.prototype.willHide.call(this);
- },
-
+WebInspector.RemoteDebuggingTerminatedScreen.prototype = {
__proto__: WebInspector.HelpScreen.prototype
}
-
diff --git a/Source/devtools/front_end/HelpScreenUntilReload.js b/Source/devtools/front_end/HelpScreenUntilReload.js
new file mode 100644
index 0000000..44bc479
--- /dev/null
+++ b/Source/devtools/front_end/HelpScreenUntilReload.js
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2013 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @param {string=} title
+ * @param {string=} message
+ * @extends {WebInspector.HelpScreen}
+ */
+WebInspector.HelpScreenUntilReload = function(title, message)
+{
+ WebInspector.HelpScreen.call(this, title);
+ var p = this.contentElement.createChild("p");
+ p.classList.add("help-section");
+ p.textContent = message;
+ WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
+}
+
+WebInspector.HelpScreenUntilReload.prototype = {
+ /**
+ * @override
+ */
+ willHide: function()
+ {
+ WebInspector.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
+ WebInspector.HelpScreen.prototype.willHide.call(this);
+ },
+
+ __proto__: WebInspector.HelpScreen.prototype
+}
diff --git a/Source/devtools/front_end/ImageView.js b/Source/devtools/front_end/ImageView.js
index 6f46fe9..71199a0 100644
--- a/Source/devtools/front_end/ImageView.js
+++ b/Source/devtools/front_end/ImageView.js
@@ -38,6 +38,9 @@
}
WebInspector.ImageView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
@@ -76,6 +79,9 @@
this.resource.populateImageSource(imagePreviewElement);
+ /**
+ * @this {WebInspector.ImageView}
+ */
function onImageLoad()
{
var content = this.resource.content;
diff --git a/Source/devtools/front_end/Images/breakpoint.png b/Source/devtools/front_end/Images/breakpoint.png
new file mode 100644
index 0000000..1eaea29
--- /dev/null
+++ b/Source/devtools/front_end/Images/breakpoint.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpoint2.png b/Source/devtools/front_end/Images/breakpoint2.png
deleted file mode 100644
index 6d87745..0000000
--- a/Source/devtools/front_end/Images/breakpoint2.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpoint2_2x.png b/Source/devtools/front_end/Images/breakpoint2_2x.png
deleted file mode 100644
index f77370d..0000000
--- a/Source/devtools/front_end/Images/breakpoint2_2x.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointBorder.png b/Source/devtools/front_end/Images/breakpointBorder.png
deleted file mode 100644
index f15e02f..0000000
--- a/Source/devtools/front_end/Images/breakpointBorder.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditional.png b/Source/devtools/front_end/Images/breakpointConditional.png
new file mode 100644
index 0000000..8a22283
--- /dev/null
+++ b/Source/devtools/front_end/Images/breakpointConditional.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditional2.png b/Source/devtools/front_end/Images/breakpointConditional2.png
deleted file mode 100644
index 87bbc0e..0000000
--- a/Source/devtools/front_end/Images/breakpointConditional2.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditional2_2x.png b/Source/devtools/front_end/Images/breakpointConditional2_2x.png
deleted file mode 100644
index e2aa575..0000000
--- a/Source/devtools/front_end/Images/breakpointConditional2_2x.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditionalBorder.png b/Source/devtools/front_end/Images/breakpointConditionalBorder.png
deleted file mode 100644
index 4bd5806..0000000
--- a/Source/devtools/front_end/Images/breakpointConditionalBorder.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png b/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png
deleted file mode 100644
index 897b7a0..0000000
--- a/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointConditional_2x.png b/Source/devtools/front_end/Images/breakpointConditional_2x.png
new file mode 100644
index 0000000..851adfc
--- /dev/null
+++ b/Source/devtools/front_end/Images/breakpointConditional_2x.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpointCounterBorder.png b/Source/devtools/front_end/Images/breakpointCounterBorder.png
deleted file mode 100644
index 0b3ea14..0000000
--- a/Source/devtools/front_end/Images/breakpointCounterBorder.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/breakpoint_2x.png b/Source/devtools/front_end/Images/breakpoint_2x.png
new file mode 100644
index 0000000..a227bac
--- /dev/null
+++ b/Source/devtools/front_end/Images/breakpoint_2x.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/glossyHeader.png b/Source/devtools/front_end/Images/glossyHeader.png
deleted file mode 100644
index 6b77999..0000000
--- a/Source/devtools/front_end/Images/glossyHeader.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/glossyHeaderPressed.png b/Source/devtools/front_end/Images/glossyHeaderPressed.png
deleted file mode 100644
index 9a64b7c..0000000
--- a/Source/devtools/front_end/Images/glossyHeaderPressed.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/glossyHeaderSelected.png b/Source/devtools/front_end/Images/glossyHeaderSelected.png
deleted file mode 100644
index f7d615c..0000000
--- a/Source/devtools/front_end/Images/glossyHeaderSelected.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png b/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png
deleted file mode 100644
index 75d37fb..0000000
--- a/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/namedFlowOverflow.png b/Source/devtools/front_end/Images/namedFlowOverflow.png
deleted file mode 100644
index f966b1a..0000000
--- a/Source/devtools/front_end/Images/namedFlowOverflow.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/programCounterBorder.png b/Source/devtools/front_end/Images/programCounterBorder.png
deleted file mode 100644
index 10b0250..0000000
--- a/Source/devtools/front_end/Images/programCounterBorder.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/regionEmpty.png b/Source/devtools/front_end/Images/regionEmpty.png
deleted file mode 100644
index ed64c22..0000000
--- a/Source/devtools/front_end/Images/regionEmpty.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/regionFit.png b/Source/devtools/front_end/Images/regionFit.png
deleted file mode 100644
index 90d4d50..0000000
--- a/Source/devtools/front_end/Images/regionFit.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/regionOverset.png b/Source/devtools/front_end/Images/regionOverset.png
deleted file mode 100644
index 0738f1b..0000000
--- a/Source/devtools/front_end/Images/regionOverset.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/settingsListRemove.png b/Source/devtools/front_end/Images/settingsListRemove.png
index 315daab..1c30a87 100644
--- a/Source/devtools/front_end/Images/settingsListRemove.png
+++ b/Source/devtools/front_end/Images/settingsListRemove.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/settingsListRemove_2x.png b/Source/devtools/front_end/Images/settingsListRemove_2x.png
index 32eca10..c5ff088 100644
--- a/Source/devtools/front_end/Images/settingsListRemove_2x.png
+++ b/Source/devtools/front_end/Images/settingsListRemove_2x.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/spinner.gif b/Source/devtools/front_end/Images/spinner.gif
deleted file mode 100644
index 5f68c02..0000000
--- a/Source/devtools/front_end/Images/spinner.gif
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/src/breakpoint.svg b/Source/devtools/front_end/Images/src/breakpoint.svg
new file mode 100644
index 0000000..4b5f7070
--- /dev/null
+++ b/Source/devtools/front_end/Images/src/breakpoint.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?><svg height="11" version="1.1" width="26" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+><defs
+/><sodipodi:namedview showgrid="true"
+><inkscape:grid empspacing="5" enabled="true" id="grid2985" snapvisiblegridlinesonly="true" type="xygrid" visible="true"/></sodipodi:namedview
+><path d="m22.8 0.5 2.7 5-2.7 5-22.3 0 0-10z" fill="#698cfe" stroke="#4073f4"/></svg
+>
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/src/breakpointConditional.svg b/Source/devtools/front_end/Images/src/breakpointConditional.svg
new file mode 100644
index 0000000..97b9913
--- /dev/null
+++ b/Source/devtools/front_end/Images/src/breakpointConditional.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?><svg height="11" version="1.1" width="26" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+><defs
+/><sodipodi:namedview showgrid="true"
+><inkscape:grid empspacing="5" enabled="true" id="grid2985" snapvisiblegridlinesonly="true" type="xygrid" visible="true"/></sodipodi:namedview
+><path d="m22.8 0.5 2.7 5-2.7 5-22.3 0 0-10z" fill="#ef9d0d" stroke="#a36c01"/></svg
+>
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/src/breakpoints2.svg b/Source/devtools/front_end/Images/src/breakpoints2.svg
deleted file mode 100644
index 0ae7d3d..0000000
--- a/Source/devtools/front_end/Images/src/breakpoints2.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="breakpoints2.svg"
- inkscape:export-filename="/usr/local/google/home/lushnikov/Desktop/bp.png"
- inkscape:export-xdpi="44.838322"
- inkscape:export-ydpi="44.838322">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient4408"
- osb:paint="solid">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4410" />
- </linearGradient>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3786"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="26.649581"
- inkscape:cy="19.595518"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:snap-grids="true"
- inkscape:snap-page="false"
- inkscape:window-width="2495"
- inkscape:window-height="1576"
- inkscape:window-x="65"
- inkscape:window-y="24"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2985"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:#698cfe;fill-opacity:1;fill-rule:nonzero;stroke:#4073f4;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="m 9.52174,1029.3622 38.04348,0 5.434781,10 -5.434781,10 -44.56522,0 0,-6 0,-8 c 0,-1.662 0,-4 0,-6 2.173914,0 4.715218,0 6.52174,0 z"
- id="rect3816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccc"
- inkscape:transform-center-x="-1.0000005" />
- <path
- style="fill:#ef9d0d;fill-opacity:1;fill-rule:nonzero;stroke:#a36c01;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="m 9.52174,993.36218 38.04348,0 5.43478,10.00002 -5.43478,10 -44.56522,0 0,-6 0,-8.00002 c 0,-1.662 0,-4 0,-6 2.173912,0 4.715218,0 6.52174,0 z"
- id="rect3816-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccc" />
- </g>
-</svg>
diff --git a/Source/devtools/front_end/Images/src/optimize_png.hashes b/Source/devtools/front_end/Images/src/optimize_png.hashes
new file mode 100644
index 0000000..bee5f0f
--- /dev/null
+++ b/Source/devtools/front_end/Images/src/optimize_png.hashes
@@ -0,0 +1,6 @@
+{
+ "statusbarButtonGlyphs.svg": "d39a8a0f4e920be140d74419e17eb6c9",
+ "breakpoint.svg": "69cd92d807259c022791112809b97799",
+ "settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485",
+ "breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28"
+}
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/src/settingListRemove.svg b/Source/devtools/front_end/Images/src/settingListRemove.svg
deleted file mode 100644
index c279b00..0000000
--- a/Source/devtools/front_end/Images/src/settingListRemove.svg
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="16"
- id="svg5918"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="settingListRemove.svg"
- inkscape:export-filename="/usr/local/google/home/vsevik/chromium/src/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs5920" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.839192"
- inkscape:cx="26.852098"
- inkscape:cy="0.76985413"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1055"
- inkscape:window-height="869"
- inkscape:window-x="714"
- inkscape:window-y="142"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata5923">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g5551-9"
- transform="matrix(0.03826531,-0.03826531,0.03826531,0.03826531,-44.131211,1031.4147)">
- <g
- transform="matrix(0.93333336,0,0,0.93333336,26.666656,54.82412)"
- id="g5535-7-8">
- <rect
- style="fill:#8d8d8d;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-0-95-0"
- width="40"
- height="240"
- x="500"
- y="732.36218"
- ry="0" />
- <rect
- style="fill:#8d8d8d;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-0-4-8-6"
- width="40"
- height="240"
- x="-872.36218"
- y="400"
- ry="0"
- transform="matrix(0,-1,1,0,0,0)" />
- </g>
- <g
- transform="translate(348.49752,26.101501)"
- id="g5539-0-7">
- <rect
- style="fill:#cccccc;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-7-7"
- width="26"
- height="214"
- x="-842.26068"
- y="51.502476"
- ry="0"
- transform="matrix(0,-1,1,0,0,0)" />
- <rect
- style="fill:#cccccc;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-222-3-5"
- width="26"
- height="214"
- x="-171.50247"
- y="-936.26068"
- ry="0"
- transform="scale(-1,-1)" />
- </g>
- </g>
- <g
- id="g5709-5"
- transform="matrix(0.0382653,-0.0382653,0.0382653,0.0382653,-28.1312,1031.4147)">
- <g
- transform="translate(294.96455,4.0405884)"
- id="g5689-0">
- <rect
- style="fill:#121212;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-0-1-2"
- width="37.333336"
- height="224"
- x="198.3688"
- y="734.32159"
- ry="0" />
- <rect
- style="fill:#121212;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-0-4-7-1"
- width="37.333336"
- height="224"
- x="-864.98822"
- y="105.03545"
- ry="0"
- transform="matrix(0,-1,1,0,0,0)" />
- </g>
- <g
- id="g5685-7">
- <rect
- style="fill:#26262f;fill-opacity:0.94117647;stroke:none"
- id="rect5225-3-5-6-4-6-8"
- width="26"
- height="214"
- x="-868.36218"
- y="400"
- ry="0"
- transform="matrix(0,-1,1,0,0,0)" />
- <rect
- style="fill:#26262f;fill-opacity:0.94117647;stroke:none"
- id="rect5225-3-5-6-4-222-9-0"
- width="26"
- height="214"
- x="-520"
- y="-962.36218"
- ry="0"
- transform="scale(-1,-1)" />
- </g>
- </g>
- <g
- id="g6585">
- <rect
- transform="matrix(0.70710669,-0.70710687,0.70710687,0.70710669,0,0)"
- ry="0"
- y="760.69879"
- x="-711.20154"
- height="12.12183"
- width="2.0203052"
- id="rect5225-3-5-6-4-0-60-7"
- style="fill:#2e2e2e;fill-opacity:1;stroke:none" />
- <g
- transform="matrix(0.0382653,-0.03826531,0.03826531,0.0382653,-12.560872,1026.5897)"
- id="g5781-6">
- <rect
- style="fill:#2e2e2e;fill-opacity:1;stroke:none"
- id="rect5225-3-5-6-4-0-4-9-7"
- width="37.333336"
- height="224"
- x="-937.68872"
- y="342.56863"
- ry="0"
- transform="matrix(0,-1,1,0,0,0)" />
- </g>
- <rect
- transform="matrix(-0.70710687,-0.70710669,0.70710669,-0.70710687,0,0)"
- ry="0"
- y="-716.25226"
- x="-767.73376"
- height="11.580677"
- width="1.4069982"
- id="rect5225-3-5-6-4-9-6"
- style="fill:#787878;fill-opacity:1;stroke:none" />
- <rect
- transform="matrix(-0.70710669,0.70710687,-0.70710687,-0.70710669,0,0)"
- ry="0"
- y="-772.82062"
- x="709.75842"
- height="11.580677"
- width="1.4069982"
- id="rect5225-3-5-6-4-222-8-6"
- style="fill:#787878;fill-opacity:1;stroke:none" />
- </g>
- </g>
-</svg>
diff --git a/Source/devtools/front_end/Images/src/settingsListRemove.svg b/Source/devtools/front_end/Images/src/settingsListRemove.svg
new file mode 100644
index 0000000..66db651
--- /dev/null
+++ b/Source/devtools/front_end/Images/src/settingsListRemove.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?><svg height="16" version="1.1" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+><defs
+/><sodipodi:namedview showgrid="false"
+/><path d="M3 4.43 4.43 3 13 11.57 11.57 13z" fill="#8d8d8d"
+/><path d="M4.43 13 3 11.57 11.57 3 13 4.43z" fill="#8d8d8d"
+/><path d="M4.4 12.97 3.41 11.98 11.6 3.79 12.59 4.79z" fill="#ccc"
+/><path d="M12.59 11.98 11.6 12.97 3.41 4.79 4.4 3.79z" fill="#ccc"
+/><path d="m19 4.43 1.43-1.43 8.57 8.57-1.43 1.43z" fill="#121212"
+/><path d="m20.43 13-1.43-1.43 8.57-8.57 1.43 1.43z" fill="#121212"
+/><path d="m20.4 12.97-0.99-0.99 8.19-8.19 0.99 0.99z" fill="#26262f" fill-opacity="0.94"
+/><path d="m28.59 11.98-0.99 0.99-8.19-8.19 0.99-0.99z" fill="#26262f" fill-opacity="0.94"
+/><path d="m35 4.43 1.43-1.43 8.57 8.57-1.43 1.43z" fill="#2e2e2e"
+/><path d="m36.43 13-1.43-1.43 8.57-8.57 1.43 1.43z" fill="#2e2e2e"
+/><path d="m36.4 12.97-0.99-0.99 8.19-8.19 0.99 0.99z" fill="#787878"
+/><path d="m44.59 11.98-0.99 0.99-8.19-8.19 0.99-0.99z" fill="#787878"/></svg
+>
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/src/statusbarButtonGlyphs.svg b/Source/devtools/front_end/Images/src/statusbarButtonGlyphs.svg
index 8f123ac..9b6648e 100644
--- a/Source/devtools/front_end/Images/src/statusbarButtonGlyphs.svg
+++ b/Source/devtools/front_end/Images/src/statusbarButtonGlyphs.svg
@@ -1,1829 +1,203 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="120"
- id="svg2"
- version="1.1"
- width="320"
- xml:space="preserve"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="statusbarButtonGlyphs.svg"
- inkscape:export-filename="../statusbarButtonGlyphs.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"><metadata
- id="metadata3317"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="2"
- gridtolerance="2"
- guidetolerance="2"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1518"
- inkscape:window-height="876"
- id="namedview3315"
- showgrid="true"
- width="640px"
- inkscape:zoom="22.627417"
- inkscape:cx="222.67601"
- inkscape:cy="17.704972"
- inkscape:window-x="109"
- inkscape:window-y="93"
- inkscape:window-maximized="0"
- inkscape:current-layer="info-message"><inkscape:grid
- empspacing="2"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true"
- spacingx="32px"
- spacingy="24px"
- type="xygrid"
- id="grid3327"
- dotted="false" /></sodipodi:namedview>
- <defs
- id="defs6"><linearGradient
- id="linearGradient4153"><stop
- style="stop-color:#606eda;stop-opacity:1;"
- offset="0"
- id="stop4155" /><stop
- style="stop-color:#021db2;stop-opacity:1;"
- offset="1"
- id="stop4157" /></linearGradient><linearGradient
- inkscape:collect="always"
- id="linearGradient5619"><stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5621" /><stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop5623" /></linearGradient><linearGradient
- id="linearGradient5337"><stop
- style="stop-color:#e59290;stop-opacity:1;"
- offset="0"
- id="stop5339" /><stop
- style="stop-color:#e99890;stop-opacity:1;"
- offset="1"
- id="stop5341" /></linearGradient><linearGradient
- id="linearGradient5329"><stop
- id="stop5331"
- offset="0"
- style="stop-color:#c0544f;stop-opacity:1;" /><stop
- id="stop5333"
- offset="1"
- style="stop-color:#d08481;stop-opacity:1;" /></linearGradient><linearGradient
- id="linearGradient5667"><stop
- style="stop-color:#ffa801;stop-opacity:0;"
- offset="0"
- id="stop5669" /><stop
- style="stop-color:#f0fb3d;stop-opacity:1;"
- offset="1"
- id="stop5671" /></linearGradient><linearGradient
- id="linearGradient5655"><stop
- id="stop5657"
- offset="0"
- style="stop-color:#ffbd00;stop-opacity:0.64957267;" /><stop
- id="stop5659"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0.90598291;" /></linearGradient><linearGradient
- id="linearGradient5647"><stop
- style="stop-color:#a16a00;stop-opacity:1;"
- offset="0"
- id="stop5649" /><stop
- style="stop-color:#c68200;stop-opacity:1;"
- offset="1"
- id="stop5651" /></linearGradient><linearGradient
- id="linearGradient5505"><stop
- style="stop-color:#00d600;stop-opacity:0;"
- offset="0"
- id="stop5507" /><stop
- style="stop-color:#d8fc7b;stop-opacity:0.81196582;"
- offset="1"
- id="stop5509" /></linearGradient><linearGradient
- id="linearGradient5497"><stop
- id="stop5499"
- offset="0"
- style="stop-color:#00ba00;stop-opacity:1;" /><stop
- id="stop5501"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0.90598291;" /></linearGradient><linearGradient
- id="linearGradient5489"><stop
- style="stop-color:#00a104;stop-opacity:1;"
- offset="0"
- id="stop5491" /><stop
- style="stop-color:#00c605;stop-opacity:1;"
- offset="1"
- id="stop5493" /></linearGradient><linearGradient
- id="linearGradient5441"><stop
- id="stop5443"
- offset="0"
- style="stop-color:#ff0000;stop-opacity:0;" /><stop
- id="stop5445"
- offset="1"
- style="stop-color:#f0cb68;stop-opacity:0.70940173;" /></linearGradient><linearGradient
- id="linearGradient5429"><stop
- style="stop-color:#e60000;stop-opacity:0.64957267;"
- offset="0"
- id="stop5431" /><stop
- style="stop-color:#ffffff;stop-opacity:0.90598291;"
- offset="1"
- id="stop5433" /></linearGradient><linearGradient
- id="linearGradient5421"><stop
- style="stop-color:#ff0000;stop-opacity:1;"
- offset="0"
- id="stop5423" /><stop
- style="stop-color:#9f0000;stop-opacity:1;"
- offset="1"
- id="stop5425" /></linearGradient><linearGradient
- id="linearGradient5409"><stop
- id="stop5411"
- offset="0"
- style="stop-color:#a10000;stop-opacity:1;" /><stop
- id="stop5413"
- offset="1"
- style="stop-color:#c60000;stop-opacity:1;" /></linearGradient><linearGradient
- id="linearGradient5401"><stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5403" /><stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop5405" /></linearGradient><linearGradient
- id="linearGradient5093"><stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5095" /><stop
- style="stop-color:#5c5c5c;stop-opacity:1;"
- offset="1"
- id="stop5097" /></linearGradient><linearGradient
- id="linearGradient5083"><stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop5085" /><stop
- style="stop-color:#929292;stop-opacity:1;"
- offset="1"
- id="stop5087" /></linearGradient><linearGradient
- id="linearGradient4925"><stop
- style="stop-color:#ac1f10;stop-opacity:1;"
- offset="0"
- id="stop4927" /><stop
- style="stop-color:#f48f84;stop-opacity:1;"
- offset="1"
- id="stop4929" /></linearGradient><linearGradient
- id="linearGradient4827"><stop
- id="stop4829"
- offset="0"
- style="stop-color:#d7687d;stop-opacity:1;" /><stop
- id="stop4831"
- offset="1"
- style="stop-color:#b21402;stop-opacity:1;" /></linearGradient><linearGradient
- id="linearGradient4643"><stop
- style="stop-color:#d76f7d;stop-opacity:1;"
- offset="0"
- id="stop4645" /><stop
- style="stop-color:#b21402;stop-opacity:1;"
- offset="1"
- id="stop4647" /></linearGradient>
- <mask
- id="mask16" />
- <clipPath
- id="clipPath26">
- <path
- d="M 0,560 960,560 960,0 0,0 0,560 z"
- id="path28"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath34">
- <path
- d="m 160,296 16.125,0 0,-14 -16.125,0 0,14 z"
- id="path36"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath50">
- <path
- d="m 358,303 22,0 0,-4 -22,0 0,4 z"
- id="path52"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath64">
- <path
- d="m 484.867,399.559 22.705,0 0,-19.118 -22.705,0 0,19.118 z"
- id="path66"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath96">
- <path
- d="M 0,560 960,560 960,0 0,0 0,560 z"
- id="path98"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath200">
- <path
- d="m 662,341 c 0,-9.941 8.059,-18 18,-18 l 0,0 c 9.942,0 18,8.059 18,18 l 0,0 c 0,9.941 -8.058,18 -18,18 l 0,0 c -9.941,0 -18,-8.059 -18,-18"
- id="path202"
- inkscape:connector-curvature="0" />
- </clipPath>
- <radialGradient
- cx="0"
- cy="0"
- fx="0"
- fy="0"
- gradientTransform="matrix(17.999599,0,0,-17.999599,680,340.99951)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient208"
- r="1"
- spreadMethod="pad">
- <stop
- id="stop210"
- offset="0"
- style="stop-color:#000000;stop-opacity:1" />
- <stop
- id="stop212"
- offset="1"
- style="stop-color:#000000;stop-opacity:0" />
- </radialGradient>
- <clipPath
- id="clipPath220">
- <path
- d="M 0,560 960,560 960,0 0,0 0,560 z"
- id="path222"
- inkscape:connector-curvature="0" />
- </clipPath>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <radialGradient
- inkscape:collect="always"
- xlink:href="#radialGradient208"
- id="radialGradient3862"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(17.999599,0,0,-17.999599,680,340.99951)"
- spreadMethod="pad"
- cx="0"
- cy="0"
- fx="0"
- fy="0"
- r="1" /><radialGradient
- inkscape:collect="always"
- xlink:href="#radialGradient208"
- id="radialGradient6632"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(17.999599,0,0,-17.999599,680,340.99951)"
- spreadMethod="pad"
- cx="0"
- cy="0"
- fx="0"
- fy="0"
- r="1" /><radialGradient
- inkscape:collect="always"
- xlink:href="#radialGradient208"
- id="radialGradient6811"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(17.999599,0,0,-17.999599,680,340.99951)"
- spreadMethod="pad"
- cx="0"
- cy="0"
- fx="0"
- fy="0"
- r="1" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4671"
- x1="0"
- y1="0"
- x2="24"
- y2="0"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4759"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4769"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4785"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4807"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient4825"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4833"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient4857"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" />
-
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient4890"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" />
-
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4643"
- id="linearGradient4915"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,-1,24,0)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4925"
- id="linearGradient4931"
- x1="0"
- y1="0"
- x2="24"
- y2="0"
- gradientUnits="userSpaceOnUse" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient4965"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-0.58333333,-0.58333333,0,120,111)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5083"
- id="linearGradient5089"
- x1="113"
- y1="104"
- x2="127"
- y2="104"
- gradientUnits="userSpaceOnUse" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5093"
- id="linearGradient5099"
- x1="113"
- y1="104"
- x2="127"
- y2="104"
- gradientUnits="userSpaceOnUse" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient5103"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-0.58333333,-0.58333333,0,120,111)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4827"
- id="linearGradient5281"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-0.58333333,-0.58333333,0,120,111)"
- x1="0"
- y1="0"
- x2="24"
- y2="0" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5409"
- id="linearGradient5737"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5489"
- id="linearGradient5743"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5497"
- id="linearGradient5753"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5505"
- id="linearGradient5755"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5429"
- id="linearGradient5767"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5441"
- id="linearGradient5769"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5655"
- id="linearGradient5835"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5667"
- id="linearGradient5837"
- gradientUnits="userSpaceOnUse"
- x1="227.875"
- y1="103.15625"
- x2="235.125"
- y2="103.15625" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5329"
- id="linearGradient5327"
- x1="113"
- y1="104"
- x2="127"
- y2="104"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-1,1,0,16,224)" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5329"
- id="linearGradient5335"
- gradientUnits="userSpaceOnUse"
- x1="113"
- y1="104"
- x2="127"
- y2="104"
- gradientTransform="matrix(0,-1,1,0,16,224)" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5337"
- id="linearGradient5343"
- x1="96.5"
- y1="103"
- x2="109.5"
- y2="103"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,206,0)" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5329"
- id="linearGradient5354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-1,1,0,16,224)"
- x1="113"
- y1="104"
- x2="127"
- y2="104" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5329"
- id="linearGradient5356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-1,1,0,16,224)"
- x1="113"
- y1="104"
- x2="127"
- y2="104" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5337"
- id="linearGradient5358"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,206,0)"
- x1="96.5"
- y1="103"
- x2="109.5"
- y2="103" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5337"
- id="linearGradient5365"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,206,0)"
- x1="96.5"
- y1="103"
- x2="109.5"
- y2="103" /><linearGradient
- id="linearGradient4827-3"><stop
- id="stop4829-3"
- offset="0"
- style="stop-color:#d7687d;stop-opacity:1;" /><stop
- id="stop4831-1"
- offset="1"
- style="stop-color:#b21402;stop-opacity:1;" /></linearGradient><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5619"
- id="linearGradient5627"
- x1="220.1884"
- y1="100.38527"
- x2="223.78215"
- y2="100.38527"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-11.397753,-1.4419419)" /><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4153"
- id="linearGradient5635"
- x1="113"
- y1="104"
- x2="127"
- y2="104"
- gradientUnits="userSpaceOnUse" /></defs>
-
-<g
- inkscape:groupmode="layer"
- id="layer1"
- inkscape:label="grid"
- style="display:inline"
- transform="translate(0,-580)" /><g
- id="g12"
- transform="matrix(0.50028185,0,0,-0.5104134,-36.680797,258.16231)">
- <g
- transform="matrix(639.91985,0,0,143.98197,72.039148,269.00968)"
- id="g14" />
- </g><g
- id="g30"
- transform="matrix(0.50028185,0,0,-0.5104134,-36.013832,209.91231)">
- <g
- id="g32" />
- <g
- id="g38">
- <g
- style="opacity:0.5"
- id="g40"
- clip-path="url(#clipPath34)">
- <g
- transform="translate(160,296)"
- id="g42">
- <path
- inkscape:connector-curvature="0"
- style="fill:#424242;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path44"
- d="m 0,0 4,-5 0,-9 8,0 0,9 4.125,5 L 0,0 z" />
- </g>
- </g>
- </g>
- </g><g
- id="g60"
- transform="matrix(0.50650085,0,0,-0.52309465,-41.085547,214.0068)">
- <g
- id="g62" />
- <g
- id="g68">
- <g
- style="opacity:0.39999402"
- id="g70"
- clip-path="url(#clipPath64)">
- <g
- transform="translate(491.5488,386.3623)"
- id="g72">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path74"
- d="M 0,0 -3.618,4.311 -6.682,1.739 -0.254,-5.921 2.58,-3.076 16.023,10.367 13.195,13.196 0,0 z" />
- </g>
- </g>
- </g>
- </g><path
- d="M 57,12 53.58829,8 39,8 l 0,8 14.58829,0"
- id="path78"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="M 25,36 21.362197,32 19.570257,32 14,40 21.362197,40 25,36 z"
- id="path82"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="M 7,32 7,40 9.0527005,40 14,32 7,32 z"
- id="path86"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="M 9.668154,44.54737 8.07369,43.22813 18.831348,27.45264 20.42631,28.77187 9.668154,44.54737 z"
- id="path90"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><g
- transform="matrix(0.5063291,0,0,-0.5063291,16,15.10127)"
- id="g100">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path102"
- d="m 0,0 c -3.452,0 -6.25,2.798 -6.25,6.25 0,3.452 2.798,6.25 6.25,6.25 L 0,16 c -5.454,0 -9.875,-4.421 -9.875,-9.875 0,-5.454 4.421,-9.875 9.875,-9.875 5.454,0 9.875,4.421 9.875,9.875 l -3.631,0 C 6.176,2.731 3.41,0 0,0" />
- </g><g
- transform="matrix(0.49315069,0,0,-0.5303633,16,5)"
- id="g104">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path106"
- d="M 0,0 9.125,-5.657 0,-11.313" />
- </g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path108"
- d="m 53,37 -10,0 0,-5 10,0 0,5 z m -12,5 14,0 0,-12 -14,0 0,12 z" /><g
- transform="matrix(0.5,0,0,-0.5,10,57)"
- id="g110">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path112"
- d="m 0,0 -4,0 0,-14 0,-4 4,0 18,0 0,4 -18,0 0,14 z" />
- </g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path114"
- d="m 13,56 7,0 0,5 -7,0 0,-5 z m 7,-2 -7,0 -2,0 0,2 0,5 0,2 2,0 7,0 2,0 0,-2 0,-5 0,-2 -2,0 z" /><g
- id="g5185"><path
- d="m 86,33 -8,0 0,-2 8,0 0,2 z"
- id="path116"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><g
- id="g118"
- transform="matrix(0.49494449,0,0,-0.50824235,71.5,31.43731)">
- <path
- d="M 0,0 8.485,-8.485 0,-16.971 l 2.829,-2.828 8.485,8.485 2.829,2.829 -2.829,2.828 L 2.829,2.828 0,0 z"
- id="path120"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><path
- d="m 86,37 -6,0 0,-2 6,0 0,2 z"
- id="path122"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 86,41 -8,0 0,-2 8,0 0,2 z"
- id="path124"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><g
- transform="matrix(0.5,0,0,-0.5,80.4375,16.9375)"
- id="g126">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path128"
- d="m 0,0 c -4.97,0 -9,4.03 -9,9 0,1.76 0.513,3.397 1.387,4.785 L 4.785,1.387 C 3.397,0.513 1.76,0 0,0 M 9,9 C 9,7.24 8.487,5.603 7.613,4.215 L -4.785,16.613 C -3.397,17.487 -1.76,18 0,18 4.97,18 9,13.97 9,9 M 0.125,21.875 c -7.18,0 -13,-5.82 -13,-13 0,-7.18 5.82,-13 13,-13 7.18,0 13,5.82 13,13 0,7.18 -5.82,13 -13,13" />
- </g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path130"
- d="m 117,65 -10,0 0,-10 10,0 0,10 z" /><g
- transform="matrix(0.5,0,0,-0.5,116,37)"
- id="g132">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path134"
- d="m 0,0 0,-8 -16,0 0,6 -2,0 0,-6 0,-2 2,0 18,0 0,2 0,8 -2,0 z" />
- </g><g
- transform="matrix(0.50647405,0,0,-0.52309465,111.88426,35.90276)"
- id="g136">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path138"
- d="m 0,0 -3.618,4.311 -3.064,-2.572 6.428,-7.66 2.835,2.845 13.443,13.443 -2.828,2.829 L 0,0 z" />
- </g><g
- transform="matrix(0.47140904,0,0,-0.47140904,149,8.33314)"
- id="g140">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path142"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g><g
- transform="matrix(0.5,0,0,-0.50757125,46.5,65.23466)"
- id="g144">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path146"
- d="m 0,0 c 0.639,-0.265 1.688,-0.478 2.933,-0.478 1.183,0 2.288,0.192 3.067,0.519 l 0,7.744 8,9 0,0.379 -22,0 0,-0.43 8,-9 L 0,0 z m 2.933,-3.478 c -2.31,0 -4.336,0.565 -5.42,1.512 L -3,-1.518 l 0,8.111 -8,9 0,4.571 28,0 0,-4.622 -8,-9 L 9,-1.601 8.381,-2.05 C 7.132,-2.958 5.146,-3.478 2.933,-3.478" />
- </g><g
- transform="matrix(0.5263158,0,0,-0.5058169,86,60)"
- id="g148">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path150"
- d="m 0,0 -19,9.885 0,-19.77" />
- </g><g
- id="g4283"
- transform="matrix(0.5,0,0,0.5,0,-1)"><g
- transform="matrix(1.0000001,0,0,-1,-74.000026,414.99999)"
- id="g46">
- <g
- id="g48" />
- <g
- id="g54">
- <g
- clip-path="url(#clipPath50)"
- id="g56"
- style="opacity:0.19999701">
- <path
- d="m 380,299 -22,0 0,4 22,0 0,-4 z"
- id="path58"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g><g
- id="g152"
- transform="matrix(1.0000001,0,0,-1,270,110)">
- <path
- d="m 0,0 0,2 -2,0 -2,0 0,-2 0,-24 0,-2 2,0 2,0 0,2 -2,0 0,24 2,0 z"
- id="path154"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><path
- d="M 283.99999,116 272,116 l 0,-4.00001 11.99999,0 0,4.00001 z"
- id="path156"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="M 289.99999,122 278,122 l 0,-4.00001 11.99999,0 0,4.00001 z"
- id="path158"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 300,127.99999 -12.00001,0 0,-4 12.00001,0 0,4 z"
- id="path160"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 303.99999,133.99999 -11.99999,0 0,-4 11.99999,0 0,4 z"
- id="path162"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><g
- id="g4275"
- transform="scale(0.5,0.5)"><path
- d="M 339.99999,134 336,134 l 0,-18 3.99999,0 0,18 z"
- id="path164"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 346,134 -4,0 0,-22 4,0 0,22 z"
- id="path166"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 352,134 -4.00001,0 0,-26 4.00001,0 0,26 z"
- id="path168"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 358,134 -4,0 0,-8 4,0 0,8 z"
- id="path170"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="M 363.99999,134 360,134 l 0,-18 3.99999,0 0,18 z"
- id="path172"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 370,134 -4,0 0,-22 4,0 0,22 z"
- id="path174"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><g
- id="g4266"
- transform="scale(0.5,0.5)"><path
- d="m 416,114 -20,0 0,-4 20,0 0,4 z"
- id="path176"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 434,114 -10,0 0,-4 10,0 0,4 z"
- id="path178"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 400,122 -4,0 0,-4.00001 4,0 0,4.00001 z"
- id="path180"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 426,122 -20.00001,0 0,-4.00001 20.00001,0 0,4.00001 z"
- id="path182"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 434,122 -4.00001,0 0,-4.00001 4.00001,0 0,4.00001 z"
- id="path184"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 410,130 -14,0 0,-4 14,0 0,4 z"
- id="path186"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 434,130 -16,0 0,-4 16,0 0,4 z"
- id="path188"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path190"
- d="m 274,64 -7,0 0,-8 7,0 0,8 z m -9,2 14,0 0,-12 -14,0 0,12 z" /><g
- transform="matrix(0.5,0,0,-0.5,298,12)"
- id="g192">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path194"
- d="m 0,0 c 0,-6.627 5.372,-12 12,-12 6.628,0 12,5.373 12,12 C 24,6.627 18.628,12 12,12 5.372,12 0,6.627 0,0" />
- </g><g
- clip-path="url(#clipPath200)"
- id="g198"
- transform="matrix(0.5,0,0,-0.5,-36,206.5)"
- style="fill-rule:nonzero">
- <g
- id="g204"
- style="fill-rule:nonzero">
- <g
- id="g206"
- style="fill-rule:nonzero">
- <path
- d="m 662,341 c 0,-9.941 8.059,-18 18,-18 l 0,0 c 9.942,0 18,8.059 18,18 l 0,0 c 0,9.941 -8.058,18 -18,18 l 0,0 c -9.941,0 -18,-8.059 -18,-18"
- id="path214"
- style="fill:url(#radialGradient6811);fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g><g
- transform="matrix(0.5,0,0,-0.5,298,36)"
- id="g224">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path226"
- d="m 0,0 c 0,-6.627 5.372,-12 12,-12 6.628,0 12,5.373 12,12 C 24,6.627 18.628,12 12,12 5.372,12 0,6.627 0,0" />
- </g><g
- transform="matrix(0.50695545,0,0,-0.50695545,239.06259,38.10433)"
- id="g228">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path230"
- d="m 0,0 c -3.313,0 -6,2.686 -6,6 0,3.314 2.687,6 6,6 C 3.313,12 6,9.314 6,6 6,2.686 3.313,0 0,0 M 15.657,-6.829 7.613,1.215 C 8.487,2.603 9,4.24 9,6 c 0,4.971 -4.029,9 -9,9 -4.971,0 -9,-4.029 -9,-9 0,-4.971 4.029,-9 9,-9 1.761,0 3.397,0.513 4.785,1.387 l 8.043,-8.044 2.829,2.828 z" />
- </g><g
- transform="matrix(0.48874711,0,0,-0.49652038,233.7329,63.76329)"
- id="g232">
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- id="path234"
- d="M 0,0 10.75,6.5 21.625,2 31.75,10.125" />
- </g><g
- transform="matrix(0.50028185,0,0,-0.5,231.00056,67)"
- id="g236">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path238"
- d="m 0,0 0,26 -2,0 0,-28 1,0 1,0 40,0 0,2 -40,0 z" />
- </g><g
- id="g4258"
- transform="scale(0.5,0.5)"><path
- d="m 474,22 -8,0 0,-8 8,0 0,8 z"
- id="path240"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 494,18 -18.00001,0 0,-4 18.00001,0 0,4 z"
- id="path242"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 494,22 -18.00001,0 0,-2 18.00001,0 0,2 z"
- id="path244"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 494,30 -18.00001,0 0,-4.000001 18.00001,0 L 494,30 z"
- id="path246"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 474,34 -8,0 0,-8.000001 8,0 L 474,34 z"
- id="path248"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- d="m 494,34 -18.00001,0 0,-2 18.00001,0 0,2 z"
- id="path250"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><g
- transform="matrix(0.53333335,0,0,-0.53333335,176,38.13333)"
- id="g252">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path254"
- d="M 0,0 C -2.209,0 -4,1.791 -4,4 -4,6.209 -2.209,8 0,8 2.209,8 4,6.209 4,4 4,1.791 2.209,0 0,0 M 15,7 9.5,8 12.728,12.485 8.485,16.728 3.875,13.375 3,19 -3,19 -3.75,13.125 -8.485,16.728 -12.728,12.485 -9,7.625 -15,7 l 0,-6 6.25,-0.625 -3.978,-4.86 4.243,-4.243 4.735,3.978 0.75,-6.25 6,0 0.75,6 4.735,-3.728 4.243,4.243 L 9.375,0.125 15,1 15,7 z" />
- </g><g
- transform="matrix(0.49058085,0,0,-0.5028495,174.9687,18.62521)"
- id="g256">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path258"
- d="M 0,0 C 0,1.788 0.87,2.682 2.61,2.682 3.462,2.682 4.114,2.448 4.563,1.979 5.013,1.513 5.238,0.853 5.238,0 5.238,-0.84 5.009,-1.506 4.555,-1.998 4.099,-2.488 3.45,-2.734 2.61,-2.734 1.77,-2.734 1.124,-2.495 0.674,-2.015 0.225,-1.536 0,-0.863 0,0 m 0.728,5.665 0,1.135 c 0,1.303 0.237,2.386 0.71,3.25 0.474,0.865 1.303,1.758 2.486,2.681 1.409,1.113 2.317,1.977 2.726,2.593 0.408,0.615 0.611,1.349 0.611,2.202 0,0.993 -0.331,1.757 -0.994,2.289 -0.662,0.535 -1.615,0.8 -2.858,0.8 -1.125,0 -2.166,-0.16 -3.125,-0.48 -0.958,-0.32 -1.894,-0.704 -2.806,-1.154 l -1.491,3.125 c 2.403,1.338 4.978,2.007 7.724,2.007 2.32,0 4.16,-0.569 5.521,-1.705 1.362,-1.136 2.043,-2.704 2.043,-4.705 0,-0.888 -0.13,-1.678 -0.39,-2.37 C 10.624,14.64 10.229,13.979 9.703,13.353 9.177,12.725 8.268,11.909 6.978,10.902 5.876,10.038 5.14,9.322 4.767,8.754 4.394,8.186 4.207,7.422 4.207,6.464 l 0,-0.799 -3.479,0 z" />
- </g><g
- transform="matrix(0.4940336,0,0,-0.48455482,210.33624,38.32707)"
- id="g260">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path262"
- d="m 0,0 c 0,-1.637 0.163,-2.862 0.487,-3.674 0.324,-0.813 0.848,-1.22 1.574,-1.22 1.438,0 2.157,1.631 2.157,4.894 0,3.218 -0.719,4.828 -2.157,4.828 C 1.335,4.828 0.811,4.432 0.487,3.642 0.163,2.851 0,1.637 0,0 m 7.416,0 c 0,-2.526 -0.457,-4.421 -1.369,-5.685 -0.911,-1.263 -2.24,-1.895 -3.986,-1.895 -1.67,0 -2.966,0.651 -3.889,1.953 -0.923,1.301 -1.385,3.177 -1.385,5.627 0,5.02 1.758,7.53 5.274,7.53 1.691,0 3.006,-0.648 3.946,-1.945 C 6.946,4.29 7.416,2.427 7.416,0 M 2.521,16.839 -10.84,-7.25 l -3.198,0 13.364,24.089 3.195,0 z M -15.686,9.622 c 0,-1.637 0.16,-2.855 0.478,-3.658 0.319,-0.801 0.841,-1.202 1.566,-1.202 1.451,0 2.174,1.619 2.174,4.86 0,3.241 -0.723,4.861 -2.174,4.861 -0.725,0 -1.247,-0.4 -1.566,-1.203 -0.318,-0.801 -0.478,-2.021 -0.478,-3.658 m 7.416,0.033 c 0,-2.526 -0.454,-4.424 -1.36,-5.692 -0.906,-1.27 -2.243,-1.904 -4.012,-1.904 -1.67,0 -2.964,0.656 -3.881,1.969 -0.917,1.313 -1.375,3.189 -1.375,5.627 0,5.02 1.752,7.53 5.256,7.53 1.725,0 3.05,-0.651 3.979,-1.952 0.928,-1.302 1.393,-3.161 1.393,-5.578" />
- </g><g
- transform="matrix(0.59916115,0,0,-0.5,268.00899,35.993)"
- id="g264">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path266"
- d="m 0,0 c 0.7,-0.458 1.185,-0.989 1.452,-1.596 0.268,-0.607 0.4,-1.653 0.4,-3.136 l 0,-2.039 c 0,-0.937 0.077,-1.526 0.231,-1.768 0.153,-0.24 0.443,-0.404 0.871,-0.489 0.104,-0.027 0.256,-0.055 0.461,-0.082 1.051,-0.154 1.577,-0.659 1.577,-1.514 0,-0.418 -0.153,-0.753 -0.459,-1.008 -0.305,-0.255 -0.713,-0.382 -1.221,-0.382 -0.65,0 -1.277,0.106 -1.883,0.317 -0.607,0.212 -1.109,0.502 -1.507,0.871 -0.435,0.395 -0.743,0.907 -0.923,1.533 -0.182,0.626 -0.271,1.698 -0.271,3.218 l 0,1.644 c 0,1.667 -0.768,2.625 -2.306,2.875 -0.066,0.019 -0.111,0.028 -0.139,0.028 -0.444,0.074 -0.772,0.234 -0.986,0.477 -0.214,0.242 -0.319,0.593 -0.319,1.051 0,0.402 0.089,0.719 0.271,0.953 0.18,0.234 0.47,0.402 0.868,0.505 0.176,0.056 0.43,0.116 0.764,0.18 1.23,0.23 1.847,1.144 1.847,2.74 l 0,1.647 c 0,1.413 0.068,2.405 0.209,2.973 0.137,0.569 0.374,1.065 0.708,1.49 0.388,0.472 0.909,0.84 1.561,1.103 0.654,0.263 1.373,0.395 2.16,0.395 0.49,0 0.885,-0.128 1.182,-0.382 0.295,-0.255 0.444,-0.59 0.444,-1.007 0,-0.87 -0.563,-1.394 -1.688,-1.57 C 3.2,9.019 3.127,9.009 3.08,9 2.615,8.926 2.295,8.757 2.118,8.495 1.941,8.231 1.852,7.634 1.852,6.703 l 0,-2.035 C 1.852,3.279 1.714,2.26 1.437,1.611 1.161,0.963 0.682,0.426 0,0" />
- </g><g
- transform="matrix(0.59904155,0,0,-0.5,276.98263,35.986)"
- id="g268">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path270"
- d="m 0,0 c -0.674,0.425 -1.147,0.961 -1.425,1.608 -0.276,0.647 -0.414,1.664 -0.414,3.051 l 0,2.018 0,0.88 c 0,0.43 -0.112,0.757 -0.336,0.982 -0.222,0.224 -0.595,0.374 -1.115,0.446 -0.679,0.094 -1.13,0.253 -1.353,0.477 -0.224,0.225 -0.336,0.566 -0.336,1.023 0,0.468 0.142,0.832 0.424,1.094 0.283,0.262 0.683,0.393 1.202,0.393 0.685,0 1.325,-0.102 1.916,-0.306 0.593,-0.204 1.088,-0.49 1.487,-0.86 C 0.504,10.39 0.822,9.874 1.008,9.259 1.193,8.644 1.285,7.559 1.285,6.005 l 0,-1.635 C 1.285,2.777 1.921,1.856 3.188,1.609 3.494,1.563 3.729,1.517 3.896,1.472 4.285,1.368 4.572,1.196 4.759,0.956 4.943,0.715 5.037,0.396 5.037,0 5.037,-0.415 4.938,-0.748 4.744,-0.999 4.55,-1.248 4.259,-1.42 3.869,-1.515 3.721,-1.542 3.512,-1.579 3.244,-1.626 1.938,-1.875 1.285,-2.815 1.285,-4.445 l 0,-1.611 c 0,-1.463 -0.068,-2.48 -0.207,-3.048 -0.14,-0.57 -0.375,-1.054 -0.709,-1.452 -0.362,-0.435 -0.882,-0.789 -1.562,-1.063 -0.681,-0.273 -1.392,-0.409 -2.133,-0.409 -0.518,0 -0.923,0.131 -1.215,0.396 -0.292,0.263 -0.438,0.631 -0.438,1.104 0,0.435 0.11,0.763 0.329,0.986 0.218,0.222 0.671,0.389 1.36,0.5 0.566,0.083 0.95,0.236 1.15,0.458 0.201,0.223 0.301,0.579 0.301,1.069 l 0,0.737 0,2.055 c 0,1.481 0.133,2.525 0.401,3.13 C -1.171,-0.988 -0.691,-0.457 0,0" />
- </g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path272"
- d="m 275.23077,14.69231 -2.15384,0 0,-5.38462 2.15384,0 0,5.38462 z m -4.3077,0 -2.15384,0 0,-5.38462 2.15384,0 0,5.38462 z M 274.92277,5 269.07722,5 265,9.03792 265,14.88238 269.07722,19 274.92277,19 279,14.88238 279,9.03792 274.92277,5 z" /><g
- transform="matrix(0.5000139,0,0,-0.5,112.03125,15.5)"
- id="g274">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path276"
- d="m 0,0 c -3.866,0 -7,3.134 -7,7 0,3.866 3.134,7 7,7 C 3.866,14 7,10.866 7,7 7,3.134 3.866,0 0,0 m -0.062,17 c -4.875,0 -9.251,-1.667 -18,-10 8.624,-8.333 13.125,-10 18,-10 4.874,0 9.25,1.667 17.999,10 C 9.313,15.333 4.812,17 -0.062,17" />
- </g><g
- transform="matrix(0.5,0,0,-0.5,110.5,12)"
- id="g278">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path280"
- d="M 0,0 C 0,-1.657 1.343,-3 3,-3 4.657,-3 6,-1.657 6,0 6,1.657 4.657,3 3,3 1.343,3 0,1.657 0,0" />
- </g><g
- transform="matrix(0.5,0,0,-0.5,139.5,33)"
- id="g282">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path284"
- d="M 0,0 18,0 15,-20 3,-20" />
- </g><g
- transform="matrix(0.5,0,0,-0.5,147.5,30)"
- id="g286">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path288"
- d="m 0,0 -4,0 0,2 -6,0 0,-2 -4,0 c -1.104,0 -2,-0.964 -2,-2 l 0,-2 2,0 14,0 2,0 0,2 C 2,-0.964 1.104,0 0,0" />
- </g><g
- transform="matrix(0.5,0,0,-0.5,317,69)"
- id="g290">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path292"
- d="M 0,0 0,10 -10,0 0,0 z" />
- </g><g
- transform="matrix(0.5,0,0,-0.5,212,13)"
- id="g294">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path296"
- d="m 0,0 0,-8 -16,0 0,6 -2,0 0,-6 0,-2 2.428,0 L 2,-10 2,-8 2,0 0,0 z" />
- </g><g
- id="g3120"
- transform="matrix(0.5,0,0,0.5,2,0)"><g
- transform="matrix(0.84210526,0,0,-1.0116338,42,168)"
- id="g3114">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3116"
- d="m 0,0 -19,9.885 0,-19.77" />
- </g><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3118"
- d="m 22,178 -6,0 0,-20 6,0 0,20 z" /></g><g
- id="g4303"
- transform="matrix(0.5,0,0,0.5,1,-1)"><path
- d="m 92,178 -6,0 0,-16 6,0 0,16 z"
- id="path3127"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3129"
- d="m 104,178 -6,0 0,-16 6,0 0,16 z" /></g><g
- id="g4323"
- transform="scale(0.5,0.5)"><g
- transform="matrix(0.33333333,0,0,-0.33333333,157,178)"
- id="g3310">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3312"
- d="m 0,0 c 0,-6.627 5.372,-12 12,-12 6.628,0 12,5.373 12,12 C 24,6.627 18.628,12 12,12 5.372,12 0,6.627 0,0" />
- </g><g
- id="g4318"><g
- id="g3314"
- transform="matrix(0,0.42105263,0.91047041,0,161,172)">
- <path
- d="m 0,0 -19,9.885 0,-19.77"
- id="path3316"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><path
- d="m 164,164 -6,0 0,-8 6,0 0,8 z"
- id="path3318"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g></g><g
- id="g4363"
- transform="scale(0.5,0.5)"><g
- id="g4333"
- transform="matrix(0.33333333,0,0,-0.33333333,221,178)">
- <path
- d="m 0,0 c 0,-6.627 5.372,-12 12,-12 6.628,0 12,5.373 12,12 C 24,6.627 18.628,12 12,12 5.372,12 0,6.627 0,0"
- id="path4335"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><g
- id="g4339"
- transform="matrix(0,-0.42105263,0.91047041,0,225,156)">
- <path
- d="m 0,0 -19,9.885 0,-19.77"
- id="path4341"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4351"
- d="m 0,0 -19,9.885 0,-19.77" /></g><path
- d="m 228,164 -6,0 0,8 6,0 0,-8 z"
- id="path4343"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><g
- id="g4371"
- transform="matrix(0.5,0,0,0.5,-0.371325,0.98892)"><g
- transform="matrix(0.33333333,0,0,-0.33333333,285.10972,172.09028)"
- id="g3386">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3388"
- d="m -9.6000008e-8,3.5999999 c 0,-6.627 5.371999996000008,-12 12.000000096000007,-12 6.628,0 12,5.373 12,12 C 24,10.227 18.628,15.6 12,15.6 5.3719999,15.6 -9.6000008e-8,10.227 -9.6000008e-8,3.5999999" />
- </g><path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3400"
- d="m 275.24265,172.08579 c 5.10629,-16.86347 22.80573,-17.45673 27.87622,0"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g
- inkscape:transform-center-y="4.8667427"
- inkscape:transform-center-x="31.812074"
- transform="matrix(0.12650103,0.40160031,-0.67542793,0.21275463,304.09531,176.02216)"
- id="g4357">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4359"
- d="m 0,0 -19,9.885 0,-19.77" />
- <path
- d="m 0,0 -19,9.885 0,-19.77"
- id="path4361"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g></g><g
- id="g4389"
- transform="matrix(0.36842106,0,0,-0.40465352,12,102)">
- <path
- d="m 0,0 -19,9.885 0,-19.77"
- id="path4391"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><g
- transform="matrix(0,0.36842106,0.40465352,0,24,106)"
- id="g4393">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4395"
- d="m 0,0 -19,9.885 0,-19.77" />
- </g><g
- id="g4397"
- transform="matrix(0,-0.36842106,0.40465352,0,8,111)">
- <path
- d="m 0,0 -19,9.885 0,-19.77"
- id="path4399"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><path
- d="m 54,105 0,7 -10.000005,0 0,-7 z m 1,8 0,-11 -12,0 0,11 z"
- id="path4987"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccc" /><rect
- style="opacity:0.81893005;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="rect4991"
- width="12"
- height="3"
- x="73"
- y="110"
- ry="0" /><g
- id="g6865"
- transform="matrix(1,0,0,1.0833067,0,-7.5809332)"><g
- transform="matrix(0.9994799,0,0,0.99934297,0.09079898,0.05570112)"
- id="g6857"><g
- id="g6850"><g
- transform="matrix(0.49680733,0,0,0.49594275,1.1210985,0.73973011)"
- id="g6083"><rect
- y="158.80269"
- x="336.90268"
- height="22.194668"
- width="28.194668"
- id="rect4212"
- style="fill:none;stroke:#000000;stroke-width:1.93673468;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g
- transform="matrix(-0.52631579,0,0,-0.60698027,349.99999,169.90003)"
- id="g4216">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4218"
- d="M -19.118894,9.0253678e-4 0.01315753,9.9733228 l 0,-19.9448405" />
- </g></g><rect
- y="78.996201"
- x="171.99866"
- height="12.00789"
- width="1.0005203"
- id="rect6836"
- style="fill:#000000;fill-opacity:1;stroke:none" /></g></g></g><g
- id="g6963"
- transform="matrix(1,0,0,1.0833067,0,-7.5809087)"><g
- transform="translate(32.000017,-2.9395427e-4)"
- id="g6874"><g
- transform="matrix(0.9994799,0,0,0.99934297,0.09079898,0.05570112)"
- id="g6876"><g
- id="g6878"><g
- transform="matrix(0.49680733,0,0,0.49594275,1.1210985,0.73973011)"
- id="g6880"><rect
- y="158.80269"
- x="336.90268"
- height="22.194668"
- width="28.194668"
- id="rect6882"
- style="fill:none;stroke:#000000;stroke-width:1.93673468;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g
- transform="matrix(-0.52631579,0,0,-0.60698027,349.99999,169.90003)"
- id="g6884">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path6886"
- d="M 0.01315753,9.0253678e-4 -19.118894,9.9733228 l 0,-19.9448405" />
- </g></g><rect
- y="78.996201"
- x="171.99866"
- height="12.00789"
- width="1.0005203"
- id="rect6888"
- style="fill:#000000;fill-opacity:1;stroke:none" /></g></g></g></g><g
- id="g6954"
- transform="matrix(1,0,0,1.0833067,0,-7.5809087)"><g
- id="g6890"
- transform="translate(64.000017,-2.9395427e-4)"><g
- id="g6892"
- transform="matrix(0.9994799,0,0,0.99934297,0.09079898,0.05570112)"><g
- id="g6894"><g
- id="g6896"
- transform="matrix(0.49680733,0,0,0.49594275,1.1210985,0.73973011)"><rect
- style="fill:none;stroke:#000000;stroke-width:1.93673468;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="rect6898"
- width="28.194668"
- height="22.194668"
- x="336.90268"
- y="158.80269" /><g
- id="g6900"
- transform="matrix(-0.52631579,0,0,-0.60698027,349.99999,169.90003)">
-
- </g></g><rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect6904"
- width="1.0005203"
- height="12.00789"
- x="171.99866"
- y="78.996201" /></g></g></g></g><g
- transform="matrix(-1,0,0,1.0833067,448.00002,-7.5812271)"
- id="g6906"><g
- transform="matrix(0.9994799,0,0,0.99934297,0.09079898,0.05570112)"
- id="g6908"><g
- id="g6910"><g
- transform="matrix(0.49680733,0,0,0.49594275,1.1210985,0.73973011)"
- id="g6912"><rect
- y="158.80269"
- x="336.90268"
- height="22.194668"
- width="28.194668"
- id="rect6914"
- style="fill:none;stroke:#000000;stroke-width:1.93673468;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g
- transform="matrix(-0.52631579,0,0,-0.60698027,349.99999,169.90003)"
- id="g6916">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path6918"
- d="M 0.01315753,9.0253678e-4 -19.118894,9.9733228 l 0,-19.9448405" />
- </g></g><rect
- y="78.996201"
- x="171.99866"
- height="12.00789"
- width="1.0005203"
- id="rect6920"
- style="fill:#000000;fill-opacity:1;stroke:none" /></g></g></g><g
- id="g6938"
- transform="matrix(-1,0,0,1.0833067,479.00002,-7.5812271)"><g
- id="g6940"
- transform="matrix(0.9994799,0,0,0.99934297,0.09079898,0.05570112)"><g
- id="g6942"><g
- id="g6944"
- transform="matrix(0.49680733,0,0,0.49594275,1.1210985,0.73973011)"><rect
- style="fill:none;stroke:#000000;stroke-width:1.93673468;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="rect6946"
- width="28.194668"
- height="22.194668"
- x="336.90268"
- y="158.80269" /><g
- id="g6948"
- transform="matrix(-0.52631579,0,0,-0.60698027,349.99999,169.90003)">
- <path
- d="M -19.118894,9.0253678e-4 0.01315753,9.9733228 l 0,-19.9448405"
- id="path6950"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g></g><rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect6952"
- width="1.0005203"
- height="12.00789"
- x="171.99866"
- y="78.996201" /></g></g></g><g
- id="g5024"
- transform="translate(-2,-1)"><g
- id="g4933"><path
- inkscape:connector-curvature="0"
- style="fill:url(#linearGradient5103);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4791"
- d="m 120,97 c -3.86575,0 -7,3.13367 -7,7 0,3.86633 3.13425,7 7,7 3.86575,0 7,-3.13367 7,-7 0,-3.86633 -3.13425,-7 -7,-7" /></g><path
- inkscape:connector-curvature="0"
- style="fill:#f27d82;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4795"
- d="m 113.5,104 c 0,3.58963 2.90983,6.5 6.5,6.5 3.59017,0 6.5,-2.91037 6.5,-6.5 0,-3.58963 -2.90983,-6.5 -6.5,-6.5 -3.59017,0 -6.5,2.91037 -6.5,6.5" /><g
- style="fill:#000000;fill-opacity:0.36444451;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,123.5,101.9332)"
- id="g4797">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:0.36444451;fill-rule:nonzero;stroke:none"
- id="path4799"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g><g
- id="g4801"
- transform="matrix(0.32998633,0,0,-0.32998633,123.5,101.4332)"
- style="fill:#ffffff;fill-opacity:1;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path4803"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g></g><g
- id="g5105"
- transform="translate(-0.99999998,-0.99999868)"><g
- id="g4875"
- transform="matrix(0.32998633,0,0,-0.32998633,139.5,101.9332)"
- style="fill:#000000;fill-opacity:0.24444442;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path4877"
- style="fill:#000000;fill-opacity:0.24444442;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><g
- style="fill:#676767;fill-opacity:1;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,139.5,101.4332)"
- id="g4879">
- <path
- inkscape:connector-curvature="0"
- style="fill:#676767;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4881"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g></g><g
- id="g4951"
- transform="matrix(-1,0,0,-1,223,207)"
- style="fill:url(#linearGradient5356);fill-opacity:1;fill-rule:nonzero"><path
- inkscape:connector-curvature="0"
- style="fill:url(#linearGradient5354);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4953"
- d="m 120,97 c -3.86575,0 -7,3.13367 -7,7 0,3.86633 3.13425,7 7,7 3.86575,0 7,-3.13367 7,-7 0,-3.86633 -3.13425,-7 -7,-7" /></g><path
- inkscape:connector-curvature="0"
- style="fill:url(#linearGradient5365);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4955"
- d="m 103,96.5 c -3.58963,0 -6.5,2.90983 -6.5,6.5 0,3.59017 2.91037,6.5 6.5,6.5 3.58963,0 6.5,-2.90983 6.5,-6.5 0,-3.59017 -2.91037,-6.5 -6.5,-6.5" /><g
- style="fill:#993c35;fill-opacity:1;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,106.5,100.9332)"
- id="g4957">
- <path
- inkscape:connector-curvature="0"
- style="fill:#993c35;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4959"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g><g
- id="g4961"
- transform="matrix(0.32998633,0,0,-0.32998633,106.5,100.4332)"
- style="fill:#ffffff;fill-opacity:1;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path4963"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><g
- id="g5129"
- transform="translate(-2.5,-1.5)"><path
- inkscape:connector-curvature="0"
- style="fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path4998"
- d="m 145.5,104 c 0,3.58963 2.90983,6.5 6.5,6.5 3.59017,0 6.5,-2.91037 6.5,-6.5 0,-3.58963 -2.90983,-6.5 -6.5,-6.5 -3.59017,0 -6.5,2.91037 -6.5,6.5" /><g
- style="fill:#000000;fill-opacity:0.37333332;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,155.5,101.9332)"
- id="g5000">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:0.37333332;fill-rule:nonzero;stroke:none"
- id="path5002"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g><g
- id="g5004"
- transform="matrix(0.32998633,0,0,-0.32998633,155.5,101.4332)"
- style="fill:#ffffff;fill-opacity:1;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path5006"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g></g><g
- id="g5136"
- transform="translate(-1.5,-1.5)"><path
- d="m 161.5,104 c 0,3.58963 2.90983,6.5 6.5,6.5 3.59017,0 6.5,-2.91037 6.5,-6.5 0,-3.58963 -2.90983,-6.5 -6.5,-6.5 -3.59017,0 -6.5,2.91037 -6.5,6.5"
- id="path5039"
- style="fill:#9f9f9f;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><g
- id="g5041"
- transform="matrix(0.32998633,0,0,-0.32998633,171.5,101.9332)"
- style="fill:#000000;fill-opacity:0.36444475;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path5043"
- style="fill:#000000;fill-opacity:0.36444475;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><g
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,171.5,101.4332)"
- id="g5045">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5047"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g></g><g
- transform="translate(45,-1.4999987)"
- id="g5143"><g
- style="fill:#000000;fill-opacity:0.24444442;stroke:none"
- transform="matrix(0.32998633,0,0,-0.32998633,139.5,101.9332)"
- id="g5145">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:0.24444442;fill-rule:nonzero;stroke:none"
- id="path5147"
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z" />
- </g><g
- id="g5149"
- transform="matrix(0.32998633,0,0,-0.32998633,139.5,101.4332)"
- style="fill:#676767;fill-opacity:1;stroke:none">
- <path
- d="M 0,0 -2.828,2.828 -10.606,-4.95 -18.385,2.828 -21.213,0 l 7.778,-7.778 -7.778,-7.779 2.828,-2.828 7.779,7.779 7.778,-7.779 L 0,-15.557 -7.778,-7.778 0,0 z"
- id="path5151"
- style="fill:#676767;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g></g><g
- id="g5165"
- transform="matrix(0.396371,0,0,-0.47078517,131.64855,116.21248)">
- <path
- d="m 0,0 -3.618,4.311 -3.064,-2.572 6.428,-7.66 2.835,2.845 13.443,13.443 -2.828,2.829 L 0,0 z"
- id="path5167"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" />
- </g><path
- style="fill:none;stroke:#367cf1;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 195.75,97.750005 3.5,3.249985 -3.5,3.25001"
- id="path5212"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" /><path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path5214"
- d="m 195.75,108.75001 3.5,3.24998 -3.5,3.25001"
- style="fill:none;stroke:#939393;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g
- id="g5222"
- transform="translate(-2,0)"><g
- style="fill:#bababa;fill-opacity:1"
- transform="matrix(0.08333333,0,0,-0.08333333,211,101)"
- id="g5202">
- <path
- inkscape:connector-curvature="0"
- style="fill:#bababa;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5204"
- d="m 0,0 c 0,-6.627 5.372,-12 12,-12 6.628,0 12,5.373 12,12 C 24,6.627 18.628,12 12,12 5.372,12 0,6.627 0,0" />
- </g><path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path5216"
- d="m 210.25,97.750006 -3.5,3.249984 3.5,3.25001"
- style="fill:none;stroke:#bababa;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g><g
- id="error-message"
- transform="translate(11.000005,-9.9999998)"><g
- transform="matrix(0.71428571,0,0,0.71428571,121.28571,36.714286)"
- id="g5241"><path
- d="m 120,97 c -3.86575,0 -7,3.13367 -7,7 0,3.86633 3.13425,7 7,7 3.86575,0 7,-3.13367 7,-7 0,-3.86633 -3.13425,-7 -7,-7"
- id="path5243"
- style="fill:url(#linearGradient5281);fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><path
- d="m 202.35714,111 c 0,2.56402 2.07845,4.64286 4.64286,4.64286 2.5644,0 4.64285,-2.07884 4.64285,-4.64286 0,-2.56402 -2.07845,-4.64286 -4.64285,-4.64286 -2.56441,0 -4.64286,2.07884 -4.64286,4.64286"
- id="path5245"
- style="fill:#eb3941;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><path
- inkscape:connector-curvature="0"
- id="path5264"
- d="m 205,109 c 4,4 4,4 4,4"
- style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path
- style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 209,109 c -4,4 -4,4 -4,4"
- id="path5266"
- inkscape:connector-curvature="0" /><path
- style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 205,109 c 4,4 4,4 4,4"
- id="path5268"
- inkscape:connector-curvature="0" /><path
- inkscape:connector-curvature="0"
- id="path5270"
- d="m 209,109 c -4,4 -4,4 -4,4"
- style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /></g><path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path5289"
- d="m 203,116 4,-7.77778 4,7.77778 z"
- style="fill:none;stroke:#c19600;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><path
- style="fill:#f4bd00;fill-opacity:1;stroke:#f5be00;stroke-width:1.49999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 203.01662,116 4,-7.77778 4,7.77778 z"
- id="path5283"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" /><text
- sodipodi:linespacing="125%"
- id="text5301"
- y="146.8199"
- x="161.33199"
- style="font-size:11.26096152999999944px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ad8601;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Times Bold"
- xml:space="preserve"
- transform="scale(1.2629669,0.79178638)"><tspan
- y="146.8199"
- x="161.33199"
- id="tspan5303"
- sodipodi:role="line">!</tspan></text>
-
-
-
-
-
-<path
- style="font-size:9.67697048px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Times Bold"
- sodipodi:nodetypes="cccccccccccc"
- inkscape:connector-curvature="0"
- id="path5364"
- d="m 206,110 2,0 0,2.30275 -0.28334,1.67983 -1.43333,0 L 206,112.30275 206,110 m 0,4.56933 2,0 0,1.43067 -2,0 0,-1" /><text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="217.42622"
- y="110.74906"
- id="text5307"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5309"
- x="217.42622"
- y="110.74906" /></text>
-
-
-
-
-
-<g
- id="g5771"><path
- sodipodi:type="arc"
- style="fill:url(#linearGradient5737);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5449"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(4.4216629e-4,1.3793103,-1.3008129,4.1702167e-4,363.08462,-218.35335)" /><path
- transform="matrix(1.2413792,-3.9796805e-4,3.7530216e-4,1.1707316,-58.418,-19.676152)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5451"
- style="fill:#dd0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /><path
- sodipodi:type="arc"
- style="fill:url(#linearGradient5767);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5453"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(-2.0173838e-4,-0.62931035,0.92682926,-2.9712795e-4,133.46895,244.52849)" /><path
- transform="matrix(1.4094051e-4,0.43965518,0.78048781,-2.5021302e-4,148.48744,2.1206306)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5455"
- style="fill:url(#linearGradient5769);fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /></g><g
- id="g5757"><path
- sodipodi:type="arc"
- style="fill:url(#linearGradient5743);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5513"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(-0.01506784,1.3792098,-1.3007182,-0.01421029,377.66542,-216.8212)" /><path
- transform="matrix(1.2413037,0.01356118,-0.01278943,1.1706604,-46.042497,-22.900348)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5515"
- style="fill:#00be00;fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /><path
- sodipodi:type="arc"
- style="fill:url(#linearGradient5753);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5517"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(0.00687469,-0.62926454,0.92676181,0.01012483,142.86511,243.44332)" /><path
- transform="matrix(-0.00480288,0.43962318,0.780431,0.00852617,160.60265,1.1603243)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5519"
- style="fill:url(#linearGradient5755);fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /></g><path
- sodipodi:type="arc"
- style="fill:#e5a600;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5588"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(4.4216629e-4,1.3793103,-1.3008129,4.1702167e-4,385.08462,-218.35335)" /><path
- transform="matrix(1.2413792,-3.9796805e-4,3.7530216e-4,1.1707316,-36.418,-19.676152)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5590"
- style="fill:#ffbd00;fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /><path
- sodipodi:type="arc"
- style="fill:url(#linearGradient5835);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path5592"
- sodipodi:cx="231.5"
- sodipodi:cy="103.15625"
- sodipodi:rx="3.625"
- sodipodi:ry="3.84375"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- transform="matrix(-2.0173838e-4,-0.62931035,0.92682926,-2.9712795e-4,155.46895,244.52849)" /><path
- transform="matrix(1.4094051e-4,0.43965518,0.78048781,-2.5021302e-4,170.44325,2.0764364)"
- d="m 235.125,103.15625 a 3.625,3.84375 0 1 1 -7.25,0 3.625,3.84375 0 1 1 7.25,0 z"
- sodipodi:ry="3.84375"
- sodipodi:rx="3.625"
- sodipodi:cy="103.15625"
- sodipodi:cx="231.5"
- id="path5594"
- style="fill:url(#linearGradient5837);fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:type="arc" /><rect
- style="fill:#000000;fill-opacity:0.38222225;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none"
- id="rect4542"
- width="8"
- height="12"
- x="268"
- y="102"
- ry="1.6104031"
- rx="0" /><g
- id="info-message"
- transform="translate(11.000005,1.0000002)"><g
- transform="matrix(0.71428571,0,0,0.71428571,121.28571,36.714286)"
- id="g5241-7"
- style="fill:url(#linearGradient5635);fill-opacity:1.0"><path
- d="m 120,97 c -3.86575,0 -7,3.13367 -7,7 0,3.86633 3.13425,7 7,7 3.86575,0 7,-3.13367 7,-7 0,-3.86633 -3.13425,-7 -7,-7"
- id="path5243-8"
- style="fill:url(#linearGradient5635);fill-opacity:1.0;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /></g><path
- d="m 202.35714,111 c 0,2.56402 2.07845,4.64286 4.64286,4.64286 2.5644,0 4.64285,-2.07884 4.64285,-4.64286 0,-2.56402 -2.07845,-4.64286 -4.64285,-4.64286 -2.56441,0 -4.64286,2.07884 -4.64286,4.64286"
- id="path5245-1"
- style="fill:#2a53cd;fill-opacity:1;fill-rule:nonzero;stroke:none"
- inkscape:connector-curvature="0" /><text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="217.52373"
- y="112.00085"
- id="text4177"
- sodipodi:linespacing="125%"
- transform="translate(-11.000005,-1.0000002)"><tspan
- sodipodi:role="line"
- id="tspan4179" /></text>
-
-
-<text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient5627);fill-opacity:1;stroke:none;font-family:Sans"
- x="206.81799"
- y="114.13864"
- id="text4181"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4183"
- x="206.81799"
- y="114.13864"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr;text-anchor:middle;fill:#ffffff;fill-opacity:1;font-family:Serif;-inkscape-font-specification:Serif Bold">i</tspan></text>
-
-
-</g></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?><svg height="144" version="1.1" width="320" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink"
+><sodipodi:namedview showgrid="true"
+><inkscape:grid dotted="false" empspacing="2" enabled="true" id="grid3327" snapvisiblegridlinesonly="true" spacingx="32px" spacingy="24px" type="xygrid" visible="true"/></sodipodi:namedview
+><defs
+><linearGradient id="a"
+><stop offset="0" stop-color="#606eda"
+/><stop offset="1" stop-color="#021db2"/></linearGradient
+><linearGradient id="b"
+><stop offset="0" stop-color="#e59290"
+/><stop offset="1" stop-color="#e99890"/></linearGradient
+><linearGradient id="c"
+><stop offset="0" stop-color="#c0544f"
+/><stop offset="1" stop-color="#d08481"/></linearGradient
+><linearGradient id="d"
+><stop offset="0" stop-color="#ffa801" stop-opacity="0"
+/><stop offset="1" stop-color="#f0fb3d"/></linearGradient
+><linearGradient id="e"
+><stop offset="0" stop-color="#ffbd00" stop-opacity="0.65"
+/><stop offset="1" stop-color="#fff" stop-opacity="0.91"/></linearGradient
+><linearGradient id="f"
+><stop offset="0" stop-color="#00d600" stop-opacity="0"
+/><stop offset="1" stop-color="#d8fc7b" stop-opacity="0.81"/></linearGradient
+><linearGradient id="g"
+><stop offset="0" stop-color="#00ba00"
+/><stop offset="1" stop-color="#fff" stop-opacity="0.91"/></linearGradient
+><linearGradient id="h"
+><stop offset="0" stop-color="#00a104"
+/><stop offset="1" stop-color="#00c605"/></linearGradient
+><linearGradient id="i"
+><stop offset="0" stop-color="#f00" stop-opacity="0"
+/><stop offset="1" stop-color="#f0cb68" stop-opacity="0.71"/></linearGradient
+><linearGradient id="j"
+><stop offset="0" stop-color="#e60000" stop-opacity="0.65"
+/><stop offset="1" stop-color="#fff" stop-opacity="0.91"/></linearGradient
+><linearGradient id="k"
+><stop offset="0" stop-color="#a10000"
+/><stop offset="1" stop-color="#c60000"/></linearGradient
+><linearGradient id="l"
+><stop offset="0" stop-color="#d7687d"
+/><stop offset="1" stop-color="#b21402"/></linearGradient
+><radialGradient cx="0" cy="0" fx="0" fy="0" gradientTransform="matrix(18,0,0,-18,680,341)" gradientUnits="userSpaceOnUse" id="z" r="1" spreadMethod="pad"
+><stop offset="0"
+/><stop offset="1" stop-opacity="0"/></radialGradient
+><radialGradient cx="0" cy="0" fx="0" fy="0" gradientTransform="matrix(9,0,0,9,304,36)" gradientUnits="userSpaceOnUse" id="A" r="1" spreadMethod="pad" xlink:href="#z"
+/><linearGradient gradientTransform="matrix(0,-0.58333333,-0.58333333,0,118,110)" gradientUnits="userSpaceOnUse" id="m" x1="0" x2="24" xlink:href="#l" y1="0" y2="0"
+/><linearGradient gradientTransform="matrix(0,1,-1,0,206,0)" gradientUnits="userSpaceOnUse" id="n" x1="96.5" x2="109.5" xlink:href="#b" y1="103" y2="103"
+/><linearGradient gradientTransform="matrix(0,1,-1,0,207,-17)" gradientUnits="userSpaceOnUse" id="o" x1="113" x2="127" xlink:href="#c" y1="104" y2="104"
+/><linearGradient gradientTransform="matrix(0,-0.41666666,-0.41666666,0,218,106)" gradientUnits="userSpaceOnUse" id="p" x1="0" x2="24" xlink:href="#l" y1="0" y2="0"
+/><linearGradient gradientTransform="matrix(0.71428571,0,0,0.71428571,132.28571,37.714287)" gradientUnits="userSpaceOnUse" id="q" x1="113" x2="127" xlink:href="#a" y1="104" y2="104"
+/><linearGradient gradientTransform="matrix(0,1.3793103,-1.3008129,0,363.08462,-218.35335)" gradientUnits="userSpaceOnUse" id="r" x1="227.875" x2="235.125" xlink:href="#k" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(0,-0.62931035,0.92682926,0,133.46895,244.52849)" gradientUnits="userSpaceOnUse" id="s" x1="227.875" x2="235.125" xlink:href="#j" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(0,0.43965518,0.78048781,0,148.48744,2.1206316)" gradientUnits="userSpaceOnUse" id="t" x1="227.875" x2="235.125" xlink:href="#i" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(-0.01506784,1.3792098,-1.3007182,-0.01421029,377.66542,-216.8212)" gradientUnits="userSpaceOnUse" id="u" x1="227.875" x2="235.125" xlink:href="#h" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(0.00687469,-0.62926454,0.92676181,0.01012483,142.86511,243.44332)" gradientUnits="userSpaceOnUse" id="v" x1="227.875" x2="235.125" xlink:href="#g" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(-0.00480288,0.43962318,0.780431,0.00852617,160.60265,1.1603253)" gradientUnits="userSpaceOnUse" id="w" x1="227.875" x2="235.125" xlink:href="#f" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(0,-0.62931035,0.92682926,0,155.46895,244.52849)" gradientUnits="userSpaceOnUse" id="x" x1="227.875" x2="235.125" xlink:href="#e" y1="103.15625" y2="103.15625"
+/><linearGradient gradientTransform="matrix(0,0.43965518,0.78048781,0,170.44325,2.076437)" gradientUnits="userSpaceOnUse" id="y" x1="227.875" x2="235.125" xlink:href="#d" y1="103.15625" y2="103.15625"/></defs
+><path d="M57 12 53.5 8 39 8l0 8 14.5 0"
+/><path d="m25 36-3.64-4-1.79 0-5.57 8 7.36 0 3.64-4z"
+/><path d="m7 32 0 8 2.05 0 4.95-8-7 0z"
+/><path d="m9.67 44.55-1.59-1.32 10.76-15.78 1.59 1.32-10.76 15.78z"
+/><path d="M16 5L16 7C13.24 7 11 9.24 11 12C11 14.76 13.24 17 16 17C18.76 17 21 14.76 21 12L19.16 12C19.12 13.72 17.73 15.09 16 15.09C14.25 15.09 12.84 13.69 12.84 11.94C12.84 10.19 14.25 8.78 16 8.78L16 11L20.5 8L16 5z"
+/><path d="m53 37-10 0 0-5 10 0 0 5zm-12 5 14 0 0-12-14 0 0 12z"
+/><path d="m10 57-2 0 0 9 11 0 0-2-9 0z"
+/><path d="m13 56 7 0 0 5-7 0zm-2-2 0 9 11 0 0-9z"
+/><path d="m86 33-8 0 0-2 8 0 0 2z"
+/><path d="m71.5 31.44 4.2 4.31-4.2 4.31 1.4 1.44 5.6-5.75L72.9 30z"
+/><path d="m86 37-6 0 0-2 6 0 0 2z"
+/><path d="m86 41-8 0 0-2 8 0 0 2z"
+/><path d="m80.44 16.94c-2.48 0-4.5-2.02-4.5-4.5 0-0.88 0.26-1.7 0.69-2.39l6.2 6.2c-0.69 0.44-1.51 0.69-2.39 0.69m4.5-4.5c0 0.88-0.26 1.7-0.69 2.39l-6.2-6.2c0.69-0.44 1.51-0.69 2.39-0.69 2.48 0 4.5 2.02 4.5 4.5M80.5 6c-3.59 0-6.5 2.91-6.5 6.5 0 3.59 2.91 6.5 6.5 6.5 3.59 0 6.5-2.91 6.5-6.5 0-3.59-2.91-6.5-6.5-6.5"
+/><path d="m117 65-10 0 0-10 10 0 0 10z"
+/><path d="m116 37 0 4-8 0 0-3-1 0 0 3 0 1 10 0 0-5z"
+/><path d="m111.88 35.9-1.83-2.25-1.55 1.34 3.26 4.01 8.24-8.52-1.43-1.48-6.68 6.9z"
+/><path d="M149 8.33 147.67 7 144 10.67 140.33 7 139 8.33l3.67 3.67-3.67 3.67 1.33 1.33 3.67-3.67 3.67 3.67L149 15.67 145.33 12 149 8.33z"
+/><path d="m44 59 2 3 0 4 4 0 0-4 2-3z" fill="#424242" opacity="0.5"
+/><path d="m46.5 65.23c0.32 0.13 0.84 0.24 1.47 0.24 0.59 0 1.14-0.1 1.53-0.26l0-3.93 4-4.57 0-0.19-11 0 0 0.22 4 4.57 0 3.93zM47.97 67C46.81 66.91 45.82 66.71 45 66.01l0-4.12-4-4.57 0-2.32 14 0 0 2.35-4 4.57 0 4.13c-0.92 0.67-2.1 0.94-3.03 0.95"
+/><path d="M86 60 76 55 76 65"
+/><path d="m153 57-11 0 0-2 11 0 0 2z" opacity="0.2"
+/><path d="m135 54 0-1-2 0 0 14 2 0 0-1-1 0 0-12z"
+/><path d="m142 57-6 0 0-2 6 0 0 2z"
+/><path d="m145 60-6 0 0-2 6 0 0 2z"
+/><path d="m150 63-6 0 0-2 6 0 0 2z"
+/><path d="m152 66-6 0 0-2 6 0 0 2z"
+/><path d="m170 67-2 0 0-9 2 0 0 9z"
+/><path d="m173 67-2 0 0-11 2 0 0 11z"
+/><path d="m176 67-2 0 0-13 2 0 0 13z"
+/><path d="m179 67-2 0 0-4 2 0 0 4z"
+/><path d="m182 67-2 0 0-9 2 0 0 9z"
+/><path d="m185 67-2 0 0-11 2 0 0 11z"
+/><path d="m208 57-10 0 0-2 10 0 0 2z"
+/><path d="m217 57-5 0 0-2 5 0 0 2z"
+/><path d="m200 61-2 0 0-2 2 0 0 2z"
+/><path d="m213 61-10 0 0-2 10 0 0 2z"
+/><path d="m217 61-2 0 0-2 2 0 0 2z"
+/><path d="m205 65-7 0 0-2 7 0 0 2z"
+/><path d="m217 65-8 0 0-2 8 0 0 2z"
+/><path d="m274 64-7 0 0-8 7 0 0 8zm-9 2 14 0 0-12-14 0 0 12z"
+/><path d="m298 12c0 3.31 2.69 6 6 6 3.31 0 6-2.69 6-6 0-3.31-2.69-6-6-6-3.31 0-6 2.69-6 6"
+/><path d="m295 36c0 4.97 4.03 9 9 9l0 0c4.97 0 9-4.03 9-9l0 0c0-4.97-4.03-9-9-9l0 0c-4.97 0-9 4.03-9 9" fill="url(#A)"
+/><path d="m298 36c0 3.31 2.69 6 6 6 3.31 0 6-2.69 6-6 0-3.31-2.69-6-6-6-3.31 0-6 2.69-6 6"
+/><path d="M239 30C236.24 30 234 32.24 234 35C234 37.76 236.24 40 239 40C240.03 40 240.96 39.69 241.75 39.16L245.56 43L247 41.56L243.19 37.75C243.71 36.96 244 36.02 244 35C244 32.24 241.76 30 239 30zM239 32C240.66 32 242 33.34 242 35C242 36.66 240.66 38 239 38C237.34 38 236 36.66 236 35C236 33.34 237.34 32 239 32z"
+/><path d="m233.73 63.76 5.25-3.23 5.32 2.23 4.95-4.03" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="1.48"
+/><path d="m231 67 0-13-1 0 0 14 21 0 0-1z"
+/><path d="m237 11-4 0 0-4 4 0 0 4z"
+/><path d="m247 9-9 0 0-2 9 0 0 2z"
+/><path d="m247 11-9 0 0-1 9 0 0 1z"
+/><path d="m247 15-9 0 0-2 9 0 0 2z"
+/><path d="m237 17-4 0 0-4 4 0 0 4z"
+/><path d="m247 17-9 0 0-1 9 0 0 1z"
+/><path d="m176 38.13c-1.18 0-2.13-0.96-2.13-2.13 0-1.18 0.96-2.13 2.13-2.13 1.18 0 2.13 0.96 2.13 2.13 0 1.18-0.96 2.13-2.13 2.13m8-3.73-2.93-0.53 1.72-2.39-2.26-2.26-2.46 1.79-0.47-3-3.2 0-0.4 3.13-2.53-1.92-2.26 2.26 1.99 2.59-3.2 0.33 0 3.2 3.33 0.33-2.12 2.59 2.26 2.26 2.53-2.12 0.4 3.33 3.2 0 0.4-3.2 2.53 1.99 2.26-2.26L181 38.07l3-0.47 0-3.2z"
+/><path d="m210.33 38.34c0 0.79 0.08 1.39 0.24 1.78 0.16 0.39 0.42 0.59 0.78 0.59 0.71 0 1.07-0.79 1.07-2.37 0-1.56-0.36-2.34-1.07-2.34-0.36 0-0.62 0.19-0.78 0.57-0.16 0.38-0.24 0.97-0.24 1.76m3.66 0c0 1.22-0.23 2.14-0.68 2.75-0.45 0.61-1.11 0.92-1.97 0.92-0.83 0-1.47-0.32-1.92-0.95-0.46-0.63-0.68-1.54-0.68-2.73 0-2.43 0.87-3.65 2.61-3.65 0.84 0 1.49 0.31 1.95 0.94 0.46 0.63 0.7 1.53 0.7 2.71m-2.42-8.16-6.6 11.67-1.58 0 6.6-11.67 1.58 0zm-8.99 3.5c0 0.79 0.08 1.38 0.24 1.77 0.16 0.39 0.42 0.58 0.77 0.58 0.72 0 1.07-0.78 1.07-2.35 0-1.57-0.36-2.36-1.07-2.36-0.36 0-0.62 0.19-0.77 0.58-0.16 0.39-0.24 0.98-0.24 1.77m3.66-0.02c0 1.22-0.22 2.14-0.67 2.76-0.45 0.62-1.11 0.92-1.98 0.92-0.83 0-1.46-0.32-1.92-0.95-0.45-0.64-0.68-1.55-0.68-2.73 0-2.43 0.87-3.65 2.6-3.65 0.85 0 1.51 0.32 1.97 0.95 0.46 0.63 0.69 1.53 0.69 2.7"
+/><path d="m268.01 35.99c0.61 0.28 1.07 0.9 1.07 1.58 0.11 0.85-0.05 1.72 0.12 2.57 0.27 0.54 1 0.28 1.43 0.55 0.49 0.24 0.48 1.01-0.06 1.18-0.56 0.22-1.18 0.08-1.74-0.05-0.71-0.2-1.41-0.72-1.5-1.5-0.18-0.89 0.01-1.8-0.16-2.68-0.22-0.64-0.94-0.9-1.57-0.93-0.58-0.1-0.83-0.94-0.35-1.3 0.51-0.35 1.26-0.14 1.69-0.66 0.44-0.48 0.29-1.18 0.32-1.78 0-0.81-0.02-1.77 0.65-2.34 0.66-0.54 1.58-0.71 2.41-0.63 0.63 0 0.98 0.87 0.4 1.22-0.44 0.37-1.2 0.06-1.51 0.65-0.14 0.56-0.05 1.15-0.07 1.73-0.01 0.75-0.05 1.64-0.72 2.13-0.12 0.1-0.26 0.19-0.4 0.26"
+/><path d="m276.98 35.99c-0.67-0.3-1.08-1.02-1.08-1.75-0.07-0.76 0.03-1.52-0.06-2.28-0.24-0.58-0.98-0.4-1.46-0.59-0.59-0.24-0.48-1.18 0.14-1.31 0.73-0.15 1.52-0.01 2.18 0.32 0.56 0.28 0.95 0.86 0.99 1.48 0.13 0.83-0.03 1.68 0.13 2.5 0.2 0.68 0.94 0.83 1.54 0.9 0.56 0.07 0.86 0.8 0.46 1.21-0.44 0.46-1.2 0.2-1.65 0.66-0.51 0.46-0.4 1.21-0.4 1.83-0.03 0.78 0.06 1.69-0.52 2.3-0.74 0.65-1.8 0.86-2.75 0.68-0.52-0.16-0.69-1.01-0.15-1.25 0.44-0.23 1.02-0.08 1.41-0.45 0.26-0.45 0.09-0.98 0.14-1.47 0.01-0.76-0.07-1.63 0.43-2.26C276.51 36.3 276.75 36.14 276.99 36"
+/><path d="m275 15-2 0 0-6 2 0zm-4 0-2 0 0-6 2 0zm4-10-6 0-4 4 0 6 4 4 6 0 4-4.12 0-5.88z"
+/><path d="m112.03 15.5c-1.93 0-3.5-1.57-3.5-3.5 0-1.93 1.57-3.5 3.5-3.5 1.93 0 3.5 1.57 3.5 3.5 0 1.93-1.57 3.5-3.5 3.5m-0.03-8.5c-2.44 0-4.63 0.83-9 5 4.31 4.17 6.56 5 9 5 2.44 0 4.63-0.83 9-5-4.31-4.17-6.56-5-9-5"
+/><path d="m110.5 12c0 0.83 0.67 1.5 1.5 1.5 0.83 0 1.5-0.67 1.5-1.5 0-0.83-0.67-1.5-1.5-1.5-0.83 0-1.5 0.67-1.5 1.5"
+/><path d="m139.5 33 9 0-1.5 10-6 0"
+/><path d="m147.5 30-2 0 0-1-3 0 0 1-2 0c-0.55 0-1 0.48-1 1l0 1 1 0 7 0 1 0 0-1c0-0.52-0.45-1-1-1"
+/><path d="m317 69 0-5-5 5 5 0z"
+/><path d="m207.88 11.9-1.83-2.26-1.55 1.35 3.26 4.01L216 6.48 214.57 5z" opacity="0.4"
+/><path d="m212 13 0 4-8 0 0-3-1 0 0 4 10 0 0-5z"
+/><path d="m23 84-8-5 0 10"
+/><path d="m13 89-3 0 0-10 3 0 0 10z"
+/><path d="m47 88-3 0 0-8 3 0 0 8z"
+/><path d="m53 88-3 0 0-8 3 0 0 8z"
+/><path d="m78.5 89c0 1.1 0.9 2 2 2 1.1 0 2-0.9 2-2 0-1.1-0.9-2-2-2-1.1 0-2 0.9-2 2"
+/><path d="M79 78L79 82L76 82L80.5 86L85 82L82 82L82 78L79 78z"
+/><path d="m110.5 89c0 1.1 0.9 2 2 2 1.1 0 2-0.9 2-2 0-1.1-0.9-2-2-2-1.1 0-2 0.9-2 2"
+/><path d="M112.5 78L108 82L111 82L111 86L114 86L114 82L117 82L112.5 78z"
+/><path d="m142 86.5c0 1.1 0.9 2 2 2 1.1 0 2-0.9 2-2 0-1.1-0.9-2-2-2-1.1 0-2 0.9-2 2"
+/><path d="m137.25 87.03c2.55-8.43 11.4-8.73 13.94 0" fill="none" stroke="#000" stroke-width="2.5"
+/><path d="m151.68 89-4.54-2.76 6.68-2.1"
+/><path d="m12 102-7-4 0 8"
+/><path d="m24 106 4-7-8 0"
+/><path d="m8 111 4 7-8 0"
+/><path d="m54 105 0 7-10 0 0-7zm1 8 0-11-12 0 0 11z"
+/><rect height="3" opacity="0.82" ry="0" width="12" x="73" y="110"
+/><rect fill="none" height="12" stroke="#000" width="14" x="168.5" y="78.5"
+/><path d="m180 84.5-5-3.25 0 6.5"
+/><rect height="13" width="1" x="172" y="78"
+/><rect fill="none" height="12" stroke="#000" width="14" x="200.5" y="78.5"
+/><path d="m207 84.5 5-3.25 0 6.5"
+/><rect height="13" width="1" x="204" y="78"
+/><rect fill="none" height="12" stroke="#000" width="14" x="232.5" y="78.5"
+/><rect height="13" width="1" x="236" y="78"
+/><rect fill="none" height="12" stroke="#000" width="14" x="264.5" y="78.5"
+/><path d="m272 84.5-5-3.25 0 6.5"
+/><rect height="13" width="1" x="274" y="78"
+/><rect fill="none" height="12" stroke="#000" width="14" x="296.5" y="78.5"
+/><path d="m299 84.5 5-3.25 0 6.5"
+/><rect height="13" width="1" x="306" y="78"
+/><path d="m118 96c-3.87 0-7 3.13-7 7 0 3.87 3.13 7 7 7 3.87 0 7-3.13 7-7 0-3.87-3.13-7-7-7" fill="url(#m)"
+/><path d="m111.5 103c0 3.59 2.91 6.5 6.5 6.5 3.59 0 6.5-2.91 6.5-6.5 0-3.59-2.91-6.5-6.5-6.5-3.59 0-6.5 2.91-6.5 6.5" fill="#f27d82"
+/><path d="m121.5 100.93-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57L114.5 106.07 115.43 107 118 104.43 120.57 107 121.5 106.07 118.93 103.5 121.5 100.93z" fill-opacity="0.36"
+/><path d="m121.5 100.43-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57-2.57 2.57 0.93 0.93 2.57-2.57 2.57 2.57 0.93-0.93-2.57-2.57 2.57-2.57z" fill="#fff"
+/><path d="m138.5 100.93-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57L131.5 106.07 132.43 107 135 104.43 137.57 107 138.5 106.07 135.93 103.5 138.5 100.93z" fill-opacity="0.24"
+/><path d="m138.5 100.43-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57-2.57 2.57 0.93 0.93 2.57-2.57 2.57 2.57 0.93-0.93-2.57-2.57 2.57-2.57z" fill="#676767"
+/><path d="m103 110c3.87 0 7-3.13 7-7 0-3.87-3.13-7-7-7-3.87 0-7 3.13-7 7 0 3.87 3.13 7 7 7" fill="url(#o)"
+/><path d="m103 96.5c-3.59 0-6.5 2.91-6.5 6.5 0 3.59 2.91 6.5 6.5 6.5 3.59 0 6.5-2.91 6.5-6.5 0-3.59-2.91-6.5-6.5-6.5" fill="url(#n)"
+/><path d="m106.5 100.93-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57L99.5 106.07 100.43 107 103 104.43 105.57 107 106.5 106.07 103.93 103.5 106.5 100.93z" fill="#993c35"
+/><path d="m106.5 100.43-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57-2.57 2.57 0.93 0.93 2.57-2.57 2.57 2.57 0.93-0.93-2.57-2.57 2.57-2.57z" fill="#fff"
+/><path d="m143 102.5c0 3.59 2.91 6.5 6.5 6.5 3.59 0 6.5-2.91 6.5-6.5 0-3.59-2.91-6.5-6.5-6.5-3.59 0-6.5 2.91-6.5 6.5" fill="#bebebe"
+/><path d="m153 100.43-0.93-0.93-2.57 2.57L146.93 99.5 146 100.43 148.57 103 146 105.57 146.93 106.5 149.5 103.93 152.07 106.5 153 105.57 150.43 103 153 100.43z" fill-opacity="0.37"
+/><path d="M153 99.93 152.07 99 149.5 101.57 146.93 99 146 99.93 148.57 102.5 146 105.07 146.93 106 149.5 103.43 152.07 106 153 105.07 150.43 102.5 153 99.93z" fill="#fff"
+/><path d="m160 102.5c0 3.59 2.91 6.5 6.5 6.5 3.59 0 6.5-2.91 6.5-6.5 0-3.59-2.91-6.5-6.5-6.5-3.59 0-6.5 2.91-6.5 6.5" fill="#9f9f9f"
+/><path d="m170 100.43-0.93-0.93-2.57 2.57L163.93 99.5 163 100.43 165.57 103 163 105.57 163.93 106.5 166.5 103.93 169.07 106.5 170 105.57 167.43 103 170 100.43z" fill-opacity="0.36"
+/><path d="M170 99.93 169.07 99 166.5 101.57 163.93 99 163 99.93 165.57 102.5 163 105.07 163.93 106 166.5 103.43 169.07 106 170 105.07 167.43 102.5 170 99.93z" fill="#fff"
+/><path d="m184.5 100.43-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57-2.57 2.57 0.93 0.93 2.57-2.57 2.57 2.57 0.93-0.93-2.57-2.57 2.57-2.57z" fill-opacity="0.24"
+/><path d="m184.5 99.93-0.93-0.93-2.57 2.57-2.57-2.57-0.93 0.93 2.57 2.57L177.5 105.07 178.43 106 181 103.43 183.57 106 184.5 105.07 181.93 102.5 184.5 99.93z" fill="#676767"
+/><path d="m131.65 116.21-1.44-2.03-1.21 1.21 2.55 3.61 6.45-7.67-1.12-1.33z"
+/><path d="m195.75 97.75 3.5 3.25-3.5 3.25" fill="none" stroke="#367cf1" stroke-width="1.5"
+/><path d="m195.75 108.75 3.5 3.25-3.5 3.25" fill="none" stroke="#939393" stroke-width="1.5"
+/><path d="m209 101c0 0.55 0.45 1 1 1 0.55 0 1-0.45 1-1 0-0.55-0.45-1-1-1-0.55 0-1 0.45-1 1" fill="#bababa"
+/><path d="m208.25 97.75-3.5 3.25 3.5 3.25" fill="none" stroke="#bababa" stroke-width="1.5"
+/><path d="m218 96c-2.76 0-5 2.24-5 5 0 2.76 2.24 5 5 5 2.76 0 5-2.24 5-5 0-2.76-2.24-5-5-5" fill="url(#p)"
+/><path d="m213.36 101c0 2.56 2.08 4.64 4.64 4.64 2.56 0 4.64-2.08 4.64-4.64 0-2.56-2.08-4.64-4.64-4.64-2.56 0-4.64 2.08-4.64 4.64" fill="#eb3941"
+/><path d="m216 99 4 4" stroke="#fff"
+/><path d="m220 99-4 4" stroke="#fff"
+/><path d="m203 116 4-8 4 8z" stroke="#c19600" stroke-linejoin="round" stroke-width="2"
+/><path d="m203 116 4-8 4 8z" fill="#f4bd00" stroke="#f5bd00" stroke-linejoin="round" stroke-width="1.5"
+/><path d="m205.75 109.75 2.5 0 0 2.5-0.5 1.75-1.5 0-0.5-1.75 0-2.5m0 5.25 2.5 0 0 1.25-2.5 0" fill="#ad8601"
+/><path d="m206 110 2 0 0 2.25-0.5 1.75-1 0-0.5-1.75 0-2.25m0 5 2 0 0 1-2 0" fill="#fff"
+/><path d="m229 106c-2.76 0-5-2.24-5-5 0-2.76 2.24-5 5-5 2.76 0 5 2.24 5 5 0 2.76-2.24 5-5 5z" fill="url(#r)"
+/><path d="m233.5 101c0 2.49-2.01 4.5-4.5 4.5-2.49 0-4.5-2.01-4.5-4.5 0-2.49 2.01-4.5 4.5-4.5 2.49 0 4.5 2.01 4.5 4.5z" fill="#d00"
+/><path d="m229.03 96.53c1.97 0 3.56 1.02 3.56 2.28 0 1.26-1.59 2.28-3.56 2.28-1.97 0-3.56-1.02-3.56-2.28 0-1.26 1.59-2.28 3.56-2.28z" fill="url(#s)"
+/><path d="m229.03 105.47c1.66 0 3-0.71 3-1.59 0-0.88-1.34-1.59-3-1.59-1.66 0-3 0.71-3 1.59 0 0.88 1.34 1.59 3 1.59z" fill="url(#t)"
+/><path d="m239.95 106c-2.76-0.03-4.98-2.29-4.95-5.05 0.03-2.76 2.29-4.98 5.05-4.95 2.76 0.03 4.98 2.29 4.95 5.05-0.03 2.76-2.29 4.98-5.05 4.95z" fill="url(#u)"
+/><path d="m244.5 101.05c-0.03 2.49-2.06 4.48-4.55 4.45-2.49-0.03-4.48-2.06-4.45-4.55 0.03-2.49 2.06-4.48 4.55-4.45 2.49 0.03 4.48 2.06 4.45 4.55z" fill="#00be00"
+/><path d="m240.08 96.53c1.97 0.02 3.55 1.06 3.54 2.32-0.01 1.26-1.62 2.26-3.59 2.24-1.97-0.02-3.55-1.06-3.54-2.32 0.01-1.26 1.62-2.26 3.59-2.24z" fill="url(#v)"
+/><path d="m239.98 105.41c1.66 0.02 3.01-0.68 3.02-1.56 0.01-0.88-1.33-1.61-2.98-1.63-1.66-0.02-3.01 0.68-3.02 1.56-0.01 0.88 1.33 1.61 2.98 1.63z" fill="url(#w)"
+/><path d="m251 106c-2.76 0-5-2.24-5-5 0-2.76 2.24-5 5-5 2.76 0 5 2.24 5 5 0 2.76-2.24 5-5 5z" fill="#e5a600"
+/><path d="m255.5 101c0 2.49-2.01 4.5-4.5 4.5-2.49 0-4.5-2.01-4.5-4.5 0-2.49 2.01-4.5 4.5-4.5 2.49 0 4.5 2.01 4.5 4.5z" fill="#ffbd00"
+/><path d="m251.03 96.53c1.97 0 3.56 1.02 3.56 2.28 0 1.26-1.59 2.28-3.56 2.28-1.97 0-3.56-1.02-3.56-2.28 0-1.26 1.59-2.28 3.56-2.28z" fill="url(#x)"
+/><path d="m250.99 105.42c1.66 0 3-0.71 3-1.59 0-0.88-1.34-1.59-3-1.59-1.66 0-3 0.71-3 1.59 0 0.88 1.34 1.59 3 1.59z" fill="url(#y)"
+/><rect height="12" rx="0.25" ry="0.25" style="fill-opacity:0.38;stroke-linejoin:round;stroke-miterlimit:0;stroke-width:2;stroke:#000" width="8" x="268" y="102"
+/><path d="m218 107c-2.76 0-5 2.24-5 5 0 2.76 2.24 5 5 5 2.76 0 5-2.24 5-5 0-2.76-2.24-5-5-5" fill="url(#q)"
+/><path d="m213.36 112c0 2.56 2.08 4.64 4.64 4.64 2.56 0 4.64-2.08 4.64-4.64 0-2.56-2.08-4.64-4.64-4.64-2.56 0-4.64 2.08-4.64 4.64" fill="#2a53cd"
+/><path d="m216.93 109.14c-0.03-0.53 0.55-0.97 1.06-0.83 0.5 0.12 0.79 0.73 0.56 1.18-0.2 0.44-0.79 0.61-1.2 0.36C217.09 109.71 216.93 109.43 216.93 109.14zm1.7 5.46c0.22 0 0.45 0 0.67 0 0 0.18 0 0.35 0 0.53-0.96 0-1.93 0-2.89 0 0-0.18 0-0.35 0-0.53 0.22 0 0.44 0 0.66 0 0-1.2 0-2.41 0-3.61-0.22 0-0.44 0-0.66 0 0-0.18 0-0.35 0-0.53 0.74 0 1.48 0 2.22 0 0 1.38 0 2.76 0 4.14z" fill="#fff"
+/><rect height="8" rx="0.25" ry="0.25" style="fill-opacity:0.38;stroke-linejoin:round;stroke-miterlimit:0;stroke-width:2;stroke:#000" width="12" x="298" y="104"
+/><path d="m12.25 125c-0.68 0-1.25 0.57-1.25 1.25l0 9.69 2-3.31 0-5.63 3.38 0 1.19-2-5.31 0zm8.75 3.06-2 3.31 0 5.63-3.38 0-1.19 2 5.31 0c0.68 0 1.25-0.57 1.25-1.25l0-9.69z" stroke-width="2"
+/><path d="m10.75 140.75 10.5-17.5" fill="none" stroke="#000" stroke-width="2"
+/><path d="m46 128 7 0 0 8-7 0 0-8zm9-2-14 0 0 12 14 0 0-12z"/></svg
+>
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/src/svg2png.hashes b/Source/devtools/front_end/Images/src/svg2png.hashes
new file mode 100644
index 0000000..bee5f0f
--- /dev/null
+++ b/Source/devtools/front_end/Images/src/svg2png.hashes
@@ -0,0 +1,6 @@
+{
+ "statusbarButtonGlyphs.svg": "d39a8a0f4e920be140d74419e17eb6c9",
+ "breakpoint.svg": "69cd92d807259c022791112809b97799",
+ "settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485",
+ "breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28"
+}
\ No newline at end of file
diff --git a/Source/devtools/front_end/Images/statusbarButtonGlyphs.png b/Source/devtools/front_end/Images/statusbarButtonGlyphs.png
index c58a9c5..7447e71 100644
--- a/Source/devtools/front_end/Images/statusbarButtonGlyphs.png
+++ b/Source/devtools/front_end/Images/statusbarButtonGlyphs.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png b/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png
deleted file mode 100644
index ad4a5b2..0000000
--- a/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png b/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png
new file mode 100644
index 0000000..873377e
--- /dev/null
+++ b/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillBlue.png b/Source/devtools/front_end/Images/timelineHollowPillBlue.png
deleted file mode 100644
index ed68e45..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillBlue.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillGray.png b/Source/devtools/front_end/Images/timelineHollowPillGray.png
deleted file mode 100644
index 12a6662..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillGray.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillGreen.png b/Source/devtools/front_end/Images/timelineHollowPillGreen.png
deleted file mode 100644
index 7b31b9e..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillGreen.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillOrange.png b/Source/devtools/front_end/Images/timelineHollowPillOrange.png
deleted file mode 100644
index b76928e..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillOrange.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillPurple.png b/Source/devtools/front_end/Images/timelineHollowPillPurple.png
deleted file mode 100644
index ce56400..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillPurple.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillRed.png b/Source/devtools/front_end/Images/timelineHollowPillRed.png
deleted file mode 100644
index 5cc45b8..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillRed.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelineHollowPillYellow.png b/Source/devtools/front_end/Images/timelineHollowPillYellow.png
deleted file mode 100644
index b62f774..0000000
--- a/Source/devtools/front_end/Images/timelineHollowPillYellow.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillBlue.png b/Source/devtools/front_end/Images/timelinePillBlue.png
deleted file mode 100644
index ad4821d..0000000
--- a/Source/devtools/front_end/Images/timelinePillBlue.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillGray.png b/Source/devtools/front_end/Images/timelinePillGray.png
deleted file mode 100644
index 4b4d182..0000000
--- a/Source/devtools/front_end/Images/timelinePillGray.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillGreen.png b/Source/devtools/front_end/Images/timelinePillGreen.png
deleted file mode 100644
index e6a62a8..0000000
--- a/Source/devtools/front_end/Images/timelinePillGreen.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillOrange.png b/Source/devtools/front_end/Images/timelinePillOrange.png
deleted file mode 100644
index 76c9f56..0000000
--- a/Source/devtools/front_end/Images/timelinePillOrange.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillPurple.png b/Source/devtools/front_end/Images/timelinePillPurple.png
deleted file mode 100644
index b82cbd8..0000000
--- a/Source/devtools/front_end/Images/timelinePillPurple.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillRed.png b/Source/devtools/front_end/Images/timelinePillRed.png
deleted file mode 100644
index d8359fd..0000000
--- a/Source/devtools/front_end/Images/timelinePillRed.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/Images/timelinePillYellow.png b/Source/devtools/front_end/Images/timelinePillYellow.png
deleted file mode 100644
index a5e0d8f..0000000
--- a/Source/devtools/front_end/Images/timelinePillYellow.png
+++ /dev/null
Binary files differ
diff --git a/Source/devtools/front_end/IndexedDBModel.js b/Source/devtools/front_end/IndexedDBModel.js
index 3bec5b1..aa9ec16 100644
--- a/Source/devtools/front_end/IndexedDBModel.js
+++ b/Source/devtools/front_end/IndexedDBModel.js
@@ -266,6 +266,7 @@
/**
* @param {?Protocol.Error} error
* @param {!Array.<string>} databaseNames
+ * @this {WebInspector.IndexedDBModel}
*/
function callback(error, databaseNames)
{
@@ -290,6 +291,7 @@
/**
* @param {?Protocol.Error} error
* @param {!IndexedDBAgent.DatabaseWithObjectStores} databaseWithObjectStores
+ * @this {WebInspector.IndexedDBModel}
*/
function callback(error, databaseWithObjectStores)
{
@@ -364,6 +366,7 @@
* @param {?Protocol.Error} error
* @param {!Array.<!IndexedDBAgent.DataEntry>} dataEntries
* @param {boolean} hasMore
+ * @this {WebInspector.IndexedDBModel}
*/
function innerCallback(error, dataEntries, hasMore)
{
@@ -376,9 +379,9 @@
return;
var entries = [];
for (var i = 0; i < dataEntries.length; ++i) {
- var key = WebInspector.RemoteObject.fromPayload(dataEntries[i].key);
- var primaryKey = WebInspector.RemoteObject.fromPayload(dataEntries[i].primaryKey);
- var value = WebInspector.RemoteObject.fromPayload(dataEntries[i].value);
+ var key = WebInspector.RemoteObject.fromLocalObject(JSON.parse(dataEntries[i].key));
+ var primaryKey = WebInspector.RemoteObject.fromLocalObject(JSON.parse(dataEntries[i].primaryKey));
+ var value = WebInspector.RemoteObject.fromLocalObject(JSON.parse(dataEntries[i].value));
entries.push(new WebInspector.IndexedDBModel.Entry(key, primaryKey, value));
}
callback(entries, hasMore);
@@ -418,6 +421,7 @@
WebInspector.IndexedDBModel.DatabaseId.prototype = {
/**
* @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId
+ * @return {boolean}
*/
equals: function(databaseId)
{
diff --git a/Source/devtools/front_end/IndexedDBViews.js b/Source/devtools/front_end/IndexedDBViews.js
index 8c9c7a2..bc15f65 100644
--- a/Source/devtools/front_end/IndexedDBViews.js
+++ b/Source/devtools/front_end/IndexedDBViews.js
@@ -38,7 +38,6 @@
WebInspector.View.call(this);
this.registerRequiredCSS("indexedDBViews.css");
- this.element.classList.add("fill");
this.element.classList.add("indexed-db-database-view");
this._headersListElement = this.element.createChild("ol", "outline-disclosure");
@@ -318,6 +317,7 @@
/**
* @param {!Array.<!WebInspector.IndexedDBModel.Entry>} entries
* @param {boolean} hasMore
+ * @this {WebInspector.IDBDataView}
*/
function callback(entries, hasMore)
{
@@ -354,6 +354,9 @@
_clearButtonClicked: function(event)
{
+ /**
+ * @this {WebInspector.IDBDataView}
+ */
function cleared() {
this._clearButton.setEnabled(true);
this._updateData(true);
diff --git a/Source/devtools/front_end/InplaceEditor.js b/Source/devtools/front_end/InplaceEditor.js
new file mode 100644
index 0000000..655ea88
--- /dev/null
+++ b/Source/devtools/front_end/InplaceEditor.js
@@ -0,0 +1,261 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @constructor
+ */
+WebInspector.InplaceEditor = function()
+{
+};
+
+/**
+ * @param {!Element} element
+ * @param {!WebInspector.InplaceEditor.Config=} config
+ * @return {?{cancel: function(), commit: function(), setWidth: function(number)}}
+ */
+WebInspector.InplaceEditor.startEditing = function(element, config)
+{
+ if (config.multiline)
+ return WebInspector.moduleManager.instance(WebInspector.InplaceEditor).startEditing(element, config);
+
+ if (!WebInspector.InplaceEditor._defaultInstance)
+ WebInspector.InplaceEditor._defaultInstance = new WebInspector.InplaceEditor();
+ return WebInspector.InplaceEditor._defaultInstance.startEditing(element, config);
+}
+
+WebInspector.InplaceEditor.prototype = {
+ /**
+ * @return {string}
+ */
+ editorContent: function(editingContext) {
+ var element = editingContext.element;
+ if (element.tagName === "INPUT" && element.type === "text")
+ return element.value;
+
+ return element.textContent;
+ },
+
+ setUpEditor: function(editingContext)
+ {
+ var element = editingContext.element;
+ element.classList.add("editing");
+
+ var oldTabIndex = element.getAttribute("tabIndex");
+ if (typeof oldTabIndex !== "number" || oldTabIndex < 0)
+ element.tabIndex = 0;
+ WebInspector.setCurrentFocusElement(element);
+ editingContext.oldTabIndex = oldTabIndex;
+ },
+
+ closeEditor: function(editingContext)
+ {
+ var element = editingContext.element;
+ element.classList.remove("editing");
+
+ if (typeof editingContext.oldTabIndex !== "number")
+ element.removeAttribute("tabIndex");
+ else
+ element.tabIndex = editingContext.oldTabIndex;
+ element.scrollTop = 0;
+ element.scrollLeft = 0;
+ },
+
+ cancelEditing: function(editingContext)
+ {
+ var element = editingContext.element;
+ if (element.tagName === "INPUT" && element.type === "text")
+ element.value = editingContext.oldText;
+ else
+ element.textContent = editingContext.oldText;
+ },
+
+ augmentEditingHandle: function(editingContext, handle)
+ {
+ },
+
+ /**
+ * @param {!Element} element
+ * @param {!WebInspector.InplaceEditor.Config=} config
+ * @return {?{cancel: function(), commit: function()}}
+ */
+ startEditing: function(element, config)
+ {
+ if (!WebInspector.markBeingEdited(element, true))
+ return null;
+
+ config = config || new WebInspector.InplaceEditor.Config(function() {}, function() {});
+ var editingContext = { element: element, config: config };
+ var committedCallback = config.commitHandler;
+ var cancelledCallback = config.cancelHandler;
+ var pasteCallback = config.pasteHandler;
+ var context = config.context;
+ var isMultiline = config.multiline || false;
+ var moveDirection = "";
+ var self = this;
+
+ /**
+ * @param {?Event} e
+ */
+ function consumeCopy(e)
+ {
+ e.consume();
+ }
+
+ this.setUpEditor(editingContext);
+
+ editingContext.oldText = isMultiline ? config.initialValue : this.editorContent(editingContext);
+
+ /**
+ * @param {?Event=} e
+ */
+ function blurEventListener(e) {
+ if (!isMultiline || !e || !e.relatedTarget || !e.relatedTarget.isSelfOrDescendant(element))
+ editingCommitted.call(element);
+ }
+
+ /** @this {Element} */
+ function cleanUpAfterEditing()
+ {
+ WebInspector.markBeingEdited(element, false);
+
+ element.removeEventListener("blur", blurEventListener, isMultiline);
+ element.removeEventListener("keydown", keyDownEventListener, true);
+ if (pasteCallback)
+ element.removeEventListener("paste", pasteEventListener, true);
+
+ WebInspector.restoreFocusFromElement(element);
+ self.closeEditor(editingContext);
+ }
+
+ /** @this {Element} */
+ function editingCancelled()
+ {
+ self.cancelEditing(editingContext);
+ cleanUpAfterEditing.call(this);
+ cancelledCallback(this, context);
+ }
+
+ /** @this {Element} */
+ function editingCommitted()
+ {
+ cleanUpAfterEditing.call(this);
+
+ committedCallback(this, self.editorContent(editingContext), editingContext.oldText, context, moveDirection);
+ }
+
+ function defaultFinishHandler(event)
+ {
+ var isMetaOrCtrl = WebInspector.isMac() ?
+ event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey :
+ event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey;
+ if (isEnterKey(event) && (event.isMetaOrCtrlForTest || !isMultiline || isMetaOrCtrl))
+ return "commit";
+ else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code || event.keyIdentifier === "U+001B")
+ return "cancel";
+ else if (!isMultiline && event.keyIdentifier === "U+0009") // Tab key
+ return "move-" + (event.shiftKey ? "backward" : "forward");
+ }
+
+ function handleEditingResult(result, event)
+ {
+ if (result === "commit") {
+ editingCommitted.call(element);
+ event.consume(true);
+ } else if (result === "cancel") {
+ editingCancelled.call(element);
+ event.consume(true);
+ } else if (result && result.startsWith("move-")) {
+ moveDirection = result.substring(5);
+ if (event.keyIdentifier !== "U+0009")
+ blurEventListener();
+ }
+ }
+
+ function pasteEventListener(event)
+ {
+ var result = pasteCallback(event);
+ handleEditingResult(result, event);
+ }
+
+ function keyDownEventListener(event)
+ {
+ var handler = config.customFinishHandler || defaultFinishHandler;
+ var result = handler(event);
+ handleEditingResult(result, event);
+ }
+
+ element.addEventListener("blur", blurEventListener, isMultiline);
+ element.addEventListener("keydown", keyDownEventListener, true);
+ if (pasteCallback)
+ element.addEventListener("paste", pasteEventListener, true);
+
+ var handle = {
+ cancel: editingCancelled.bind(element),
+ commit: editingCommitted.bind(element)
+ };
+ this.augmentEditingHandle(editingContext, handle);
+ return handle;
+ }
+}
+
+/**
+ * @constructor
+ * @param {function(!Element,string,string,T,string)} commitHandler
+ * @param {function(!Element,T)} cancelHandler
+ * @param {T=} context
+ * @template T
+ */
+WebInspector.InplaceEditor.Config = function(commitHandler, cancelHandler, context)
+{
+ this.commitHandler = commitHandler;
+ this.cancelHandler = cancelHandler
+ this.context = context;
+
+ /**
+ * Handles the "paste" event, return values are the same as those for customFinishHandler
+ * @type {function(!Element)|undefined}
+ */
+ this.pasteHandler;
+
+ /**
+ * Whether the edited element is multiline
+ * @type {boolean|undefined}
+ */
+ this.multiline;
+
+ /**
+ * Custom finish handler for the editing session (invoked on keydown)
+ * @type {function(!Element,*)|undefined}
+ */
+ this.customFinishHandler;
+}
+
+WebInspector.InplaceEditor.Config.prototype = {
+ setPasteHandler: function(pasteHandler)
+ {
+ this.pasteHandler = pasteHandler;
+ },
+
+ /**
+ * @param {string} initialValue
+ * @param {!Object} mode
+ * @param {string} theme
+ * @param {boolean=} lineWrapping
+ * @param {boolean=} smartIndent
+ */
+ setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smartIndent)
+ {
+ this.multiline = true;
+ this.initialValue = initialValue;
+ this.mode = mode;
+ this.theme = theme;
+ this.lineWrapping = lineWrapping;
+ this.smartIndent = smartIndent;
+ },
+
+ setCustomFinishHandler: function(customFinishHandler)
+ {
+ this.customFinishHandler = customFinishHandler;
+ }
+}
diff --git a/Source/devtools/front_end/InspectElementModeController.js b/Source/devtools/front_end/InspectElementModeController.js
index 3b1c994..deb4819 100644
--- a/Source/devtools/front_end/InspectElementModeController.js
+++ b/Source/devtools/front_end/InspectElementModeController.js
@@ -42,6 +42,9 @@
}
WebInspector.InspectElementModeController.prototype = {
+ /**
+ * @return {boolean}
+ */
enabled: function()
{
return this.toggleSearchButton.toggled;
@@ -59,6 +62,7 @@
/**
* @param {?Protocol.Error} error
+ * @this {WebInspector.InspectElementModeController}
*/
function callback(error)
{
@@ -82,5 +86,5 @@
}
}
-/** @type {?WebInspector.InspectElementModeController} */
-WebInspector.inspectElementModeController = null;
+/** @type {!WebInspector.InspectElementModeController} */
+WebInspector.inspectElementModeController;
diff --git a/Source/devtools/front_end/InspectorBackend.js b/Source/devtools/front_end/InspectorBackend.js
index 98f24b9..dc22e7e 100644
--- a/Source/devtools/front_end/InspectorBackend.js
+++ b/Source/devtools/front_end/InspectorBackend.js
@@ -234,7 +234,7 @@
var domainName = method[0];
var functionName = method[1];
if (!(domainName in this._domainDispatchers)) {
- console.error("Protocol Error: the message is for non-existing domain '" + domainName + "'");
+ console.error("Protocol Error: the message " + messageObject.method + " is for non-existing domain '" + domainName + "'");
return;
}
var dispatcher = this._domainDispatchers[domainName];
@@ -302,6 +302,36 @@
var schema = JSON.parse(xhr.responseText);
var code = InspectorBackendClass._generateCommands(schema);
eval(code);
+ },
+
+ /**
+ * @param {function(T)} clientCallback
+ * @param {string} errorPrefix
+ * @param {function(new:T,S)=} constructor
+ * @param {T=} defaultValue
+ * @return {function(?string, S)}
+ * @template T,S
+ */
+ wrapClientCallback: function(clientCallback, errorPrefix, constructor, defaultValue)
+ {
+ /**
+ * @param {?string} error
+ * @param {S} value
+ * @template S
+ */
+ function callbackWrapper(error, value)
+ {
+ if (error) {
+ console.error(errorPrefix + error);
+ clientCallback(defaultValue);
+ return;
+ }
+ if (constructor)
+ clientCallback(new constructor(value));
+ else
+ clientCallback(value);
+ }
+ return callbackWrapper;
}
}
diff --git a/Source/devtools/front_end/InspectorFrontendAPI.js b/Source/devtools/front_end/InspectorFrontendAPI.js
index cecb3ae..41671dd 100644
--- a/Source/devtools/front_end/InspectorFrontendAPI.js
+++ b/Source/devtools/front_end/InspectorFrontendAPI.js
@@ -61,7 +61,7 @@
InspectorFrontendAPI._runOnceLoaded(function() {
var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(url);
if (uiSourceCode) {
- WebInspector.showPanel("sources").showUISourceCode(uiSourceCode, lineNumber, columnNumber);
+ WebInspector.Revealer.reveal(new WebInspector.UILocation(uiSourceCode, lineNumber, columnNumber));
return;
}
@@ -72,7 +72,7 @@
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
if (uiSourceCode.url === url) {
- WebInspector.showPanel("sources").showUISourceCode(uiSourceCode, lineNumber, columnNumber);
+ WebInspector.Revealer.reveal(new WebInspector.UILocation(uiSourceCode, lineNumber, columnNumber));
WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, listener);
}
}
@@ -108,17 +108,6 @@
WebInspector.ContextMenu.setUseSoftMenu(useSoftMenu);
},
- // FIXME: remove this legacy support.
- setAttachedWindow: function(side)
- {
- },
-
- // FIXME: remove this legacy support.
- setDockSide: function(side)
- {
- WebInspector.dockController.setDockSide(side);
- },
-
dispatchMessage: function(messageObject)
{
InspectorBackend.dispatch(messageObject);
diff --git a/Source/devtools/front_end/InspectorFrontendHostStub.js b/Source/devtools/front_end/InspectorFrontendHostStub.js
index 2eeca71..25b7749 100644
--- a/Source/devtools/front_end/InspectorFrontendHostStub.js
+++ b/Source/devtools/front_end/InspectorFrontendHostStub.js
@@ -28,25 +28,6 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/**
- * @param {string} methodName
- */
-function dispatchMethodByName(methodName)
-{
- var callId = ++lastCallId;
- var argsArray = Array.prototype.slice.call(arguments, 1);
- var callback = argsArray[argsArray.length - 1];
- if (typeof callback === "function") {
- argsArray.pop();
- InspectorFrontendHost._callbacks[callId] = callback;
- }
-
- var message = { "id": callId, "method": methodName };
- if (argsArray.length)
- message.params = argsArray;
- InspectorFrontendHost.sendMessageToEmbedder(JSON.stringify(message));
-}
-
if (!window.InspectorFrontendHost) {
/**
@@ -59,16 +40,25 @@
}
WebInspector.InspectorFrontendHostStub.prototype = {
+ /**
+ * @return {string}
+ */
getSelectionBackgroundColor: function()
{
return "#6e86ff";
},
+ /**
+ * @return {string}
+ */
getSelectionForegroundColor: function()
{
return "#ffffff";
},
+ /**
+ * @return {string}
+ */
platform: function()
{
var match = navigator.userAgent.match(/Windows NT/);
@@ -80,6 +70,9 @@
return "linux";
},
+ /**
+ * @return {string}
+ */
port: function()
{
return "unknown";
@@ -95,14 +88,22 @@
this._windowVisible = false;
},
- requestSetDockSide: function(side)
+ setIsDocked: function(isDocked)
{
- InspectorFrontendAPI.setDockSide(side);
},
- setWindowBounds: function(x, y, width, height, callback)
+ /**
+ * Requests inspected page to be placed atop of the inspector frontend
+ * with passed insets from the frontend sides, respecting minimum size passed.
+ * @param {{top: number, left: number, right: number, bottom: number}} insets
+ * @param {{width: number, height: number}} minSize
+ */
+ setContentsResizingStrategy: function(insets, minSize)
{
- callback();
+ },
+
+ inspectElementCompleted: function()
+ {
},
moveWindowBy: function(x, y)
@@ -113,14 +114,6 @@
{
},
- loaded: function()
- {
- },
-
- localizedStringsURL: function()
- {
- },
-
inspectedURLChanged: function(url)
{
document.title = WebInspector.UIString(Preferences.applicationTitle, url);
@@ -147,10 +140,6 @@
WebInspector.log("Saving files is not enabled in hosted mode. Please inspect using chrome://inspect", WebInspector.ConsoleMessage.MessageLevel.Error, true);
},
- close: function(url)
- {
- },
-
sendMessageToBackend: function(message)
{
},
@@ -171,11 +160,6 @@
{
},
- supportsFileSystems: function()
- {
- return false;
- },
-
requestFileSystems: function()
{
},
@@ -188,6 +172,11 @@
{
},
+ /**
+ * @param {string} fileSystemId
+ * @param {string} registeredName
+ * @return {?WebInspector.IsolatedFileSystem}
+ */
isolatedFileSystem: function(fileSystemId, registeredName)
{
return null;
@@ -213,6 +202,29 @@
{
},
+ /**
+ * @return {number}
+ */
+ zoomFactor: function()
+ {
+ return 1;
+ },
+
+ zoomIn: function()
+ {
+ },
+
+ zoomOut: function()
+ {
+ },
+
+ resetZoom: function()
+ {
+ },
+
+ /**
+ * @return {boolean}
+ */
isUnderTest: function()
{
return false;
@@ -221,59 +233,4 @@
InspectorFrontendHost = new WebInspector.InspectorFrontendHostStub();
-} else if (InspectorFrontendHost.sendMessageToEmbedder) {
- // Install message-based handlers with callbacks.
- var lastCallId = 0;
- InspectorFrontendHost._callbacks = [];
-
- /**
- * @param {number} id
- * @param {?string} error
- */
- InspectorFrontendHost.embedderMessageAck = function(id, error)
- {
- var callback = InspectorFrontendHost._callbacks[id];
- delete InspectorFrontendHost._callbacks[id];
- if (callback)
- callback(error);
- }
-
- var methodList = [
- "addFileSystem",
- "append",
- "bringToFront",
- "closeWindow",
- "indexPath",
- "moveWindowBy",
- "openInNewTab",
- "removeFileSystem",
- "requestFileSystems",
- "requestSetDockSide",
- "save",
- "searchInPath",
- "setWindowBounds",
- "stopIndexing"
- ];
-
- for (var i = 0; i < methodList.length; ++i)
- InspectorFrontendHost[methodList[i]] = dispatchMethodByName.bind(null, methodList[i]);
-}
-
-/**
- * @constructor
- * @extends {WebInspector.HelpScreen}
- */
-WebInspector.RemoteDebuggingTerminatedScreen = function(reason)
-{
- WebInspector.HelpScreen.call(this, WebInspector.UIString("Detached from the target"));
- var p = this.contentElement.createChild("p");
- p.classList.add("help-section");
- p.createChild("span").textContent = "Remote debugging has been terminated with reason: ";
- p.createChild("span", "error-message").textContent = reason;
- p.createChild("br");
- p.createChild("span").textContent = "Please re-attach to the new target.";
-}
-
-WebInspector.RemoteDebuggingTerminatedScreen.prototype = {
- __proto__: WebInspector.HelpScreen.prototype
}
diff --git a/Source/devtools/front_end/InspectorView.js b/Source/devtools/front_end/InspectorView.js
index 6423760..4aa2e04 100644
--- a/Source/devtools/front_end/InspectorView.js
+++ b/Source/devtools/front_end/InspectorView.js
@@ -36,26 +36,58 @@
{
WebInspector.View.call(this);
this.markAsRoot();
- this.element.classList.add("fill", "vbox", "inspector-view");
+ this.element.classList.add("fill", "inspector-view");
this.element.setAttribute("spellcheck", false);
+ window.addEventListener("resize", this._onWindowResize.bind(this), true);
+ WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.ZoomChanged, this._onZoomChanged, this);
+
+ // We can use split view either for docking or screencast, but not together.
+ var settingName = WebInspector.queryParamsObject["can_dock"] ? "InspectorView.splitView" : "InspectorView.screencastSplitView";
+ this._splitView = new WebInspector.SplitView(false, true, settingName, 300, 300);
+ this._updateConstraints();
+ WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._updateSplitView.bind(this));
+
+ this._splitView.element.id = "inspector-split-view";
+ this._splitView.show(this.element);
+
+ // Main part of main split is overlay view.
+ this._overlayView = new WebInspector.InspectorView.OverlayView(this._splitView);
+ this._overlayView.show(this._splitView.mainElement());
+
+ // Sidebar of main split is artificial element used for positioning.
+ this._devtoolsView = new WebInspector.ViewWithResizeCallback(this._onDevToolsViewResized.bind(this));
+ this._devtoolsView.show(this._splitView.sidebarElement());
+
+ // DevTools sidebar is a vertical split of panels tabbed pane and a drawer.
+ this._drawerSplitView = new WebInspector.SplitView(false, true, "Inspector.drawerSplitView", 200, 200);
+ this._drawerSplitView.setSidebarElementConstraints(Preferences.minDrawerHeight, Preferences.minDrawerHeight);
+ this._drawerSplitView.setMainElementConstraints(25, 25);
+ this._drawerSplitView.show(this._devtoolsView.element);
+
this._tabbedPane = new WebInspector.TabbedPane();
- this._tabbedPane.setRetainTabsOrder(true);
- this._tabbedPane.show(this.element);
+ this._tabbedPane.setRetainTabOrder(true, WebInspector.moduleManager.orderComparator(WebInspector.Panel, "name", "order"));
+ this._tabbedPane.show(this._drawerSplitView.mainElement());
+ this._drawer = new WebInspector.Drawer(this._drawerSplitView);
- var toolbarElement = document.createElement("div");
- toolbarElement.className = "toolbar toolbar-background";
+ // Patch tabbed pane header with toolbar actions.
+ this._toolbarElement = document.createElement("div");
+ this._toolbarElement.className = "toolbar toolbar-background";
var headerElement = this._tabbedPane.headerElement();
- headerElement.parentElement.insertBefore(toolbarElement, headerElement);
+ headerElement.parentElement.insertBefore(this._toolbarElement, headerElement);
- this._leftToolbarElement = toolbarElement.createChild("div", "toolbar-controls-left");
- toolbarElement.appendChild(headerElement);
- this._rightToolbarElement = toolbarElement.createChild("div", "toolbar-controls-right");
+ this._leftToolbarElement = this._toolbarElement.createChild("div", "toolbar-controls-left");
+ this._toolbarElement.appendChild(headerElement);
+ this._rightToolbarElement = this._toolbarElement.createChild("div", "toolbar-controls-right");
this._errorWarningCountElement = this._rightToolbarElement.createChild("div", "hidden");
this._errorWarningCountElement.id = "error-warning-count";
- this._drawer = new WebInspector.Drawer(this);
+ this._closeButtonToolbarItem = document.createElementWithClass("div", "toolbar-close-button-item");
+ var closeButtonElement = this._closeButtonToolbarItem.createChild("div", "close-button");
+ closeButtonElement.addEventListener("click", WebInspector.close.bind(WebInspector), true);
+ this._rightToolbarElement.appendChild(this._closeButtonToolbarItem);
+
this.appendToRightToolbar(this._drawer.toggleButtonElement());
this._history = [];
@@ -68,9 +100,39 @@
this._openBracketIdentifiers = ["U+005B", "U+00DB"].keySet();
this._closeBracketIdentifiers = ["U+005D", "U+00DD"].keySet();
this._lastActivePanelSetting = WebInspector.settings.createSetting("lastActivePanel", "elements");
+
+ this._updateSplitView();
+
+ this._loadPanelDesciptors();
}
+WebInspector.InspectorView.Constraints = {
+ OverlayWidth: 50,
+ OverlayHeight: 50,
+ DevToolsWidth: 180,
+ DevToolsHeight: 50
+};
+
+WebInspector.InspectorView.Events = {
+ DevToolsElementBoundingBoxChanged: "DevToolsElementBoundingBoxChanged"
+};
+
WebInspector.InspectorView.prototype = {
+ _loadPanelDesciptors: function()
+ {
+ WebInspector.startBatchUpdate();
+ WebInspector.moduleManager.extensions(WebInspector.Panel).forEach(processPanelExtensions.bind(this));
+ /**
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @this {!WebInspector.InspectorView}
+ */
+ function processPanelExtensions(extension)
+ {
+ this.addPanel(new WebInspector.ModuleManagerExtensionPanelDescriptor(extension));
+ }
+ WebInspector.endBatchUpdate();
+ },
+
/**
* @param {!Element} element
*/
@@ -84,15 +146,15 @@
*/
appendToRightToolbar: function(element)
{
- this._rightToolbarElement.appendChild(element);
+ this._rightToolbarElement.insertBefore(element, this._closeButtonToolbarItem);
},
/**
- * @return {!WebInspector.Drawer}
+ * @return {!Element}
*/
- drawer: function()
+ devtoolsElement: function()
{
- return this._drawer;
+ return this._devtoolsView.element;
},
/**
@@ -177,7 +239,7 @@
*/
closeViewInDrawer: function(id)
{
- return this._drawer.closeView(id);
+ this._drawer.closeView(id);
},
/**
@@ -190,30 +252,26 @@
this._drawer.showCloseableView(id, title, view);
},
- /**
- * @param {string} id
- * @param {string} title
- * @param {!WebInspector.ViewFactory} factory
- */
- registerViewInDrawer: function(id, title, factory)
+ showDrawer: function()
{
- this._drawer.registerView(id, title, factory);
+ this._drawer.showDrawer();
+ },
+
+ /**
+ * @return {boolean}
+ */
+ drawerVisible: function()
+ {
+ return this._drawer.isShowing();
},
/**
* @param {string} id
+ * @param {boolean=} immediate
*/
- unregisterViewInDrawer: function(id)
+ showViewInDrawer: function(id, immediate)
{
- this._drawer.unregisterView(id);
- },
-
- /**
- * @param {string} id
- */
- showViewInDrawer: function(id)
- {
- this._drawer.showView(id);
+ this._drawer.showView(id, immediate);
},
/**
@@ -226,7 +284,7 @@
closeDrawer: function()
{
- this._drawer.hide();
+ this._drawer.closeDrawer();
},
/**
@@ -252,15 +310,23 @@
if (!WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event))
return;
+ var keyboardEvent = /** @type {!KeyboardEvent} */ (event);
// Ctrl/Cmd + 1-9 should show corresponding panel.
var panelShortcutEnabled = WebInspector.settings.shortcutPanelSwitch.get();
- if (panelShortcutEnabled && !event.shiftKey && !event.altKey && event.keyCode > 0x30 && event.keyCode < 0x3A) {
- var panelName = this._tabbedPane.allTabs()[event.keyCode - 0x31];
- if (panelName) {
- this.showPanel(panelName);
- event.consume(true);
+ if (panelShortcutEnabled && !event.shiftKey && !event.altKey) {
+ var panelIndex = -1;
+ if (event.keyCode > 0x30 && event.keyCode < 0x3A)
+ panelIndex = event.keyCode - 0x31;
+ else if (event.keyCode > 0x60 && event.keyCode < 0x6A && keyboardEvent.location === KeyboardEvent.DOM_KEY_LOCATION_NUMPAD)
+ panelIndex = event.keyCode - 0x61;
+ if (panelIndex !== -1) {
+ var panelName = this._tabbedPane.allTabs()[panelIndex];
+ if (panelName) {
+ this.showPanel(panelName);
+ event.consume(true);
+ }
+ return;
}
- return;
}
// BUG85312: On French AZERTY keyboards, AltGr-]/[ combinations (synonymous to Ctrl-Alt-]/[ on Windows) are used to enter ]/[,
@@ -350,17 +416,215 @@
this._historyIterator = this._history.length - 1;
},
+ _onDevToolsViewResized: function()
+ {
+ this.dispatchEventToListeners(WebInspector.InspectorView.Events.DevToolsElementBoundingBoxChanged);
+ },
+
+ _onWindowResize: function()
+ {
+ this.doResize();
+ },
+
+ _updateSplitView: function()
+ {
+ var dockSide = WebInspector.dockController.dockSide();
+ if (dockSide !== WebInspector.DockController.State.Undocked) {
+ var vertical = WebInspector.dockController.isVertical();
+ this._splitView.setVertical(vertical);
+ if (vertical) {
+ // Docked to side.
+ if (dockSide === WebInspector.DockController.State.DockedToRight)
+ this._overlayView.setMargins(false, true, false, false);
+ else
+ this._overlayView.setMargins(false, false, false, true);
+ this._splitView.setSecondIsSidebar(dockSide === WebInspector.DockController.State.DockedToRight);
+ this._splitView.uninstallResizer(this._tabbedPane.headerElement());
+ this._splitView.installResizer(this._splitView.resizerElement());
+ } else {
+ // Docked to bottom.
+ this._overlayView.setMargins(false, false, false, false);
+ this._splitView.setSecondIsSidebar(true);
+ this._splitView.installResizer(this._splitView.resizerElement());
+ this._splitView.installResizer(this._tabbedPane.headerElement());
+ }
+ this._splitView.showBoth();
+ } else {
+ this._overlayView.setMargins(false, false, false, false);
+ this._splitView.hideMain();
+ this._splitView.uninstallResizer(this._tabbedPane.headerElement());
+ this._splitView.uninstallResizer(this._splitView.resizerElement());
+ }
+ },
+
+ _onZoomChanged: function(event)
+ {
+ this._updateConstraints();
+ var data = /** @type {{from: number, to: number}} */ (event.data);
+ this._splitView.setSidebarSize(this._splitView.sidebarSize() * data.from / data.to, true);
+ this._overlayView.updateMargins();
+ },
+
+ _updateConstraints: function()
+ {
+ var zoomFactor = WebInspector.zoomManager.zoomFactor();
+ this._splitView.setSidebarElementConstraints(WebInspector.InspectorView.Constraints.DevToolsWidth / zoomFactor,
+ WebInspector.InspectorView.Constraints.DevToolsHeight / zoomFactor);
+ this._splitView.setMainElementConstraints(WebInspector.InspectorView.Constraints.OverlayWidth / zoomFactor,
+ WebInspector.InspectorView.Constraints.OverlayHeight / zoomFactor);
+ },
+
+ /**
+ * @param {!WebInspector.View} view
+ * @param {boolean} vertical
+ */
+ showScreencastView: function(view, vertical)
+ {
+ if (view.parentView() !== this._overlayView)
+ view.show(this._overlayView.element);
+ this._splitView.setVertical(vertical);
+ this._splitView.installResizer(this._splitView.resizerElement());
+ this._splitView.showBoth();
+ },
+
+ hideScreencastView: function()
+ {
+ this._splitView.hideMain();
+ },
+
+ /**
+ * @param {number} errors
+ * @param {number} warnings
+ */
+ setErrorAndWarningCounts: function(errors, warnings)
+ {
+ if (!errors && !warnings) {
+ this._errorWarningCountElement.classList.add("hidden");
+ this._tabbedPane.headerResized();
+ return;
+ }
+
+ this._errorWarningCountElement.classList.remove("hidden");
+ this._errorWarningCountElement.removeChildren();
+
+ if (errors) {
+ var errorImageElement = this._errorWarningCountElement.createChild("div", "error-icon-small");
+ var errorElement = this._errorWarningCountElement.createChild("span");
+ errorElement.id = "error-count";
+ errorElement.textContent = errors;
+ }
+
+ if (warnings) {
+ var warningsImageElement = this._errorWarningCountElement.createChild("div", "warning-icon-small");
+ var warningsElement = this._errorWarningCountElement.createChild("span");
+ warningsElement.id = "warning-count";
+ warningsElement.textContent = warnings;
+ }
+
+ if (errors) {
+ if (warnings) {
+ if (errors == 1) {
+ if (warnings == 1)
+ this._errorWarningCountElement.title = WebInspector.UIString("%d error, %d warning", errors, warnings);
+ else
+ this._errorWarningCountElement.title = WebInspector.UIString("%d error, %d warnings", errors, warnings);
+ } else if (warnings == 1)
+ this._errorWarningCountElement.title = WebInspector.UIString("%d errors, %d warning", errors, warnings);
+ else
+ this._errorWarningCountElement.title = WebInspector.UIString("%d errors, %d warnings", errors, warnings);
+ } else if (errors == 1)
+ this._errorWarningCountElement.title = WebInspector.UIString("%d error", errors);
+ else
+ this._errorWarningCountElement.title = WebInspector.UIString("%d errors", errors);
+ } else if (warnings == 1)
+ this._errorWarningCountElement.title = WebInspector.UIString("%d warning", warnings);
+ else if (warnings)
+ this._errorWarningCountElement.title = WebInspector.UIString("%d warnings", warnings);
+ else
+ this._errorWarningCountElement.title = null;
+
+ this._tabbedPane.headerResized();
+ },
+
+ __proto__: WebInspector.View.prototype
+};
+
+/**
+ * @constructor
+ * @param {!WebInspector.SplitView} splitView
+ * @extends {WebInspector.View}
+ */
+WebInspector.InspectorView.OverlayView = function(splitView)
+{
+ WebInspector.View.call(this);
+ this._margins = {top: 0, left: 0, right: 0, bottom: 0};
+ this._splitView = splitView;
+}
+
+WebInspector.InspectorView.OverlayView.prototype = {
+ /**
+ * @param {boolean} top
+ * @param {boolean} right
+ * @param {boolean} bottom
+ * @param {boolean} left
+ */
+ setMargins: function(top, right, bottom, left)
+ {
+ this._margins = { top: top, right: right, bottom: bottom, left: left };
+ this.updateMargins();
+ },
+
+ updateMargins: function()
+ {
+ var marginValue = Math.round(3 / WebInspector.zoomManager.zoomFactor()) + "px ";
+ var margins = this._margins.top ? marginValue : "0 ";
+ margins += this._margins.right ? marginValue : "0 ";
+ margins += this._margins.bottom ? marginValue : "0 ";
+ margins += this._margins.left ? marginValue : "0 ";
+ this.element.style.margin = margins;
+ },
+
onResize: function()
{
- // FIXME: make drawer a view.
- this.doResize();
- this._drawer.resize();
+ var dockSide = WebInspector.dockController.dockSide();
+ if (dockSide !== WebInspector.DockController.State.Undocked) {
+ if (this._setContentsInsetsId)
+ window.cancelAnimationFrame(this._setContentsInsetsId);
+ this._setContentsInsetsId = window.requestAnimationFrame(this._setContentsInsets.bind(this));
+ }
+ },
+
+ _setContentsInsets: function()
+ {
+ delete this._setContentsInsetsId;
+
+ var zoomFactor = WebInspector.zoomManager.zoomFactor();
+ var marginValue = Math.round(3 / zoomFactor);
+ var insets = {
+ top: this._margins.top ? marginValue : 0,
+ left: this._margins.left ? marginValue : 0,
+ right: this._margins.right ? marginValue : 0,
+ bottom: this._margins.bottom ? marginValue : 0};
+
+ var minSize = {
+ width: WebInspector.InspectorView.Constraints.OverlayWidth - Math.round(insets.left * zoomFactor) - Math.round(insets.right * zoomFactor),
+ height: WebInspector.InspectorView.Constraints.OverlayHeight - Math.round(insets.top * zoomFactor) - Math.round(insets.bottom * zoomFactor)};
+
+ insets[this._splitView.sidebarSide()] += this._splitView.desiredSidebarSize();
+
+ var zoomedInsets = {
+ top: Math.round(insets.top * zoomFactor),
+ left: Math.round(insets.left * zoomFactor),
+ bottom: Math.round(insets.bottom * zoomFactor),
+ right: Math.round(insets.right * zoomFactor)};
+
+ InspectorFrontendHost.setContentsResizingStrategy(zoomedInsets, minSize);
},
__proto__: WebInspector.View.prototype
}
/**
- * @type {?WebInspector.InspectorView}
+ * @type {!WebInspector.InspectorView}
*/
-WebInspector.inspectorView = null;
+WebInspector.inspectorView;
diff --git a/Source/devtools/front_end/IsolatedFileSystem.js b/Source/devtools/front_end/IsolatedFileSystem.js
index ffa14eb..67a8050 100644
--- a/Source/devtools/front_end/IsolatedFileSystem.js
+++ b/Source/devtools/front_end/IsolatedFileSystem.js
@@ -61,11 +61,11 @@
msg = "INVALID_STATE_ERR";
break;
default:
- msg = "Unknown Error";
+ msg = WebInspector.UIString("Unknown Error");
break;
};
- return "File system error: " + msg;
+ return WebInspector.UIString("File system error: %s", msg);
}
WebInspector.IsolatedFileSystem.prototype = {
@@ -112,6 +112,7 @@
var domFileSystem;
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -122,6 +123,7 @@
/**
* @param {!Array.<!FileEntry>} entries
+ * @this {WebInspector.IsolatedFileSystem}
*/
function innerCallback(entries)
{
@@ -156,6 +158,7 @@
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -166,6 +169,7 @@
/**
* @param {!DirectoryEntry} dirEntry
+ * @this {WebInspector.IsolatedFileSystem}
*/
function dirEntryLoaded(dirEntry)
{
@@ -173,17 +177,20 @@
if (newFileIndex > 1)
nameCandidate += newFileIndex;
++newFileIndex;
- dirEntry.getFile(nameCandidate, { create: true, exclusive: true }, fileCreated, fileCreationError);
+ dirEntry.getFile(nameCandidate, { create: true, exclusive: true }, fileCreated, fileCreationError.bind(this));
function fileCreated(entry)
{
callback(entry.fullPath.substr(1));
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function fileCreationError(error)
{
if (error.code === FileError.INVALID_MODIFICATION_ERR) {
- dirEntryLoaded(dirEntry);
+ dirEntryLoaded.call(this, dirEntry);
return;
}
@@ -193,6 +200,9 @@
}
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function errorHandler(error)
{
var errorMessage = WebInspector.IsolatedFileSystem.errorMessage(error);
@@ -213,6 +223,7 @@
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -223,6 +234,7 @@
/**
* @param {!FileEntry} fileEntry
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileEntryLoaded(fileEntry)
{
@@ -235,6 +247,7 @@
/**
* @param {!FileError} error
+ * @this {WebInspector.IsolatedFileSystem}
*/
function errorHandler(error)
{
@@ -296,6 +309,7 @@
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -306,6 +320,7 @@
/**
* @param {!FileEntry} entry
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileEntryLoaded(entry)
{
@@ -330,6 +345,9 @@
callback(/** @type {string} */ (this.result));
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function errorHandler(error)
{
if (error.code === FileError.NOT_FOUND_ERR) {
@@ -354,6 +372,7 @@
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -364,6 +383,7 @@
/**
* @param {!FileEntry} entry
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileEntryLoaded(entry)
{
@@ -372,6 +392,7 @@
/**
* @param {!FileWriter} fileWriter
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileWriterCreated(fileWriter)
{
@@ -392,6 +413,9 @@
callback();
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function errorHandler(error)
{
var errorMessage = WebInspector.IsolatedFileSystem.errorMessage(error);
@@ -419,6 +443,7 @@
/**
* @param {?DOMFileSystem} fs
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileSystemLoaded(fs)
{
@@ -429,6 +454,7 @@
/**
* @param {!FileEntry} entry
+ * @this {WebInspector.IsolatedFileSystem}
*/
function fileEntryLoaded(entry)
{
@@ -458,6 +484,9 @@
callback(false);
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function newFileEntryLoadErrorHandler(error)
{
if (error.code !== FileError.NOT_FOUND_ERR) {
@@ -475,6 +504,9 @@
callback(true, entry.name);
}
+ /**
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function errorHandler(error)
{
var errorMessage = WebInspector.IsolatedFileSystem.errorMessage(error);
@@ -526,6 +558,10 @@
{
domFileSystem.root.getDirectory(path, null, innerCallback.bind(this), errorHandler);
+ /**
+ * @param {!DirectoryEntry} dirEntry
+ * @this {WebInspector.IsolatedFileSystem}
+ */
function innerCallback(dirEntry)
{
this._readDirectory(dirEntry, callback)
diff --git a/Source/devtools/front_end/IsolatedFileSystemManager.js b/Source/devtools/front_end/IsolatedFileSystemManager.js
index 08c3e93..b514990 100644
--- a/Source/devtools/front_end/IsolatedFileSystemManager.js
+++ b/Source/devtools/front_end/IsolatedFileSystemManager.js
@@ -39,9 +39,7 @@
/** @type {!Object.<string, !Array.<function(?DOMFileSystem)>>} */
this._pendingFileSystemRequests = {};
this._fileSystemMapping = new WebInspector.FileSystemMapping();
-
- if (this.supportsFileSystems())
- this._requestFileSystems();
+ this._requestFileSystems();
}
/** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string}} */
@@ -61,14 +59,6 @@
return this._fileSystemMapping;
},
- /**
- * @return {boolean}
- */
- supportsFileSystems: function()
- {
- return InspectorFrontendHost.supportsFileSystems();
- },
-
_requestFileSystems: function()
{
console.assert(!this._loaded);
@@ -199,9 +189,9 @@
}
/**
- * @type {?WebInspector.IsolatedFileSystemManager}
+ * @type {!WebInspector.IsolatedFileSystemManager}
*/
-WebInspector.isolatedFileSystemManager = null;
+WebInspector.isolatedFileSystemManager;
/**
* @constructor
@@ -240,6 +230,6 @@
}
/**
- * @type {?WebInspector.IsolatedFileSystemDispatcher}
+ * @type {!WebInspector.IsolatedFileSystemDispatcher}
*/
-WebInspector.isolatedFileSystemDispatcher = null;
+WebInspector.isolatedFileSystemDispatcher;
diff --git a/Source/devtools/front_end/JSHeapSnapshot.js b/Source/devtools/front_end/JSHeapSnapshot.js
index fc7a627..7e7b6ba 100644
--- a/Source/devtools/front_end/JSHeapSnapshot.js
+++ b/Source/devtools/front_end/JSHeapSnapshot.js
@@ -48,38 +48,38 @@
}
WebInspector.JSHeapSnapshot.prototype = {
- maxJsNodeId: function()
- {
- var nodeFieldCount = this._nodeFieldCount;
- var nodes = this._nodes;
- var nodesLength = nodes.length;
- var id = 0;
- for (var nodeIndex = this._nodeIdOffset; nodeIndex < nodesLength; nodeIndex += nodeFieldCount) {
- var nextId = nodes[nodeIndex];
- // JS objects have odd ids, skip native objects.
- if (nextId % 2 === 0)
- continue;
- if (id < nodes[nodeIndex])
- id = nodes[nodeIndex];
- }
- return id;
- },
-
+ /**
+ * @param {number} nodeIndex
+ * @return {!WebInspector.JSHeapSnapshotNode}
+ */
createNode: function(nodeIndex)
{
return new WebInspector.JSHeapSnapshotNode(this, nodeIndex);
},
+ /**
+ * @param {!Array.<number>} edges
+ * @param {number} edgeIndex
+ * @return {!WebInspector.JSHeapSnapshotEdge}
+ */
createEdge: function(edges, edgeIndex)
{
return new WebInspector.JSHeapSnapshotEdge(this, edges, edgeIndex);
},
+ /**
+ * @param {number} retainedNodeIndex
+ * @param {number} retainerIndex
+ * @return {!WebInspector.JSHeapSnapshotRetainerEdge}
+ */
createRetainingEdge: function(retainedNodeIndex, retainerIndex)
{
return new WebInspector.JSHeapSnapshotRetainerEdge(this, retainedNodeIndex, retainerIndex);
},
+ /**
+ * @return {function(!WebInspector.JSHeapSnapshotNode):boolean}
+ */
classNodesFilter: function()
{
function filter(node)
@@ -89,6 +89,10 @@
return filter;
},
+ /**
+ * @param {boolean} showHiddenData
+ * @return {function(!WebInspector.HeapSnapshotEdge):boolean}
+ */
containmentEdgesFilter: function(showHiddenData)
{
function filter(edge) {
@@ -101,6 +105,10 @@
return filter;
},
+ /**
+ * @param {boolean} showHiddenData
+ * @return {function(!WebInspector.HeapSnapshotEdge):boolean}
+ */
retainingEdgesFilter: function(showHiddenData)
{
var containmentEdgesFilter = this.containmentEdgesFilter(showHiddenData);
@@ -239,6 +247,9 @@
}
},
+ /**
+ * @return {!{map: !Uint32Array, flag: number}}
+ */
userObjectsMapAndFlag: function()
{
return {
@@ -401,12 +412,18 @@
}
WebInspector.JSHeapSnapshotNode.prototype = {
+ /**
+ * @return {boolean}
+ */
canBeQueried: function()
{
var flags = this._snapshot._flagsOfNode(this);
return !!(flags & this._snapshot._nodeFlags.canBeQueried);
},
+ /**
+ * @return {boolean}
+ */
isUserObject: function()
{
var flags = this._snapshot._flagsOfNode(this);
@@ -414,6 +431,9 @@
},
+ /**
+ * @return {string}
+ */
name: function() {
var snapshot = this._snapshot;
if (this._type() === snapshot._nodeConsStringType) {
@@ -474,6 +494,9 @@
return name;
},
+ /**
+ * @return {string}
+ */
className: function()
{
var type = this.type();
@@ -490,6 +513,9 @@
}
},
+ /**
+ * @return {number}
+ */
classIndex: function()
{
var snapshot = this._snapshot;
@@ -500,17 +526,26 @@
return -1 - type;
},
+ /**
+ * @return {string}
+ */
id: function()
{
var snapshot = this._snapshot;
return snapshot._nodes[this.nodeIndex + snapshot._nodeIdOffset];
},
+ /**
+ * @return {boolean}
+ */
isHidden: function()
{
return this._type() === this._snapshot._nodeHiddenType;
},
+ /**
+ * @return {boolean}
+ */
isSynthetic: function()
{
return this._type() === this._snapshot._nodeSyntheticType;
@@ -532,6 +567,9 @@
return this.isSynthetic() && this.name() === "(Document DOM trees)";
},
+ /**
+ * @return {!WebInspector.HeapSnapshotNode.Serialized}
+ */
serialize: function()
{
var result = WebInspector.HeapSnapshotNode.prototype.serialize.call(this);
@@ -559,11 +597,17 @@
}
WebInspector.JSHeapSnapshotEdge.prototype = {
+ /**
+ * @return {!WebInspector.JSHeapSnapshotEdge}
+ */
clone: function()
{
return new WebInspector.JSHeapSnapshotEdge(this._snapshot, this._edges, this.edgeIndex);
},
+ /**
+ * @return {boolean}
+ */
hasStringName: function()
{
if (!this.isShortcut())
@@ -571,36 +615,57 @@
return isNaN(parseInt(this._name(), 10));
},
+ /**
+ * @return {boolean}
+ */
isElement: function()
{
return this._type() === this._snapshot._edgeElementType;
},
+ /**
+ * @return {boolean}
+ */
isHidden: function()
{
return this._type() === this._snapshot._edgeHiddenType;
},
+ /**
+ * @return {boolean}
+ */
isWeak: function()
{
return this._type() === this._snapshot._edgeWeakType;
},
+ /**
+ * @return {boolean}
+ */
isInternal: function()
{
return this._type() === this._snapshot._edgeInternalType;
},
+ /**
+ * @return {boolean}
+ */
isInvisible: function()
{
return this._type() === this._snapshot._edgeInvisibleType;
},
+ /**
+ * @return {boolean}
+ */
isShortcut: function()
{
return this._type() === this._snapshot._edgeShortcutType;
},
+ /**
+ * @return {string}
+ */
name: function()
{
if (!this.isShortcut())
@@ -609,6 +674,9 @@
return isNaN(numName) ? this._name() : numName;
},
+ /**
+ * @return {string}
+ */
toString: function()
{
var name = this.name();
@@ -633,7 +701,7 @@
_hasStringName: function()
{
- return !this.isElement() && !this.isHidden() && !this.isWeak();
+ return !this.isElement() && !this.isHidden();
},
_name: function()
@@ -666,31 +734,49 @@
}
WebInspector.JSHeapSnapshotRetainerEdge.prototype = {
+ /**
+ * @return {!WebInspector.JSHeapSnapshotRetainerEdge}
+ */
clone: function()
{
return new WebInspector.JSHeapSnapshotRetainerEdge(this._snapshot, this._retainedNodeIndex, this.retainerIndex());
},
+ /**
+ * @return {boolean}
+ */
isHidden: function()
{
return this._edge().isHidden();
},
+ /**
+ * @return {boolean}
+ */
isInternal: function()
{
return this._edge().isInternal();
},
+ /**
+ * @return {boolean}
+ */
isInvisible: function()
{
return this._edge().isInvisible();
},
+ /**
+ * @return {boolean}
+ */
isShortcut: function()
{
return this._edge().isShortcut();
},
+ /**
+ * @return {boolean}
+ */
isWeak: function()
{
return this._edge().isWeak();
diff --git a/Source/devtools/front_end/JavaScriptFormatter.js b/Source/devtools/front_end/JavaScriptFormatter.js
index 79a4a0b..0d41c27 100644
--- a/Source/devtools/front_end/JavaScriptFormatter.js
+++ b/Source/devtools/front_end/JavaScriptFormatter.js
@@ -49,7 +49,7 @@
},
/**
- * @return {string}
+ * @return {number}
*/
_peek: function()
{
@@ -57,7 +57,7 @@
},
/**
- * @return {string}
+ * @return {number}
*/
_next: function()
{
@@ -72,7 +72,7 @@
},
/**
- * @param {string} token
+ * @param {number} token
*/
_consume: function(token)
{
@@ -82,7 +82,7 @@
},
/**
- * @param {string} token
+ * @param {number} token
*/
_expect: function(token)
{
@@ -106,7 +106,7 @@
},
/**
- * @param {string} endToken
+ * @param {number} endToken
*/
_parseSourceElements: function(endToken)
{
@@ -1001,6 +1001,7 @@
/**
* @param {boolean=} forceRegexp
+ * @return {!{comments_before: !Array.<string>, line: number, pos: number, endLine: number, nlb: boolean, token: number, type: string, value: *}}
*/
next: function(forceRegexp)
{
@@ -1011,6 +1012,9 @@
return uglifyToken;
},
+ /**
+ * @return {number}
+ */
_convertUglifyToken: function(uglifyToken)
{
var token = FormatterWorker.JavaScriptTokensByType[uglifyToken.type];
diff --git a/Source/devtools/front_end/JavaScriptSourceFrame.js b/Source/devtools/front_end/JavaScriptSourceFrame.js
index d3174f2..dd1e885 100644
--- a/Source/devtools/front_end/JavaScriptSourceFrame.js
+++ b/Source/devtools/front_end/JavaScriptSourceFrame.js
@@ -72,7 +72,7 @@
WebInspector.JavaScriptSourceFrame.prototype = {
_registerShortcuts: function()
{
- var shortcutKeys = WebInspector.SourcesPanelDescriptor.ShortcutKeys;
+ var shortcutKeys = WebInspector.ShortcutsScreen.SourcesPanelShortcuts;
for (var i = 0; i < shortcutKeys.EvaluateSelectionInConsole.length; ++i) {
var keyDescriptor = shortcutKeys.EvaluateSelectionInConsole[i];
this.addShortcut(keyDescriptor.key, this._evaluateSelectionInConsole.bind(this));
@@ -131,11 +131,10 @@
populateLineGutterContextMenu: function(contextMenu, lineNumber)
{
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Continue to here" : "Continue to Here"), this._continueToLine.bind(this, lineNumber));
-
- var breakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, lineNumber);
+ var breakpoint = this._breakpointManager.findBreakpointOnLine(this._uiSourceCode, lineNumber);
if (!breakpoint) {
// This row doesn't have a breakpoint: We want to show Add Breakpoint and Add and Edit Breakpoint.
- contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add breakpoint" : "Add Breakpoint"), this._setBreakpoint.bind(this, lineNumber, "", true));
+ contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add breakpoint" : "Add Breakpoint"), this._setBreakpoint.bind(this, lineNumber, 0, "", true));
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add conditional breakpoint…" : "Add Conditional Breakpoint…"), this._editBreakpointCondition.bind(this, lineNumber));
} else {
// This row has a breakpoint, we want to show edit and remove breakpoint, and either disable or enable.
@@ -167,6 +166,9 @@
contextMenu.appendSeparator();
}
+ /**
+ * @this {WebInspector.JavaScriptSourceFrame}
+ */
function liveEdit()
{
var liveEditUISourceCode = WebInspector.liveEditSupport.uiSourceCodeForLiveEdit(this._uiSourceCode);
@@ -217,7 +219,7 @@
if (!breakpointDecoration)
continue;
this._removeBreakpointDecoration(lineNumber);
- this._addBreakpointDecoration(lineNumber, breakpointDecoration.condition, breakpointDecoration.enabled, true);
+ this._addBreakpointDecoration(lineNumber, breakpointDecoration.columnNumber, breakpointDecoration.condition, breakpointDecoration.enabled, true);
}
this._muted = true;
},
@@ -249,7 +251,7 @@
if (isNaN(lineNumber))
continue;
var breakpointDecoration = breakpoints[lineNumberString];
- this._setBreakpoint(lineNumber, breakpointDecoration.condition, breakpointDecoration.enabled);
+ this._setBreakpoint(lineNumber, breakpointDecoration.columnNumber, breakpointDecoration.condition, breakpointDecoration.enabled);
}
},
@@ -293,7 +295,9 @@
var lineNumber = textPosition.startLine;
var line = this.textEditor.line(lineNumber);
var tokenContent = line.substring(token.startColumn, token.endColumn + 1);
- if (token.type !== "javascript-ident" && (token.type !== "javascript-keyword" || tokenContent !== "this"))
+
+ var isIdentifier = token.type.startsWith("js-variable") || token.type.startsWith("js-property") || token.type == "js-def";
+ if (!isIdentifier && (token.type !== "js-keyword" || tokenContent !== "this"))
return null;
var leftCorner = this.textEditor.cursorPositionToCoordinates(lineNumber, token.startColumn);
@@ -314,6 +318,7 @@
/**
* @param {?RuntimeAgent.RemoteObject} result
* @param {boolean=} wasThrown
+ * @this {WebInspector.JavaScriptSourceFrame}
*/
function showObjectPopover(result, wasThrown)
{
@@ -364,15 +369,17 @@
/**
* @param {number} lineNumber
+ * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
* @param {boolean} mutedWhileEditing
*/
- _addBreakpointDecoration: function(lineNumber, condition, enabled, mutedWhileEditing)
+ _addBreakpointDecoration: function(lineNumber, columnNumber, condition, enabled, mutedWhileEditing)
{
var breakpoint = {
condition: condition,
- enabled: enabled
+ enabled: enabled,
+ columnNumber: columnNumber
};
this.textEditor.setAttribute(lineNumber, "breakpoint", breakpoint);
@@ -412,6 +419,9 @@
this._conditionElement = this._createConditionElement(lineNumber);
this.textEditor.addDecoration(lineNumber, this._conditionElement);
+ /**
+ * @this {WebInspector.JavaScriptSourceFrame}
+ */
function finishEditing(committed, element, newText)
{
this.textEditor.removeDecoration(lineNumber, this._conditionElement);
@@ -423,11 +433,11 @@
if (breakpoint)
breakpoint.setCondition(newText);
else
- this._setBreakpoint(lineNumber, newText, true);
+ this._setBreakpoint(lineNumber, 0, newText, true);
}
- var config = new WebInspector.EditingConfig(finishEditing.bind(this, true), finishEditing.bind(this, false));
- WebInspector.startEditing(this._conditionEditorElement, config);
+ var config = new WebInspector.InplaceEditor.Config(finishEditing.bind(this, true), finishEditing.bind(this, false));
+ WebInspector.InplaceEditor.startEditing(this._conditionEditorElement, config);
this._conditionEditorElement.value = breakpoint ? breakpoint.condition() : "";
this._conditionEditorElement.select();
},
@@ -470,6 +480,7 @@
/**
* @param {!Array.<!DebuggerAgent.Location>} locations
+ * @this {WebInspector.JavaScriptSourceFrame}
*/
function locationsCallback(locations)
{
@@ -555,7 +566,7 @@
var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint);
if (this.loaded)
- this._addBreakpointDecoration(uiLocation.lineNumber, breakpoint.condition(), breakpoint.enabled(), false);
+ this._addBreakpointDecoration(uiLocation.lineNumber, uiLocation.columnNumber, breakpoint.condition(), breakpoint.enabled(), false);
},
_breakpointRemoved: function(event)
@@ -567,7 +578,7 @@
return;
var breakpoint = /** @type {!WebInspector.BreakpointManager.Breakpoint} */ (event.data.breakpoint);
- var remainingBreakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, uiLocation.lineNumber);
+ var remainingBreakpoint = this._breakpointManager.findBreakpointOnLine(this._uiSourceCode, uiLocation.lineNumber);
if (!remainingBreakpoint && this.loaded)
this._removeBreakpointDecoration(uiLocation.lineNumber);
},
@@ -617,6 +628,11 @@
}
},
+ beforeFormattedChange: function()
+ {
+ this.clearExecutionLine();
+ },
+
onTextEditorContentLoaded: function()
{
if (typeof this._executionLineNumber === "number")
@@ -661,14 +677,14 @@
*/
_toggleBreakpoint: function(lineNumber, onlyDisable)
{
- var breakpoint = this._breakpointManager.findBreakpoint(this._uiSourceCode, lineNumber);
+ var breakpoint = this._breakpointManager.findBreakpointOnLine(this._uiSourceCode, lineNumber);
if (breakpoint) {
if (onlyDisable)
breakpoint.setEnabled(!breakpoint.enabled());
else
breakpoint.remove();
} else
- this._setBreakpoint(lineNumber, "", true);
+ this._setBreakpoint(lineNumber, 0, "", true);
},
toggleBreakpointOnCurrentLine: function()
@@ -684,12 +700,13 @@
/**
* @param {number} lineNumber
+ * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
*/
- _setBreakpoint: function(lineNumber, condition, enabled)
+ _setBreakpoint: function(lineNumber, columnNumber, condition, enabled)
{
- this._breakpointManager.setBreakpoint(this._uiSourceCode, lineNumber, condition, enabled);
+ this._breakpointManager.setBreakpoint(this._uiSourceCode, lineNumber, columnNumber, condition, enabled);
WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
action: WebInspector.UserMetrics.UserActionNames.SetBreakpoint,
diff --git a/Source/devtools/front_end/KeyboardShortcut.js b/Source/devtools/front_end/KeyboardShortcut.js
index dae45b1..47e120d 100644
--- a/Source/devtools/front_end/KeyboardShortcut.js
+++ b/Source/devtools/front_end/KeyboardShortcut.js
@@ -59,6 +59,7 @@
Backspace: { code: 8, name: "\u21a4" },
Tab: { code: 9, name: { mac: "\u21e5", other: "Tab" } },
Enter: { code: 13, name: { mac: "\u21a9", other: "Enter" } },
+ Ctrl: { code: 17, name: "Ctrl" },
Esc: { code: 27, name: { mac: "\u238b", other: "Esc" } },
Space: { code: 32, name: "Space" },
PageUp: { code: 33, name: { mac: "\u21de", other: "PageUp" } }, // also NUM_NORTH_EAST
@@ -71,6 +72,8 @@
Down: { code: 40, name: "\u2193" }, // also NUM_SOUTH
Delete: { code: 46, name: "Del" },
Zero: { code: 48, name: "0" },
+ H: { code: 72, name: "H" },
+ Meta: { code: 91, name: "Meta" },
F1: { code: 112, name: "F1" },
F2: { code: 113, name: "F2" },
F3: { code: 114, name: "F3" },
@@ -89,13 +92,11 @@
Minus: { code: 189, name: "-" },
Period: { code: 190, name: "." },
Slash: { code: 191, name: "/" },
+ QuestionMark: { code: 191, name: "?" },
Apostrophe: { code: 192, name: "`" },
+ Tilde: { code: 192, name: "Tilde" },
Backslash: { code: 220, name: "\\" },
SingleQuote: { code: 222, name: "\'" },
- H: { code: 72, name: "H" },
- Ctrl: { code: 17, name: "Ctrl" },
- Meta: { code: 91, name: "Meta" },
- Tilde: { code: 192, name: "Tilde" },
get CtrlOrMeta()
{
// "default" command/ctrl key for platform, Command on Mac, Ctrl on other platforms
diff --git a/Source/devtools/front_end/LayerDetailsView.js b/Source/devtools/front_end/LayerDetailsView.js
index cb5a2e7..d7b3e36 100644
--- a/Source/devtools/front_end/LayerDetailsView.js
+++ b/Source/devtools/front_end/LayerDetailsView.js
@@ -30,16 +30,18 @@
/**
* @constructor
+ * @param {!WebInspector.LayerTreeModel} model
* @extends {WebInspector.View}
*/
-WebInspector.LayerDetailsView = function()
+WebInspector.LayerDetailsView = function(model)
{
WebInspector.View.call(this);
- this.element.classList.add("fill");
this.element.classList.add("layer-details-view");
this._emptyView = new WebInspector.EmptyView(WebInspector.UIString("Select a layer to see its details"));
this._createTable();
- this.showLayer(null);
+ this._model = model;
+ this._model.addEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, this._onLayerTreeUpdated, this);
+ this._model.addEventListener(WebInspector.LayerTreeModel.Events.LayerPainted, this._onLayerPainted, this);
}
/**
@@ -84,21 +86,50 @@
/**
* @param {?WebInspector.Layer} layer
*/
- showLayer: function(layer)
+ setLayer: function(layer)
{
- if (!layer) {
+ this._layer = layer;
+ if (this.isShowing())
+ this._update();
+ },
+
+ wasShown: function()
+ {
+ WebInspector.View.prototype.wasShown.call(this);
+ this._update();
+ },
+
+ _onLayerTreeUpdated: function()
+ {
+ if (this.isShowing())
+ this._update();
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onLayerPainted: function(event)
+ {
+ var layer = /** @type {!WebInspector.Layer} */ (event.data);
+ if (this._layer === layer)
+ this._paintCountCell.textContent = layer.paintCount();
+ },
+
+ _update: function()
+ {
+ if (!this._layer) {
this._tableElement.remove();
this._emptyView.show(this.element);
return;
}
this._emptyView.detach();
this.element.appendChild(this._tableElement);
- this._positionCell.textContent = WebInspector.UIString("%d,%d", layer.offsetX(), layer.offsetY());
- this._sizeCell.textContent = WebInspector.UIString("%d × %d", layer.width(), layer.height());
- this._paintCountCell.textContent = layer.paintCount();
+ this._positionCell.textContent = WebInspector.UIString("%d,%d", this._layer.offsetX(), this._layer.offsetY());
+ this._sizeCell.textContent = WebInspector.UIString("%d × %d", this._layer.width(), this._layer.height());
+ this._paintCountCell.textContent = this._layer.paintCount();
const bytesPerPixel = 4;
- this._memoryEstimateCell.textContent = Number.bytesToString(layer.invisible() ? 0 : layer.width() * layer.height() * bytesPerPixel);
- layer.requestCompositingReasons(this._updateCompositingReasons.bind(this));
+ this._memoryEstimateCell.textContent = Number.bytesToString(this._layer.invisible() ? 0 : this._layer.width() * this._layer.height() * bytesPerPixel);
+ this._layer.requestCompositingReasons(this._updateCompositingReasons.bind(this));
},
_createTable: function()
@@ -145,13 +176,5 @@
this._compositingReasonsCell.appendChild(fragment);
},
- /**
- * @param {number} paintCount
- */
- updatePaintCount: function(paintCount)
- {
- this._paintCountCell.textContent = paintCount;
- },
-
__proto__: WebInspector.View.prototype
}
diff --git a/Source/devtools/front_end/LayerTree.js b/Source/devtools/front_end/LayerTree.js
index 7fdd065..518cc75 100644
--- a/Source/devtools/front_end/LayerTree.js
+++ b/Source/devtools/front_end/LayerTree.js
@@ -89,6 +89,7 @@
/**
* @param {!WebInspector.Layer} layer
+ * @this {WebInspector.LayerTree}
*/
function updateLayer(layer)
{
@@ -201,7 +202,7 @@
var node = nodeId ? WebInspector.domAgent.nodeForId(nodeId) : null;
var title = document.createDocumentFragment();
title.createChild("div", "selection");
- title.appendChild(document.createTextNode(node ? WebInspector.DOMPresentationUtils.appropriateSelectorFor(node, false) : "#" + layer.id()));
+ title.appendChild(document.createTextNode(node ? WebInspector.DOMPresentationUtils.fullQualifiedSelector(node, false) : "#" + layer.id()));
var details = title.createChild("span", "dimmed");
details.textContent = WebInspector.UIString(" (%d × %d)", layer.width(), layer.height());
this.title = title;
@@ -209,6 +210,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function()
{
diff --git a/Source/devtools/front_end/LayerTreeModel.js b/Source/devtools/front_end/LayerTreeModel.js
index 71669f5..2753e10 100644
--- a/Source/devtools/front_end/LayerTreeModel.js
+++ b/Source/devtools/front_end/LayerTreeModel.js
@@ -66,6 +66,10 @@
return;
this._enabled = true;
WebInspector.domAgent.requestDocument(onDocumentAvailable.bind(this));
+
+ /**
+ * @this {WebInspector.LayerTreeModel}
+ */
function onDocumentAvailable()
{
// The agent might have been disabled while we were waiting for the document.
@@ -350,20 +354,17 @@
*/
requestCompositingReasons: function(callback)
{
- /**
- * @param {?string} error
- * @param {!Array.<string>} compositingReasons
- */
- function callbackWrapper(error, compositingReasons)
- {
- if (error) {
- console.error("LayerTreeAgent.reasonsForCompositingLayer(): " + error);
- callback([]);
- return;
- }
- callback(compositingReasons);
- }
- LayerTreeAgent.compositingReasons(this.id(), callbackWrapper.bind(this));
+ var wrappedCallback = InspectorBackend.wrapClientCallback(callback, "LayerTreeAgent.reasonsForCompositingLayer(): ", undefined, []);
+ LayerTreeAgent.compositingReasons(this.id(), wrappedCallback);
+ },
+
+ /**
+ * @param {function(!WebInspector.PaintProfilerSnapshot=)} callback
+ */
+ requestSnapshot: function(callback)
+ {
+ var wrappedCallback = InspectorBackend.wrapClientCallback(callback, "LayerTreeAgent.makeSnapshot(): ", WebInspector.PaintProfilerSnapshot);
+ LayerTreeAgent.makeSnapshot(this.id(), wrappedCallback);
},
/**
@@ -373,6 +374,7 @@
{
this._lastPaintRect = rect;
this._paintCount = this.paintCount() + 1;
+ this._image = null;
},
/**
@@ -384,6 +386,7 @@
this._parent = null;
this._paintCount = 0;
this._layerPayload = layerPayload;
+ this._image = null;
}
}
diff --git a/Source/devtools/front_end/Layers3DView.js b/Source/devtools/front_end/Layers3DView.js
index 06676b7..0ba03cc 100644
--- a/Source/devtools/front_end/Layers3DView.js
+++ b/Source/devtools/front_end/Layers3DView.js
@@ -36,7 +36,6 @@
WebInspector.Layers3DView = function(model)
{
WebInspector.View.call(this);
- this.element.classList.add("fill");
this.element.classList.add("layers-3d-view");
this._emptyView = new WebInspector.EmptyView(WebInspector.UIString("Not in the composited mode.\nConsider forcing composited mode in Settings."));
this._model = model;
@@ -48,6 +47,7 @@
this.element.addEventListener("mousedown", this._onMouseDown.bind(this), false);
this.element.addEventListener("mouseup", this._onMouseUp.bind(this), false);
this.element.addEventListener("contextmenu", this._onContextMenu.bind(this), false);
+ this.element.addEventListener("dblclick", this._onDoubleClick.bind(this), false);
this.element.addEventListener("click", this._onClick.bind(this), false);
this._elementsByLayerId = {};
this._rotateX = 0;
@@ -55,6 +55,7 @@
this._scaleAdjustmentStylesheet = this.element.ownerDocument.head.createChild("style");
this._scaleAdjustmentStylesheet.disabled = true;
this._lastOutlinedElement = {};
+ this._layerImage = document.createElement("img");
WebInspector.settings.showPaintRects.addChangeListener(this._update, this);
}
@@ -71,13 +72,14 @@
*/
WebInspector.Layers3DView.Events = {
LayerHovered: "LayerHovered",
- LayerSelected: "LayerSelected"
+ LayerSelected: "LayerSelected",
+ LayerSnapshotRequested: "LayerSnapshotRequested"
}
WebInspector.Layers3DView.PaintRectColors = [
- WebInspector.Color.fromRGBA([0xFF, 0, 0]),
- WebInspector.Color.fromRGBA([0xFF, 0, 0xFF]),
- WebInspector.Color.fromRGBA([0, 0, 0xFF])
+ WebInspector.Color.fromRGBA([0, 0x5F, 0, 0x3F]),
+ WebInspector.Color.fromRGBA([0, 0xAF, 0, 0x3F]),
+ WebInspector.Color.fromRGBA([0, 0xFF, 0, 0x3F])
]
WebInspector.Layers3DView.prototype = {
@@ -136,6 +138,19 @@
this._setOutline(WebInspector.Layers3DView.OutlineType.Selected, layer);
},
+ /**
+ * @param {!WebInspector.Layer} layer
+ * @param {string=} imageURL
+ */
+ showImageForLayer: function(layer, imageURL)
+ {
+ var element = this._elementForLayer(layer);
+ this._layerImage.removeAttribute("src");
+ if (imageURL)
+ this._layerImage.src = imageURL;
+ element.appendChild(this._layerImage);
+ },
+
_scaleToFit: function()
{
var root = this._model.contentRoot();
@@ -178,6 +193,10 @@
return;
}
this._emptyView.detach();
+
+ /**
+ * @this {WebInspector.Layers3DView}
+ */
function updateLayer(layer)
{
this._updateLayerElement(this._elementForLayer(layer));
@@ -394,11 +413,25 @@
contextMenu.show();
},
+ /**
+ * @param {?Event} event
+ */
_onClick: function(event)
{
this.dispatchEventToListeners(WebInspector.Layers3DView.Events.LayerSelected, this._layerFromEventPoint(event));
},
+ /**
+ * @param {?Event} event
+ */
+ _onDoubleClick: function(event)
+ {
+ var layer = this._layerFromEventPoint(event);
+ if (layer)
+ this.dispatchEventToListeners(WebInspector.Layers3DView.Events.LayerSnapshotRequested, layer);
+ event.stopPropagation();
+ },
+
__proto__: WebInspector.View.prototype
}
diff --git a/Source/devtools/front_end/LayersPanel.js b/Source/devtools/front_end/LayersPanel.js
index b13acee..34680ad 100644
--- a/Source/devtools/front_end/LayersPanel.js
+++ b/Source/devtools/front_end/LayersPanel.js
@@ -32,25 +32,22 @@
importScript("LayerTree.js");
importScript("Layers3DView.js");
importScript("LayerDetailsView.js");
+importScript("PaintProfilerView.js");
/**
* @constructor
- * @extends {WebInspector.Panel}
+ * @extends {WebInspector.PanelWithSidebarTree}
*/
WebInspector.LayersPanel = function()
{
- WebInspector.Panel.call(this, "layers");
+ WebInspector.PanelWithSidebarTree.call(this, "layers", 225);
this.registerRequiredCSS("layersPanel.css");
- const initialLayerTreeSidebarWidth = 225;
- const minimumMainWidthPercent = 0.5;
- this.createSidebarViewWithTree();
- this.sidebarElement.classList.add("outline-disclosure");
- this.sidebarTreeElement.classList.remove("sidebar-tree");
+ this.sidebarElement().classList.add("outline-disclosure");
+ this.sidebarTree.element.classList.remove("sidebar-tree");
this._model = new WebInspector.LayerTreeModel();
this._model.addEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, this._onLayerTreeUpdated, this);
- this._model.addEventListener(WebInspector.LayerTreeModel.Events.LayerPainted, this._onLayerPainted, this);
this._currentlySelectedLayer = null;
this._currentlyHoveredLayer = null;
@@ -58,23 +55,34 @@
this._layerTree.addEventListener(WebInspector.LayerTree.Events.LayerSelected, this._onLayerSelected, this);
this._layerTree.addEventListener(WebInspector.LayerTree.Events.LayerHovered, this._onLayerHovered, this);
- this._layerDetailsSplitView = new WebInspector.SplitView(false, "layerDetailsSplitView");
- this._layerDetailsSplitView.show(this.splitView.mainElement);
+ this._rightSplitView = new WebInspector.SplitView(false, true, "layerDetailsSplitView");
+ this._rightSplitView.show(this.mainElement());
this._layers3DView = new WebInspector.Layers3DView(this._model);
- this._layers3DView.show(this._layerDetailsSplitView.firstElement());
+ this._layers3DView.show(this._rightSplitView.mainElement());
this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.LayerSelected, this._onLayerSelected, this);
this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.LayerHovered, this._onLayerHovered, this);
+ this._layers3DView.addEventListener(WebInspector.Layers3DView.Events.LayerSnapshotRequested, this._onSnapshotRequested, this);
- this._layerDetailsView = new WebInspector.LayerDetailsView();
- this._layerDetailsView.show(this._layerDetailsSplitView.secondElement());
+ this._tabbedPane = new WebInspector.TabbedPane();
+ this._tabbedPane.show(this._rightSplitView.sidebarElement());
+
+ this._layerDetailsView = new WebInspector.LayerDetailsView(this._model);
+ this._tabbedPane.appendTab(WebInspector.LayersPanel.DetailsViewTabs.Details, WebInspector.UIString("Details"), this._layerDetailsView);
+ this._paintProfilerView = new WebInspector.PaintProfilerView(this._model, this._layers3DView);
+ this._tabbedPane.appendTab(WebInspector.LayersPanel.DetailsViewTabs.Profiler, WebInspector.UIString("Profiler"), this._paintProfilerView);
}
+WebInspector.LayersPanel.DetailsViewTabs = {
+ Details: "details",
+ Profiler: "profiler"
+};
+
WebInspector.LayersPanel.prototype = {
wasShown: function()
{
WebInspector.Panel.prototype.wasShown.call(this);
- this.sidebarTreeElement.focus();
+ this.sidebarTree.element.focus();
this._model.enable();
},
@@ -90,18 +98,6 @@
this._selectLayer(null);
if (this._currentlyHoveredLayer && !this._model.layerById(this._currentlyHoveredLayer.id()))
this._hoverLayer(null);
- if (this._currentlySelectedLayer)
- this._layerDetailsView.showLayer(this._currentlySelectedLayer);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _onLayerPainted: function(event)
- {
- var layer = /** @type {!WebInspector.Layer} */ (event.data);
- if (this._currentlySelectedLayer === layer)
- this._layerDetailsView.updatePaintCount(this._currentlySelectedLayer.paintCount());
},
/**
@@ -109,7 +105,7 @@
*/
_onLayerSelected: function(event)
{
- var layer = /** @type WebInspector.Layer */ (event.data);
+ var layer = /** @type {!WebInspector.Layer} */ (event.data);
this._selectLayer(layer);
},
@@ -123,6 +119,16 @@
},
/**
+ * @param {!WebInspector.Event} event
+ */
+ _onSnapshotRequested: function(event)
+ {
+ var layer = /** @type {!WebInspector.Layer} */ (event.data);
+ this._tabbedPane.selectTab(WebInspector.LayersPanel.DetailsViewTabs.Profiler);
+ this._paintProfilerView.profile(layer);
+ },
+
+ /**
* @param {?WebInspector.Layer} layer
*/
_selectLayer: function(layer)
@@ -137,7 +143,7 @@
WebInspector.domAgent.hideDOMNodeHighlight();
this._layerTree.selectLayer(layer);
this._layers3DView.selectLayer(layer);
- this._layerDetailsView.showLayer(layer);
+ this._layerDetailsView.setLayer(layer);
},
/**
@@ -157,5 +163,5 @@
this._layers3DView.hoverLayer(layer);
},
- __proto__: WebInspector.Panel.prototype
+ __proto__: WebInspector.PanelWithSidebarTree.prototype
}
diff --git a/Source/devtools/front_end/Linkifier.js b/Source/devtools/front_end/Linkifier.js
index 8e34d8c..f0c5c0e 100644
--- a/Source/devtools/front_end/Linkifier.js
+++ b/Source/devtools/front_end/Linkifier.js
@@ -53,6 +53,60 @@
this._liveLocations = [];
}
+/**
+ * @param {!WebInspector.Linkifier.LinkHandler} handler
+ */
+WebInspector.Linkifier.setLinkHandler = function(handler)
+{
+ WebInspector.Linkifier._linkHandler = handler;
+}
+
+/**
+ * @param {string} url
+ * @param {number=} lineNumber
+ * @return {boolean}
+ */
+WebInspector.Linkifier.handleLink = function(url, lineNumber)
+{
+ if (!WebInspector.Linkifier._linkHandler)
+ return false;
+ return WebInspector.Linkifier._linkHandler.handleLink(url, lineNumber)
+}
+
+/**
+ * @param {!Object} revealable
+ * @param {string} text
+ * @param {string} fallbackHref
+ * @param {number=} fallbackLineNumber
+ * @param {string=} title
+ * @param {string=} classes
+ * @return {!Element}
+ */
+WebInspector.Linkifier.linkifyUsingRevealer = function(revealable, text, fallbackHref, fallbackLineNumber, title, classes)
+{
+ var a = document.createElement("a");
+ a.className = (classes || "") + " webkit-html-resource-link";
+ a.textContent = text.trimMiddle(WebInspector.Linkifier.MaxLengthForDisplayedURLs);
+ a.title = title || text;
+ a.href = fallbackHref;
+ a.lineNumber = fallbackLineNumber;
+
+ /**
+ * @param {?Event} event
+ * @this {Object}
+ */
+ function clickHandler(event)
+ {
+ event.consume(true);
+ if (WebInspector.Linkifier.handleLink(fallbackHref, fallbackLineNumber))
+ return;
+
+ WebInspector.Revealer.reveal(this);
+ }
+ a.addEventListener("click", clickHandler.bind(revealable), false);
+ return a;
+}
+
WebInspector.Linkifier.prototype = {
/**
* @param {string} sourceURL
@@ -79,7 +133,7 @@
var script = WebInspector.debuggerModel.scriptForId(rawLocation.scriptId);
if (!script)
return null;
- var anchor = WebInspector.linkifyURLAsNode("", "", classes, false);
+ var anchor = this._createAnchor(classes);
var liveLocation = script.createLiveLocation(rawLocation, this._updateAnchor.bind(this, anchor));
this._liveLocations.push(liveLocation);
return anchor;
@@ -93,7 +147,7 @@
*/
linkifyCSSLocation: function(styleSheetId, rawLocation, classes)
{
- var anchor = WebInspector.linkifyURLAsNode("", "", classes, false);
+ var anchor = this._createAnchor(classes);
var liveLocation = WebInspector.cssModel.createLiveLocation(styleSheetId, rawLocation, this._updateAnchor.bind(this, anchor));
if (!liveLocation)
return null;
@@ -101,6 +155,31 @@
return anchor;
},
+ /**
+ * @param {string=} classes
+ * @return {!Element}
+ */
+ _createAnchor: function(classes)
+ {
+ var anchor = document.createElement("a");
+ anchor.className = (classes || "") + " webkit-html-resource-link";
+
+ /**
+ * @param {?Event} event
+ */
+ function clickHandler(event)
+ {
+ event.consume(true);
+ if (!anchor.__uiLocation)
+ return;
+ if (WebInspector.Linkifier.handleLink(anchor.__uiLocation.url(), anchor.__uiLocation.lineNumber))
+ return;
+ WebInspector.Revealer.reveal(anchor.__uiLocation);
+ }
+ anchor.addEventListener("click", clickHandler, false);
+ return anchor;
+ },
+
reset: function()
{
for (var i = 0; i < this._liveLocations.length; ++i)
@@ -114,11 +193,7 @@
*/
_updateAnchor: function(anchor, uiLocation)
{
- anchor.preferredPanel = "sources";
- anchor.href = sanitizeHref(uiLocation.uiSourceCode.originURL());
- anchor.uiSourceCode = uiLocation.uiSourceCode;
- anchor.lineNumber = uiLocation.lineNumber;
- anchor.columnNumber = uiLocation.columnNumber;
+ anchor.__uiLocation = uiLocation;
this._formatter.formatLiveAnchor(anchor, uiLocation);
}
}
@@ -149,9 +224,7 @@
if (typeof uiLocation.lineNumber === "number")
titleText += ":" + (uiLocation.lineNumber + 1);
anchor.title = titleText;
- },
-
- __proto__: WebInspector.LinkifierFormatter.prototype
+ }
}
/**
@@ -186,3 +259,19 @@
* @type {number}
*/
WebInspector.Linkifier.MaxLengthForDisplayedURLs = 150;
+
+/**
+ * @interface
+ */
+WebInspector.Linkifier.LinkHandler = function()
+{
+}
+
+WebInspector.Linkifier.LinkHandler.prototype = {
+ /**
+ * @param {string} url
+ * @param {number=} lineNumber
+ * @return {boolean}
+ */
+ handleLink: function(url, lineNumber) {}
+}
diff --git a/Source/devtools/front_end/LiveEditSupport.js b/Source/devtools/front_end/LiveEditSupport.js
index 3617686..7bc685a 100644
--- a/Source/devtools/front_end/LiveEditSupport.js
+++ b/Source/devtools/front_end/LiveEditSupport.js
@@ -91,12 +91,11 @@
}
var compileError = errorData.compileError;
if (compileError) {
- var message = "LiveEdit compile failed: " + compileError.message;
- if (contextScript)
- message += " at " + contextScript.sourceURL + ":" + compileError.lineNumber + ":" + compileError.columnNumber;
+ var location = contextScript ? WebInspector.UIString(" at %s:%d:%d", contextScript.sourceURL, compileError.lineNumber, compileError.columnNumber) : "";
+ var message = WebInspector.UIString("LiveEdit compile failed: %s%s", compileError.message, location);
WebInspector.log(message, WebInspector.ConsoleMessage.MessageLevel.Error, false);
} else {
- WebInspector.log("Unknown LiveEdit error: " + JSON.stringify(errorData) + "; " + error, warningLevel, false);
+ WebInspector.log(WebInspector.UIString("Unknown LiveEdit error: %s; %s", JSON.stringify(errorData), error), warningLevel, false);
}
}
@@ -128,6 +127,7 @@
/**
* @param {?string} error
* @param {!DebuggerAgent.SetScriptSourceError=} errorData
+ * @this {WebInspector.LiveEditScriptFile}
*/
function innerCallback(error, errorData)
{
@@ -174,5 +174,5 @@
__proto__: WebInspector.Object.prototype
}
-/** @type {?WebInspector.LiveEditSupport} */
-WebInspector.liveEditSupport = null;
+/** @type {!WebInspector.LiveEditSupport} */
+WebInspector.liveEditSupport;
diff --git a/Source/devtools/front_end/MemoryStatistics.js b/Source/devtools/front_end/MemoryStatistics.js
index 439ebcf..6338354 100644
--- a/Source/devtools/front_end/MemoryStatistics.js
+++ b/Source/devtools/front_end/MemoryStatistics.js
@@ -29,55 +29,112 @@
*/
/**
- * @param {!WebInspector.TimelinePanel} timelinePanel
- * @param {!WebInspector.TimelineModel} model
* @constructor
- * @extends {WebInspector.View}
+ * @extends {WebInspector.SplitView}
+ * @param {!WebInspector.TimelineView} timelineView
+ * @param {!WebInspector.TimelineModel} model
*/
-WebInspector.MemoryStatistics = function(timelinePanel, model)
+WebInspector.MemoryStatistics = function(timelineView, model)
{
- WebInspector.View.call(this);
- this._timelinePanel = timelinePanel;
+ WebInspector.SplitView.call(this, true, false);
- this.element.classList.add("fill");
- this._counters = [];
+ this.element.id = "memory-graphs-container";
+
+ this._timelineView = timelineView;
model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
- model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared, this._onRecordsCleared, this);
- this._memorySidebarView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, undefined);
- this._memorySidebarView.element.id = "memory-graphs-container";
-
- this._memorySidebarView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this._sidebarResized.bind(this));
-
- this._canvasContainer = this._memorySidebarView.mainElement;
- this._canvasContainer.id = "memory-graphs-canvas-container";
+ this._graphsContainer = this.mainElement();
this._createCurrentValuesBar();
- this._canvas = this._canvasContainer.createChild("canvas", "fill");
+ this._canvasView = new WebInspector.ViewWithResizeCallback(this._resize.bind(this));
+ this._canvasView.show(this._graphsContainer);
+ this._canvasContainer = this._canvasView.element;
+ this._canvasContainer.id = "memory-graphs-canvas-container";
+ this._canvas = this._canvasContainer.createChild("canvas");
this._canvas.id = "memory-counters-graph";
- this._lastMarkerXPosition = 0;
- this._canvas.addEventListener("mouseover", this._onMouseOver.bind(this), true);
- this._canvas.addEventListener("mousemove", this._onMouseMove.bind(this), true);
- this._canvas.addEventListener("mouseout", this._onMouseOut.bind(this), true);
- this._canvas.addEventListener("click", this._onClick.bind(this), true);
+ this._canvasContainer.addEventListener("mouseover", this._onMouseMove.bind(this), true);
+ this._canvasContainer.addEventListener("mousemove", this._onMouseMove.bind(this), true);
+ this._canvasContainer.addEventListener("mouseout", this._onMouseOut.bind(this), true);
+ this._canvasContainer.addEventListener("click", this._onClick.bind(this), true);
// We create extra timeline grid here to reuse its event dividers.
this._timelineGrid = new WebInspector.TimelineGrid();
this._canvasContainer.appendChild(this._timelineGrid.dividersElement);
// Populate sidebar
- this._memorySidebarView.sidebarElement.createChild("div", "sidebar-tree sidebar-tree-section").textContent = WebInspector.UIString("COUNTERS");
- this._counterUI = this._createCounterUIList();
- this._memorySidebarView.show(this.element);
+ this.sidebarElement().createChild("div", "sidebar-tree sidebar-tree-section").textContent = WebInspector.UIString("COUNTERS");
+ this._createAllCounters();
}
/**
* @constructor
- * @param {number} time
+ * @param {string} counterName
*/
-WebInspector.MemoryStatistics.Counter = function(time)
+WebInspector.MemoryStatistics.Counter = function(counterName)
{
- this.time = time;
+ this.counterName = counterName;
+ this.times = [];
+ this.values = [];
+}
+
+WebInspector.MemoryStatistics.Counter.prototype = {
+ /**
+ * @param {number} time
+ * @param {!TimelineAgent.Counters} counters
+ */
+ appendSample: function(time, counters)
+ {
+ var value = counters[this.counterName];
+ if (value === undefined)
+ return;
+ if (this.values.length && this.values.peekLast() === value)
+ return;
+ this.times.push(time);
+ this.values.push(value);
+ },
+
+ reset: function()
+ {
+ this.times = [];
+ this.values = [];
+ },
+
+ /**
+ * @param {!WebInspector.TimelineCalculator} calculator
+ */
+ _calculateVisibleIndexes: function(calculator)
+ {
+ // FIXME: these 1000 constants shouldn't be here.
+ var start = calculator.minimumBoundary() * 1000;
+ var end = calculator.maximumBoundary() * 1000;
+
+ // Maximum index of element whose time <= start.
+ this._minimumIndex = Number.constrain(this.times.upperBound(start) - 1, 0, this.times.length - 1);
+
+ // Minimum index of element whose time >= end.
+ this._maximumIndex = Number.constrain(this.times.lowerBound(end), 0, this.times.length - 1);
+
+ // Current window bounds.
+ this._minTime = start;
+ this._maxTime = end;
+ },
+
+ /**
+ * @param {number} width
+ */
+ _calculateXValues: function(width)
+ {
+ if (!this.values.length)
+ return;
+
+ var xFactor = width / (this._maxTime - this._minTime);
+
+ this.x = new Array(this.values.length);
+ this.x[this._minimumIndex] = 0;
+ for (var i = this._minimumIndex + 1; i < this._maximumIndex; i++)
+ this.x[i] = xFactor * (this.times[i] - this._minTime);
+ this.x[this._maximumIndex] = width;
+ }
}
/**
@@ -125,19 +182,23 @@
/**
* @constructor
+ * @param {!WebInspector.MemoryStatistics} memoryCountersPane
+ * @param {string} title
+ * @param {string} graphColor
+ * @param {!WebInspector.MemoryStatistics.Counter} counter
*/
-WebInspector.CounterUIBase = function(memoryCountersPane, title, graphColor, valueGetter)
+WebInspector.CounterUIBase = function(memoryCountersPane, title, graphColor, counter)
{
this._memoryCountersPane = memoryCountersPane;
- this.valueGetter = valueGetter;
- var container = memoryCountersPane._memorySidebarView.sidebarElement.createChild("div", "memory-counter-sidebar-info");
+ this.counter = counter;
+ var container = memoryCountersPane.sidebarElement().createChild("div", "memory-counter-sidebar-info");
var swatchColor = graphColor;
this._swatch = new WebInspector.SwatchCheckbox(WebInspector.UIString(title), swatchColor);
this._swatch.addEventListener(WebInspector.SwatchCheckbox.Events.Changed, this._toggleCounterGraph.bind(this));
container.appendChild(this._swatch.element);
this._value = null;
- this.graphColor =graphColor;
+ this.graphColor = graphColor;
this.strokeColor = graphColor;
this.graphYValues = [];
}
@@ -145,21 +206,38 @@
WebInspector.CounterUIBase.prototype = {
_toggleCounterGraph: function(event)
{
- if (this._swatch.checked)
- this._value.classList.remove("hidden");
- else
- this._value.classList.add("hidden");
+ this._value.classList.toggle("hidden", !this._swatch.checked);
this._memoryCountersPane.refresh();
},
- updateCurrentValue: function(countersEntry)
+ /**
+ * @param {number} x
+ * @return {number}
+ */
+ _recordIndexAt: function(x)
{
- this._value.textContent = Number.bytesToString(this.valueGetter(countersEntry));
+ return this.counter.x.upperBound(x, null, this.counter._minimumIndex + 1, this.counter._maximumIndex + 1) - 1;
},
- clearCurrentValueAndMarker: function(ctx)
+ /**
+ * @param {number} x
+ */
+ updateCurrentValue: function(x)
+ {
+ if (!this.visible || !this.counter.values.length)
+ return;
+ var index = this._recordIndexAt(x);
+ this._value.textContent = WebInspector.UIString(this._currentValueLabel, this.counter.values[index]);
+ var y = this.graphYValues[index];
+ this._marker.style.left = x + "px";
+ this._marker.style.top = y + "px";
+ this._marker.classList.remove("hidden");
+ },
+
+ clearCurrentValueAndMarker: function()
{
this._value.textContent = "";
+ this._marker.classList.add("hidden");
},
get visible()
@@ -174,74 +252,11 @@
throw new Error("Not implemented");
},
- _createCounterUIList: function()
+ _createAllCounters: function()
{
throw new Error("Not implemented");
},
- _onRecordsCleared: function()
- {
- this._counters = [];
- },
-
- /**
- * @param {!WebInspector.TimelineGrid} timelineGrid
- */
- setMainTimelineGrid: function(timelineGrid)
- {
- this._mainTimelineGrid = timelineGrid;
- },
-
- /**
- * @return {number}
- */
- height: function()
- {
- return this._memorySidebarView.element.offsetHeight;
- },
-
- /**
- * @param {number} width
- */
- setSidebarWidth: function(width)
- {
- if (this._ignoreSidebarResize)
- return;
- this._ignoreSidebarResize = true;
- this._memorySidebarView.setSidebarWidth(width);
- this._ignoreSidebarResize = false;
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _sidebarResized: function(event)
- {
- if (this._ignoreSidebarResize)
- return;
- this._ignoreSidebarResize = true;
- this._timelinePanel.setSidebarWidth(/** @type {number} */(event.data));
- this._ignoreSidebarResize = false;
- },
-
- _canvasHeight: function()
- {
- throw new Error("Not implemented");
- },
-
- onResize: function()
- {
- var width = this._mainTimelineGrid.dividersElement.offsetWidth + 1;
-
- this._canvas.style.width = width + "px";
- this._timelineGrid.dividersElement.style.width = width + "px";
- var parentElement = this._canvas.parentElement;
-
- this._canvas.width = width;
- this._canvas.height = parentElement.clientHeight - 15;
- this.draw();
- },
-
/**
* @param {!WebInspector.Event} event
*/
@@ -250,179 +265,134 @@
throw new Error("Not implemented");
},
+ reset: function()
+ {
+ for (var i = 0; i < this._counters.length; ++i)
+ this._counters[i].reset();
+
+ for (var i = 0; i < this._counterUI.length; ++i)
+ this._counterUI[i].reset();
+
+ this.refresh();
+ },
+
+ _resize: function()
+ {
+ var parentElement = this._canvas.parentElement;
+ this._canvas.width = parentElement.clientWidth;
+ this._canvas.height = parentElement.clientHeight;
+ this.refresh();
+ },
+
+ setWindowTimes: function()
+ {
+ this.scheduleRefresh();
+ },
+
+ scheduleRefresh: function()
+ {
+ if (this._refreshTimer)
+ return;
+ this._refreshTimer = setTimeout(this.refresh.bind(this), 300);
+ },
+
+ /**
+ * @return {boolean}
+ */
+ supportsGlueParentMode: function()
+ {
+ return true;
+ },
+
draw: function()
{
- this._calculateVisibleIndexes();
- this._calculateXValues();
+ for (var i = 0; i < this._counters.length; ++i) {
+ this._counters[i]._calculateVisibleIndexes(this._timelineView.calculator);
+ this._counters[i]._calculateXValues(this._canvas.width);
+ }
this._clear();
-
this._setVerticalClip(10, this._canvas.height - 20);
},
- _calculateVisibleIndexes: function()
+ /**
+ * @param {?Event} event
+ */
+ _onClick: function(event)
{
- var calculator = this._timelinePanel.calculator;
- var start = calculator.minimumBoundary() * 1000;
- var end = calculator.maximumBoundary() * 1000;
- function comparator(value, sample)
- {
- return value - sample.time;
+ var x = event.x - this._canvasContainer.offsetParent.offsetLeft;
+ var minDistance = Infinity;
+ var bestTime;
+ for (var i = 0; i < this._counterUI.length; ++i) {
+ var counterUI = this._counterUI[i];
+ if (!counterUI.counter.times.length)
+ continue;
+ var index = counterUI._recordIndexAt(x);
+ var distance = Math.abs(x - counterUI.counter.x[index]);
+ if (distance < minDistance) {
+ minDistance = distance;
+ bestTime = counterUI.counter.times[index];
+ }
}
-
- // Maximum index of element whose time <= start.
- this._minimumIndex = Number.constrain(this._counters.upperBound(start, comparator) - 1, 0, this._counters.length - 1);
-
- // Minimum index of element whose time >= end.
- this._maximumIndex = Number.constrain(this._counters.lowerBound(end, comparator), 0, this._counters.length - 1);
-
- // Current window bounds.
- this._minTime = start;
- this._maxTime = end;
+ if (bestTime !== undefined)
+ this._timelineView.revealRecordAt(bestTime / 1000);
},
/**
- * @param {!MouseEvent} event
+ * @param {?Event} event
*/
- _onClick: function(event)
- {
- var x = event.x - event.target.offsetParent.offsetLeft;
- var i = this._recordIndexAt(x);
- var counter = this._counters[i];
- if (counter)
- this._timelinePanel.revealRecordAt(counter.time / 1000);
- },
-
- /**
- * @param {!MouseEvent} event
- */
- _onMouseOut: function(event)
+ _onMouseOut: function(event)
{
delete this._markerXPosition;
-
- var ctx = this._canvas.getContext("2d");
- this._clearCurrentValueAndMarker(ctx);
+ this._clearCurrentValueAndMarker();
},
- /**
- * @param {!CanvasRenderingContext2D} ctx
- */
- _clearCurrentValueAndMarker: function(ctx)
+ _clearCurrentValueAndMarker: function()
{
for (var i = 0; i < this._counterUI.length; i++)
- this._counterUI[i].clearCurrentValueAndMarker(ctx);
+ this._counterUI[i].clearCurrentValueAndMarker();
},
/**
- * @param {!MouseEvent} event
+ * @param {?Event} event
*/
- _onMouseOver: function(event)
+ _onMouseMove: function(event)
{
- this._onMouseMove(event);
- },
-
- /**
- * @param {!MouseEvent} event
- */
- _onMouseMove: function(event)
- {
- var x = event.x - event.target.offsetParent.offsetLeft
+ var x = event.x - this._canvasContainer.offsetParent.offsetLeft;
this._markerXPosition = x;
this._refreshCurrentValues();
},
_refreshCurrentValues: function()
{
- if (!this._counters.length)
- return;
if (this._markerXPosition === undefined)
return;
- if (this._maximumIndex === -1)
- return;
- var i = this._recordIndexAt(this._markerXPosition);
-
- this._updateCurrentValue(this._counters[i]);
-
- this._highlightCurrentPositionOnGraphs(this._markerXPosition, i);
- },
-
- _updateCurrentValue: function(counterEntry)
- {
- for (var j = 0; j < this._counterUI.length; j++)
- this._counterUI[j].updateCurrentValue(counterEntry);
- },
-
- _recordIndexAt: function(x)
- {
- var i;
- for (i = this._minimumIndex + 1; i <= this._maximumIndex; i++) {
- var statX = this._counters[i].x;
- if (x < statX)
- break;
- }
- i--;
- return i;
- },
-
- _highlightCurrentPositionOnGraphs: function(x, index)
- {
- var ctx = this._canvas.getContext("2d");
- this._restoreImageUnderMarker(ctx);
- this._drawMarker(ctx, x, index);
- },
-
- _restoreImageUnderMarker: function(ctx)
- {
- throw new Error("Not implemented");
- },
-
- _drawMarker: function(ctx, x, index)
- {
- throw new Error("Not implemented");
+ for (var i = 0; i < this._counterUI.length; ++i)
+ this._counterUI[i].updateCurrentValue(this._markerXPosition);
},
refresh: function()
{
- this._refreshDividers();
+ delete this._refreshTimer;
+ this._timelineGrid.updateDividers(this._timelineView.calculator);
this.draw();
this._refreshCurrentValues();
},
- _refreshDividers: function()
- {
- this._timelineGrid.updateDividers(this._timelinePanel.calculator);
- },
-
+ /**
+ * @param {number} originY
+ * @param {number} height
+ */
_setVerticalClip: function(originY, height)
{
this._originY = originY;
this._clippedHeight = height;
},
- _calculateXValues: function()
- {
- if (!this._counters.length)
- return;
-
- var width = this._canvas.width;
- var xFactor = width / (this._maxTime - this._minTime);
-
- this._counters[this._minimumIndex].x = 0;
- for (var i = this._minimumIndex + 1; i < this._maximumIndex; i++)
- this._counters[i].x = xFactor * (this._counters[i].time - this._minTime);
- this._counters[this._maximumIndex].x = width;
- },
-
_clear: function()
{
var ctx = this._canvas.getContext("2d");
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
- this._discardImageUnderMarker();
},
- _discardImageUnderMarker: function()
- {
- throw new Error("Not implemented");
- },
-
- __proto__: WebInspector.View.prototype
+ __proto__: WebInspector.SplitView.prototype
}
diff --git a/Source/devtools/front_end/MetricsSidebarPane.js b/Source/devtools/front_end/MetricsSidebarPane.js
index ca55ae1..0e814d8 100644
--- a/Source/devtools/front_end/MetricsSidebarPane.js
+++ b/Source/devtools/front_end/MetricsSidebarPane.js
@@ -67,6 +67,10 @@
return;
}
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} style
+ * @this {WebInspector.MetricsSidebarPane}
+ */
function callback(style)
{
if (!style || this.node !== node)
@@ -75,6 +79,10 @@
}
WebInspector.cssModel.getComputedStyleAsync(node.id, callback.bind(this));
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} style
+ * @this {WebInspector.MetricsSidebarPane}
+ */
function inlineStyleCallback(style)
{
if (!style || this.node !== node)
@@ -91,6 +99,9 @@
_frameResized: function()
{
+ /**
+ * @this {WebInspector.MetricsSidebarPane}
+ */
function refreshContents()
{
this._innerUpdate();
@@ -149,6 +160,9 @@
}
},
+ /**
+ * @param {!WebInspector.CSSStyleDeclaration} style
+ */
_updateMetrics: function(style)
{
// Updating with computed style.
@@ -156,6 +170,13 @@
metricsElement.className = "metrics";
var self = this;
+ /**
+ * @param {!WebInspector.CSSStyleDeclaration} style
+ * @param {string} name
+ * @param {string} side
+ * @param {string} suffix
+ * @this {WebInspector.MetricsSidebarPane}
+ */
function createBoxPartElement(style, name, side, suffix)
{
var propertyName = (name !== "position" ? name + "-" : "") + side + suffix;
@@ -308,8 +329,8 @@
this._isEditingMetrics = true;
- var config = new WebInspector.EditingConfig(this.editingCommitted.bind(this), this.editingCancelled.bind(this), context);
- WebInspector.startEditing(targetElement, config);
+ var config = new WebInspector.InplaceEditor.Config(this.editingCommitted.bind(this), this.editingCancelled.bind(this), context);
+ WebInspector.InplaceEditor.startEditing(targetElement, config);
window.getSelection().setBaseAndExtent(targetElement, 0, targetElement, 1);
},
@@ -318,6 +339,11 @@
{
var element = event.currentTarget;
+ /**
+ * @param {string} originalValue
+ * @param {string} replacementString
+ * @this {WebInspector.MetricsSidebarPane}
+ */
function finishHandler(originalValue, replacementString)
{
this._applyUserInput(element, replacementString, originalValue, context, false);
diff --git a/Source/devtools/front_end/ModuleManager.js b/Source/devtools/front_end/ModuleManager.js
new file mode 100644
index 0000000..0136c4f
--- /dev/null
+++ b/Source/devtools/front_end/ModuleManager.js
@@ -0,0 +1,387 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @param {!Array.<!WebInspector.ModuleManager.ModuleDescriptor>} descriptors
+ */
+WebInspector.ModuleManager = function(descriptors)
+{
+ /**
+ * @type {!Array.<!WebInspector.ModuleManager.Module>}
+ */
+ this._modules = [];
+ /**
+ * @type {!Object.<string, !WebInspector.ModuleManager.Module>}
+ */
+ this._modulesMap = {};
+ /**
+ * @type {!Array.<!WebInspector.ModuleManager.Extension>}
+ */
+ this._extensions = [];
+
+
+ /**
+ * @type {!Object.<string, !WebInspector.ModuleManager.ModuleDescriptor>}
+ */
+ this._descriptorsMap = {};
+ for (var i = 0; i < descriptors.length; ++i)
+ this._descriptorsMap[descriptors[i]["name"]] = descriptors[i];
+}
+
+WebInspector.ModuleManager.prototype = {
+ /**
+ * @param {!Array.<string>} configuration
+ */
+ registerModules: function(configuration)
+ {
+ for (var i = 0; i < configuration.length; ++i)
+ this.registerModule(configuration[i]);
+ },
+
+ /**
+ * @param {string} moduleName
+ */
+ registerModule: function(moduleName)
+ {
+ if (!this._descriptorsMap[moduleName])
+ throw new Error("Module is not defined: " + moduleName + " " + new Error().stack);
+ var module = new WebInspector.ModuleManager.Module(this, this._descriptorsMap[moduleName]);
+ this._modules.push(module);
+ this._modulesMap[moduleName] = module;
+ },
+
+ /**
+ * @param {string} moduleName
+ */
+ loadModule: function(moduleName)
+ {
+ this._modulesMap[moduleName]._load();
+ },
+
+ /**
+ * @param {string|!Function} type
+ * @param {?Object=} context
+ * @return {!Array.<!WebInspector.ModuleManager.Extension>}
+ */
+ extensions: function(type, context)
+ {
+ /**
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @return {boolean}
+ */
+ function filter(extension)
+ {
+ if (extension._type !== type && extension._typeClass !== type)
+ return false;
+ return !context || extension.isApplicable(context);
+ }
+ return this._extensions.filter(filter);
+ },
+
+ /**
+ * @param {string|!Function} type
+ * @param {?Object=} context
+ * @return {?WebInspector.ModuleManager.Extension}
+ */
+ extension: function(type, context)
+ {
+ return this.extensions(type, context)[0] || null;
+ },
+
+ /**
+ * @param {string|!Function} type
+ * @param {?Object=} context
+ * @return {!Array.<!Object>}
+ */
+ instances: function(type, context)
+ {
+ /**
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @return {?Object}
+ */
+ function instantiate(extension)
+ {
+ return extension.instance();
+ }
+ return this.extensions(type, context).filter(instantiate).map(instantiate);
+ },
+
+ /**
+ * @param {string|!Function} type
+ * @return {?Object}
+ */
+ instance: function(type, context)
+ {
+ var extension = this.extension(type, context);
+ return extension ? extension.instance() : null;
+ },
+
+ /**
+ * @param {string|!Function} type
+ * @param {string} nameProperty
+ * @param {string} orderProperty
+ * @return {function(string, string):number}
+ */
+ orderComparator: function(type, nameProperty, orderProperty)
+ {
+ var extensions = this.extensions(type);
+ var orderForName = {};
+ for (var i = 0; i < extensions.length; ++i) {
+ var descriptor = extensions[i].descriptor();
+ orderForName[descriptor[nameProperty]] = descriptor[orderProperty];
+ }
+
+ /**
+ * @param {string} name1
+ * @param {string} name2
+ * @return {number}
+ */
+ function result(name1, name2)
+ {
+ if (name1 in orderForName && name2 in orderForName)
+ return orderForName[name1] - orderForName[name2];
+ if (name1 in orderForName)
+ return -1;
+ if (name2 in orderForName)
+ return 1;
+ return name1.compareTo(name2);
+ }
+ return result;
+ }
+}
+
+/**
+ * @constructor
+ */
+WebInspector.ModuleManager.ModuleDescriptor = function()
+{
+ /**
+ * @type {string}
+ */
+ this.name;
+
+ /**
+ * @type {!Array.<!WebInspector.ModuleManager.ExtensionDescriptor>}
+ */
+ this.extensions;
+
+ /**
+ * @type {!Array.<string>}
+ */
+ this.scripts;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.ModuleManager.ExtensionDescriptor = function()
+{
+ /**
+ * @type {string}
+ */
+ this.type;
+
+ /**
+ * @type {string|undefined}
+ */
+ this.className;
+
+ /**
+ * @type {!Array.<string>|undefined}
+ */
+ this.contextTypes;
+}
+
+/**
+ * @constructor
+ * @param {!WebInspector.ModuleManager} manager
+ * @param {!WebInspector.ModuleManager.ModuleDescriptor} descriptor
+ */
+WebInspector.ModuleManager.Module = function(manager, descriptor)
+{
+ this._manager = manager;
+ this._descriptor = descriptor;
+ this._name = descriptor.name;
+ var extensions = /** @type {?Array.<!WebInspector.ModuleManager.ExtensionDescriptor>}*/ (descriptor.extensions);
+ for (var i = 0; extensions && i < extensions.length; ++i)
+ this._manager._extensions.push(new WebInspector.ModuleManager.Extension(this, extensions[i]));
+ this._loaded = false;
+}
+
+WebInspector.ModuleManager.Module.prototype = {
+ /**
+ * @return {string}
+ */
+ name: function()
+ {
+ return this._name;
+ },
+
+ _load: function()
+ {
+ if (this._loaded)
+ return;
+
+ if (this._isLoading) {
+ var oldStackTraceLimit = Error.stackTraceLimit;
+ Error.stackTraceLimit = 50;
+ console.assert(false, "Module " + this._name + " is loaded from itself: " + new Error().stack);
+ Error.stackTraceLimit = oldStackTraceLimit;
+ return;
+ }
+
+ this._isLoading = true;
+ var scripts = this._descriptor.scripts;
+ for (var i = 0; scripts && i < scripts.length; ++i)
+ loadScript(scripts[i]);
+ this._isLoading = false;
+ this._loaded = true;
+ }
+}
+
+/**
+ * @constructor
+ * @param {!WebInspector.ModuleManager.Module} module
+ * @param {!WebInspector.ModuleManager.ExtensionDescriptor} descriptor
+ */
+WebInspector.ModuleManager.Extension = function(module, descriptor)
+{
+ this._module = module;
+ this._descriptor = descriptor;
+
+ this._type = descriptor.type;
+ if (this._type.startsWith("@"))
+ this._typeClass = /** @template T @type function(new:T) */ (window.eval(this._type.substring(1)));
+
+ /**
+ * @type {?string}
+ */
+ this._className = descriptor.className || null;
+}
+
+WebInspector.ModuleManager.Extension.prototype = {
+ /**
+ * @return {!Object}
+ */
+ descriptor: function()
+ {
+ return this._descriptor;
+ },
+
+ /**
+ * @return {!WebInspector.ModuleManager.Module}
+ */
+ module: function()
+ {
+ return this._module;
+ },
+
+ /**
+ * @param {?Object} context
+ * @return {boolean}
+ */
+ isApplicable: function(context)
+ {
+ var contextTypes = /** @type {!Array.<string>|undefined} */ (this._descriptor.contextTypes);
+ if (!contextTypes)
+ return true;
+ for (var i = 0; i < contextTypes.length; ++i) {
+ var contextType = /** @type {!Function} */ (window.eval(contextTypes[i]));
+ if (context instanceof contextType)
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * @return {?Object}
+ */
+ instance: function()
+ {
+ if (!this._className)
+ return null;
+
+ if (!this._instance) {
+ this._module._load();
+
+ var constructorFunction = window.eval(this._className);
+ if (!(constructorFunction instanceof Function))
+ return null;
+
+ this._instance = new constructorFunction();
+ }
+ return this._instance;
+ }
+}
+
+/**
+ * @interface
+ */
+WebInspector.Renderer = function()
+{
+}
+
+WebInspector.Renderer.prototype = {
+ /**
+ * @param {!Object} object
+ * @return {?Element}
+ */
+ render: function(object) {}
+}
+
+/**
+ * @interface
+ */
+WebInspector.Revealer = function()
+{
+}
+
+/**
+ * @param {?Object} revealable
+ * @param {number=} lineNumber
+ */
+WebInspector.Revealer.reveal = function(revealable, lineNumber)
+{
+ if (!revealable)
+ return;
+ var revealer = WebInspector.moduleManager.instance(WebInspector.Revealer, revealable);
+ if (revealer)
+ revealer.reveal(revealable, lineNumber);
+}
+
+WebInspector.Revealer.prototype = {
+ /**
+ * @param {!Object} object
+ */
+ reveal: function(object) {}
+}
+
+WebInspector.moduleManager = new WebInspector.ModuleManager(allDescriptors);
diff --git a/Source/devtools/front_end/NavigatorOverlayController.js b/Source/devtools/front_end/NavigatorOverlayController.js
deleted file mode 100644
index cdc17b8..0000000
--- a/Source/devtools/front_end/NavigatorOverlayController.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @param {!WebInspector.SidebarView} parentSidebarView
- * @param {!WebInspector.View} navigatorView
- * @param {!WebInspector.View} editorView
- */
-WebInspector.NavigatorOverlayController = function(parentSidebarView, navigatorView, editorView)
-{
- this._parentSidebarView = parentSidebarView;
- this._navigatorView = navigatorView;
- this._editorView = editorView;
-
- this._navigatorSidebarResizeWidgetElement = this._navigatorView.element.createChild("div", "resizer-widget");
- this._parentSidebarView.installResizer(this._navigatorSidebarResizeWidgetElement);
-
- this._navigatorShowHideButton = new WebInspector.StatusBarButton(WebInspector.UIString("Hide navigator"), "left-sidebar-show-hide-button scripts-navigator-show-hide-button", 3);
- this._navigatorShowHideButton.state = "left";
- this._navigatorShowHideButton.addEventListener("click", this._toggleNavigator, this);
- parentSidebarView.mainElement.appendChild(this._navigatorShowHideButton.element);
-
- WebInspector.settings.navigatorHidden = WebInspector.settings.createSetting("navigatorHidden", true);
- if (WebInspector.settings.navigatorHidden.get())
- this._toggleNavigator();
-}
-
-WebInspector.NavigatorOverlayController.prototype = {
- wasShown: function()
- {
- window.setTimeout(this._maybeShowNavigatorOverlay.bind(this), 0);
- },
-
- _maybeShowNavigatorOverlay: function()
- {
- if (WebInspector.settings.navigatorHidden.get() && !WebInspector.settings.navigatorWasOnceHidden.get())
- this.showNavigatorOverlay();
- },
-
- _toggleNavigator: function()
- {
- if (this._navigatorShowHideButton.state === "overlay")
- this._pinNavigator();
- else if (this._navigatorShowHideButton.state === "right")
- this.showNavigatorOverlay();
- else
- this._hidePinnedNavigator();
- },
-
- _hidePinnedNavigator: function()
- {
- this._navigatorShowHideButton.state = "right";
- this._navigatorShowHideButton.title = WebInspector.UIString("Show navigator");
- this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element);
-
- this._editorView.element.classList.add("navigator-hidden");
- this._navigatorSidebarResizeWidgetElement.classList.add("hidden");
-
- this._parentSidebarView.hideSidebarElement();
- this._navigatorView.detach();
- this._editorView.focus();
-
- WebInspector.settings.navigatorWasOnceHidden.set(true);
- WebInspector.settings.navigatorHidden.set(true);
- },
-
- _pinNavigator: function()
- {
- this._navigatorShowHideButton.state = "left";
- this._navigatorShowHideButton.title = WebInspector.UIString("Hide navigator");
-
- this._editorView.element.classList.remove("navigator-hidden");
- this._navigatorSidebarResizeWidgetElement.classList.remove("hidden");
- this._editorView.element.appendChild(this._navigatorShowHideButton.element);
-
- this._innerHideNavigatorOverlay();
- this._parentSidebarView.showSidebarElement();
- this._navigatorView.show(this._parentSidebarView.sidebarElement);
- this._navigatorView.focus();
- WebInspector.settings.navigatorHidden.set(false);
- },
-
- showNavigatorOverlay: function()
- {
- if (this._navigatorShowHideButton.state === "overlay")
- return;
-
- this._navigatorShowHideButton.state = "overlay";
- this._navigatorShowHideButton.title = WebInspector.UIString("Pin navigator");
-
- this._sidebarOverlay = new WebInspector.SidebarOverlay(this._navigatorView, "scriptsPanelNavigatorOverlayWidth", Preferences.minScriptsSidebarWidth);
- this._boundKeyDown = this._keyDown.bind(this);
- this._sidebarOverlay.element.addEventListener("keydown", this._boundKeyDown, false);
-
- var navigatorOverlayResizeWidgetElement = document.createElement("div");
- navigatorOverlayResizeWidgetElement.classList.add("resizer-widget");
- this._sidebarOverlay.resizerWidgetElement = navigatorOverlayResizeWidgetElement;
-
- this._navigatorView.element.appendChild(this._navigatorShowHideButton.element);
- this._boundContainingElementFocused = this._containingElementFocused.bind(this);
- this._parentSidebarView.element.addEventListener("mousedown", this._boundContainingElementFocused, false);
-
- this._sidebarOverlay.show(this._parentSidebarView.element);
- this._navigatorView.focus();
- },
-
- _keyDown: function(event)
- {
- if (event.handled)
- return;
-
- if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code) {
- this.hideNavigatorOverlay();
- event.consume(true);
- }
- },
-
- hideNavigatorOverlay: function()
- {
- if (this._navigatorShowHideButton.state !== "overlay")
- return;
-
- this._navigatorShowHideButton.state = "right";
- this._navigatorShowHideButton.title = WebInspector.UIString("Show navigator");
- this._parentSidebarView.element.appendChild(this._navigatorShowHideButton.element);
-
- this._innerHideNavigatorOverlay();
- this._editorView.focus();
- },
-
- _innerHideNavigatorOverlay: function()
- {
- this._parentSidebarView.element.removeEventListener("mousedown", this._boundContainingElementFocused, false);
- this._sidebarOverlay.element.removeEventListener("keydown", this._boundKeyDown, false);
- this._sidebarOverlay.hide();
- },
-
- _containingElementFocused: function(event)
- {
- if (!event.target.isSelfOrDescendant(this._sidebarOverlay.element))
- this.hideNavigatorOverlay();
- },
-
- isNavigatorPinned: function()
- {
- return this._navigatorShowHideButton.state === "left";
- },
-
- isNavigatorHidden: function()
- {
- return this._navigatorShowHideButton.state === "right";
- }
-}
diff --git a/Source/devtools/front_end/NavigatorView.js b/Source/devtools/front_end/NavigatorView.js
index da6976b..96c5875 100644
--- a/Source/devtools/front_end/NavigatorView.js
+++ b/Source/devtools/front_end/NavigatorView.js
@@ -44,7 +44,6 @@
scriptsOutlineElement.classList.add("navigator");
scriptsOutlineElement.appendChild(scriptsTreeElement);
- this.element.classList.add("fill");
this.element.classList.add("navigator-container");
this.element.appendChild(scriptsOutlineElement);
this.setDefaultFocusedElement(this._scriptsTree.element);
@@ -163,7 +162,7 @@
{
var node = this._uiSourceCodeNodes.get(uiSourceCode);
if (!node)
- return null;
+ return;
if (this._scriptsTree.selectedTreeElement)
this._scriptsTree.selectedTreeElement.deselect();
this._lastSelectedUISourceCode = uiSourceCode;
@@ -240,7 +239,7 @@
{
var node = this._uiSourceCodeNodes.get(uiSourceCode);
if (!node)
- return null;
+ return;
node.rename(callback);
},
@@ -426,6 +425,11 @@
FileSystem: "FileSystem"
}
+/**
+ * @param {!TreeElement} treeElement1
+ * @param {!TreeElement} treeElement2
+ * @return {number}
+ */
WebInspector.NavigatorTreeOutline._treeElementsCompare = function compare(treeElement1, treeElement2)
{
// Insert in the alphabetical order, first domains, then folders, then scripts.
@@ -676,6 +680,7 @@
this._uiSourceCode.requestContent(callback.bind(this));
/**
* @param {?string} content
+ * @this {WebInspector.NavigatorSourceTreeElement}
*/
function callback(content)
{
@@ -700,6 +705,9 @@
}
setTimeout(rename.bind(this), 300);
+ /**
+ * @this {WebInspector.NavigatorSourceTreeElement}
+ */
function rename()
{
if (this._shouldRenameOnMouseDown())
@@ -714,6 +722,9 @@
return true;
},
+ /**
+ * @return {boolean}
+ */
onspace: function()
{
this._navigatorView._sourceSelected(this.uiSourceCode, true);
@@ -730,6 +741,7 @@
/**
* @override
+ * @return {boolean}
*/
ondblclick: function(event)
{
@@ -740,6 +752,7 @@
/**
* @override
+ * @return {boolean}
*/
onenter: function()
{
@@ -749,6 +762,7 @@
/**
* @override
+ * @return {boolean}
*/
ondelete: function()
{
@@ -783,7 +797,7 @@
/**
* @return {!TreeElement}
*/
- treeElement: function() { },
+ treeElement: function() { throw "Not implemented"; },
dispose: function() { },
@@ -856,11 +870,11 @@
/**
* @param {string} id
- * @return {!WebInspector.NavigatorTreeNode}
+ * @return {?WebInspector.NavigatorTreeNode}
*/
child: function(id)
{
- return this._children.get(id);
+ return this._children.get(id) || null;
},
/**
@@ -1038,7 +1052,7 @@
this.parent.treeElement().expand();
this._treeElement.reveal();
if (select)
- this._treeElement.select();
+ this._treeElement.select(true);
},
/**
@@ -1053,6 +1067,12 @@
var treeOutlineElement = this._treeElement.treeOutline.element;
WebInspector.markBeingEdited(treeOutlineElement, true);
+ /**
+ * @param {!Element} element
+ * @param {string} newTitle
+ * @param {string} oldTitle
+ * @this {WebInspector.NavigatorUISourceCodeTreeNode}
+ */
function commitHandler(element, newTitle, oldTitle)
{
if (newTitle !== oldTitle) {
@@ -1063,6 +1083,10 @@
afterEditing.call(this, true);
}
+ /**
+ * @param {boolean} success
+ * @this {WebInspector.NavigatorUISourceCodeTreeNode}
+ */
function renameCallback(success)
{
if (!success) {
@@ -1074,6 +1098,9 @@
afterEditing.call(this, true);
}
+ /**
+ * @this {WebInspector.NavigatorUISourceCodeTreeNode}
+ */
function cancelHandler()
{
afterEditing.call(this, false);
@@ -1081,6 +1108,7 @@
/**
* @param {boolean} committed
+ * @this {WebInspector.NavigatorUISourceCodeTreeNode}
*/
function afterEditing(committed)
{
@@ -1091,9 +1119,9 @@
callback(committed);
}
- var editingConfig = new WebInspector.EditingConfig(commitHandler.bind(this), cancelHandler.bind(this));
+ var editingConfig = new WebInspector.InplaceEditor.Config(commitHandler.bind(this), cancelHandler.bind(this));
this.updateTitle(true);
- WebInspector.startEditing(this._treeElement.titleElement, editingConfig);
+ WebInspector.InplaceEditor.startEditing(this._treeElement.titleElement, editingConfig);
window.getSelection().setBaseAndExtent(this._treeElement.titleElement, 0, this._treeElement.titleElement, 1);
},
diff --git a/Source/devtools/front_end/NetworkItemView.js b/Source/devtools/front_end/NetworkItemView.js
index e98fafb..2b4f9b5 100644
--- a/Source/devtools/front_end/NetworkItemView.js
+++ b/Source/devtools/front_end/NetworkItemView.js
@@ -123,11 +123,17 @@
}
WebInspector.RequestContentView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
},
+ /**
+ * @return {!WebInspector.View}
+ */
get innerView()
{
return this._innerView;
@@ -151,6 +157,7 @@
/**
* @param {?string} content
+ * @this {WebInspector.RequestContentView}
*/
function callback(content)
{
@@ -168,6 +175,7 @@
/**
* @override
+ * @return {boolean}
*/
canHighlightPosition: function()
{
diff --git a/Source/devtools/front_end/NetworkLog.js b/Source/devtools/front_end/NetworkLog.js
index 1867a29..f856f5c 100644
--- a/Source/devtools/front_end/NetworkLog.js
+++ b/Source/devtools/front_end/NetworkLog.js
@@ -134,9 +134,9 @@
}
/**
- * @type {?WebInspector.NetworkLog}
+ * @type {!WebInspector.NetworkLog}
*/
-WebInspector.networkLog = null;
+WebInspector.networkLog;
/**
* @constructor
diff --git a/Source/devtools/front_end/NetworkManager.js b/Source/devtools/front_end/NetworkManager.js
index d7cbd62..a4f8c01 100644
--- a/Source/devtools/front_end/NetworkManager.js
+++ b/Source/devtools/front_end/NetworkManager.js
@@ -170,6 +170,8 @@
networkRequest.statusCode = response.status;
networkRequest.statusText = response.statusText;
networkRequest.responseHeaders = this._headersMapToHeadersArray(response.headers);
+ if (response.encodedDataLength >= 0)
+ networkRequest.setTransferSize(response.encodedDataLength);
if (response.headersText)
networkRequest.responseHeadersText = response.headersText;
if (response.requestHeaders) {
@@ -179,6 +181,8 @@
networkRequest.connectionReused = response.connectionReused;
networkRequest.connectionId = response.connectionId;
+ if (response.remoteIPAddress)
+ networkRequest.setRemoteAddress(response.remoteIPAddress, response.remotePort || -1);
if (response.fromDiskCache)
networkRequest.cached = true;
@@ -339,13 +343,14 @@
/**
* @param {!NetworkAgent.RequestId} requestId
* @param {!NetworkAgent.Timestamp} finishTime
+ * @param {number} encodedDataLength
*/
- loadingFinished: function(requestId, finishTime)
+ loadingFinished: function(requestId, finishTime, encodedDataLength)
{
var networkRequest = this._inflightRequestsById[requestId];
if (!networkRequest)
return;
- this._finishNetworkRequest(networkRequest, finishTime);
+ this._finishNetworkRequest(networkRequest, finishTime, encodedDataLength);
},
/**
@@ -363,7 +368,7 @@
networkRequest.failed = true;
networkRequest.canceled = canceled;
networkRequest.localizedFailDescription = localizedDescription;
- this._finishNetworkRequest(networkRequest, time);
+ this._finishNetworkRequest(networkRequest, time, -1);
},
/**
@@ -474,7 +479,7 @@
var networkRequest = this._inflightRequestsById[requestId];
if (!networkRequest)
return;
- this._finishNetworkRequest(networkRequest, time);
+ this._finishNetworkRequest(networkRequest, time, -1);
},
/**
@@ -491,7 +496,7 @@
delete originalNetworkRequest.redirects;
if (previousRedirects.length > 0)
originalNetworkRequest.redirectSource = previousRedirects[previousRedirects.length - 1];
- this._finishNetworkRequest(originalNetworkRequest, time);
+ this._finishNetworkRequest(originalNetworkRequest, time, -1);
var newNetworkRequest = this._createNetworkRequest(requestId, originalNetworkRequest.frameId, originalNetworkRequest.loaderId,
redirectURL, originalNetworkRequest.documentURL, originalNetworkRequest.initiator);
newNetworkRequest.redirects = previousRedirects.concat(originalNetworkRequest);
@@ -519,11 +524,14 @@
/**
* @param {!WebInspector.NetworkRequest} networkRequest
* @param {!NetworkAgent.Timestamp} finishTime
+ * @param {number} encodedDataLength
*/
- _finishNetworkRequest: function(networkRequest, finishTime)
+ _finishNetworkRequest: function(networkRequest, finishTime, encodedDataLength)
{
networkRequest.endTime = finishTime;
networkRequest.finished = true;
+ if (encodedDataLength >= 0)
+ networkRequest.setTransferSize(encodedDataLength);
this._dispatchEventToListeners(WebInspector.NetworkManager.EventTypes.RequestFinished, networkRequest);
delete this._inflightRequestsById[networkRequest.requestId];
delete this._inflightRequestsByURL[networkRequest.url];
@@ -555,6 +563,6 @@
}
/**
- * @type {?WebInspector.NetworkManager}
+ * @type {!WebInspector.NetworkManager}
*/
-WebInspector.networkManager = null;
+WebInspector.networkManager;
diff --git a/Source/devtools/front_end/NetworkPanel.js b/Source/devtools/front_end/NetworkPanel.js
index dde26e0..2651e26 100644
--- a/Source/devtools/front_end/NetworkPanel.js
+++ b/Source/devtools/front_end/NetworkPanel.js
@@ -49,7 +49,6 @@
WebInspector.NetworkLogView = function(filterBar, coulmnsVisibilitySetting)
{
WebInspector.View.call(this);
- this.element.classList.add("vbox", "fill");
this.registerRequiredCSS("networkLogView.css");
this.registerRequiredCSS("filter.css");
@@ -93,7 +92,7 @@
WebInspector.NetworkLogView.HTTPSchemas = {"http": true, "https": true, "ws": true, "wss": true};
WebInspector.NetworkLogView._responseHeaderColumns = ["Cache-Control", "Connection", "Content-Encoding", "Content-Length", "ETag", "Keep-Alive", "Last-Modified", "Server", "Vary"];
WebInspector.NetworkLogView._defaultColumnsVisibility = {
- method: true, status: true, scheme: false, domain: false, type: true, initiator: true, cookies: false, setCookies: false, size: true, time: true,
+ method: true, status: true, scheme: false, domain: false, remoteAddress: false, type: true, initiator: true, cookies: false, setCookies: false, size: true, time: true,
"Cache-Control": false, "Connection": false, "Content-Encoding": false, "Content-Length": false, "ETag": false, "Keep-Alive": false, "Last-Modified": false, "Server": false, "Vary": false
};
WebInspector.NetworkLogView._defaultRefreshDelay = 500;
@@ -163,6 +162,9 @@
this._allowPopover = flag;
},
+ /**
+ * @return {!Array.<!Element>}
+ */
elementsToRestoreScrollPositionsFor: function()
{
if (!this._dataGrid) // Not initialized yet.
@@ -186,7 +188,7 @@
{
var columns = [];
columns.push({
- id: "name",
+ id: "name",
titleDOMFragment: this._makeHeaderFragment(WebInspector.UIString("Name"), WebInspector.UIString("Path")),
title: WebInspector.UIString("Name"),
sortable: true,
@@ -224,6 +226,14 @@
});
columns.push({
+ id: "remoteAddress",
+ title: WebInspector.UIString("Remote Address"),
+ sortable: true,
+ weight: 10,
+ align: WebInspector.DataGrid.Align.Right
+ });
+
+ columns.push({
id: "type",
title: WebInspector.UIString("Type"),
sortable: true,
@@ -367,6 +377,7 @@
this._sortingFunctions.status = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "statusCode", false);
this._sortingFunctions.scheme = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "scheme", false);
this._sortingFunctions.domain = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "domain", false);
+ this._sortingFunctions.remoteAddress = WebInspector.NetworkDataGridNode.RemoteAddressComparator;
this._sortingFunctions.type = WebInspector.NetworkDataGridNode.RequestPropertyComparator.bind(null, "mimeType", false);
this._sortingFunctions.initiator = WebInspector.NetworkDataGridNode.InitiatorComparator;
this._sortingFunctions.cookies = WebInspector.NetworkDataGridNode.RequestCookiesCountComparator;
@@ -709,7 +720,7 @@
this._dataGrid.scrollToLastRow();
},
- _onRecordButtonClicked: function(e)
+ _onRecordButtonClicked: function()
{
if (!this._recordButton.toggled)
this._reset();
@@ -748,11 +759,6 @@
return this._requests;
},
- requestById: function(id)
- {
- return this._requestsById[id];
- },
-
_onRequestStarted: function(event)
{
if (this._recordButton.toggled)
@@ -1002,6 +1008,8 @@
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy request headers" : "Copy Request Headers"), this._copyRequestHeaders.bind(this, request));
if (request.responseHeadersText)
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy response headers" : "Copy Response Headers"), this._copyResponseHeaders.bind(this, request));
+ if (request.finished)
+ contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy response" : "Copy Response"), this._copyResponse.bind(this, request));
contextMenu.appendItem(WebInspector.UIString("Copy as cURL"), this._copyCurlCommand.bind(this, request));
}
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy all as HAR" : "Copy All as HAR"), this._copyAll.bind(this));
@@ -1027,10 +1035,16 @@
NetworkAgent.replayXHR(requestId);
},
+ _harRequests: function()
+ {
+ var httpRequests = this._requests.filter(WebInspector.NetworkLogView.HTTPRequestsFilter);
+ return httpRequests.filter(WebInspector.NetworkLogView.NonSourceMapRequestsFilter);
+ },
+
_copyAll: function()
{
var harArchive = {
- log: (new WebInspector.HARLog(this._requests.filter(WebInspector.NetworkLogView.HTTPRequestsFilter))).build()
+ log: (new WebInspector.HARLog(this._harRequests())).build()
};
InspectorFrontendHost.copyText(JSON.stringify(harArchive, null, 2));
},
@@ -1045,6 +1059,17 @@
InspectorFrontendHost.copyText(request.requestHeadersText());
},
+ _copyResponse: function(request)
+ {
+ function callback(content)
+ {
+ if (request.contentEncoded)
+ content = request.asDataURL();
+ InspectorFrontendHost.copyText(content || "");
+ }
+ request.requestContent(callback);
+ },
+
_copyResponseHeaders: function(request)
{
InspectorFrontendHost.copyText(request.responseHeadersText);
@@ -1066,6 +1091,7 @@
/**
* @param {boolean} accepted
+ * @this {WebInspector.NetworkLogView}
*/
function openCallback(accepted)
{
@@ -1074,7 +1100,7 @@
var progressIndicator = new WebInspector.ProgressIndicator();
this._progressBarContainer.appendChild(progressIndicator.element);
var harWriter = new WebInspector.HARWriter();
- harWriter.write(stream, this._requests.filter(WebInspector.NetworkLogView.HTTPRequestsFilter), progressIndicator);
+ harWriter.write(stream, this._harRequests(), progressIndicator);
}
},
@@ -1122,6 +1148,11 @@
row.enableStyleClass("offscreen", !rowIsVisible);
row.rowIsVisible = rowIsVisible;
}
+ var rowIsOdd = !!(unfilteredRowIndex & 1);
+ if (rowIsOdd !== row.rowIsOdd) {
+ row.enableStyleClass("odd", rowIsOdd);
+ row.rowIsOdd = rowIsOdd;
+ }
unfilteredRowIndex++;
}
},
@@ -1213,7 +1244,7 @@
*/
_highlightNthMatchedRequestForSearch: function(matchedRequestIndex, reveal)
{
- var request = this.requestById(this._matchedRequests[matchedRequestIndex]);
+ var request = this._requestsById[this._matchedRequests[matchedRequestIndex]];
if (!request)
return;
this._removeAllHighlights();
@@ -1336,7 +1367,7 @@
_highlightNode: function(node)
{
- node.element.classList.add("highlighted-row");
+ WebInspector.runCSSAnimationOnce(node.element, "highlighted-row");
this._highlightedNode = node;
},
@@ -1450,6 +1481,14 @@
return request.parsedURL.isValid && (request.scheme in WebInspector.NetworkLogView.HTTPSchemas);
}
+/**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {boolean}
+ */
+WebInspector.NetworkLogView.NonSourceMapRequestsFilter = function(request)
+{
+ return !WebInspector.SourceMap.hasSourceMapRequestHeader(request);
+}
WebInspector.NetworkLogView.EventTypes = {
ViewCleared: "ViewCleared",
@@ -1471,8 +1510,6 @@
this.registerRequiredCSS("networkPanel.css");
this._injectStyles();
- this.element.classList.add("vbox");
-
this._panelStatusBarElement = this.element.createChild("div", "panel-status-bar");
this._filterBar = new WebInspector.FilterBar();
this._filtersContainer = this.element.createChild("div", "network-filters-header hidden");
@@ -1483,9 +1520,9 @@
this._searchableView.show(this.element);
this._contentsElement = this._searchableView.element;
- this.createSidebarView(this._contentsElement);
- this.splitView.element.classList.remove("fill");
- this.splitView.hideMainElement();
+ this._splitView = new WebInspector.SplitView(true, false, "networkSidebarWidth");
+ this._splitView.show(this._contentsElement);
+ this._splitView.hideMain();
var defaultColumnsVisibility = WebInspector.NetworkLogView._defaultColumnsVisibility;
var networkLogColumnsVisibilitySetting = WebInspector.settings.createSetting("networkLogColumnsVisibility", defaultColumnsVisibility);
@@ -1496,13 +1533,14 @@
networkLogColumnsVisibilitySetting.set(columnsVisibility);
this._networkLogView = new WebInspector.NetworkLogView(this._filterBar, networkLogColumnsVisibilitySetting);
- this._networkLogView.show(this.sidebarElement);
+ this._networkLogView.show(this._splitView.sidebarElement());
- this._viewsContainerElement = this.splitView.mainElement;
+ var viewsContainerView = new WebInspector.View();
+ this._viewsContainerElement = viewsContainerView.element;
this._viewsContainerElement.id = "network-views";
- this._viewsContainerElement.classList.add("hidden");
if (!this._networkLogView.useLargeRows)
this._viewsContainerElement.classList.add("small");
+ viewsContainerView.show(this._splitView.mainElement());
this._networkLogView.addEventListener(WebInspector.NetworkLogView.EventTypes.ViewCleared, this._onViewCleared, this);
this._networkLogView.addEventListener(WebInspector.NetworkLogView.EventTypes.RowSizeChanged, this._onRowSizeChanged, this);
@@ -1518,6 +1556,9 @@
for (var i = 0; i < this._networkLogView.statusBarItems.length; ++i)
this._panelStatusBarElement.appendChild(this._networkLogView.statusBarItems[i]);
+ /**
+ * @this {WebInspector.NetworkPanel}
+ */
function viewGetter()
{
return this.visibleView;
@@ -1533,6 +1574,9 @@
this.element.enableStyleClass("filters-toggled", toggled);
},
+ /**
+ * @return {!Array.<!Element>}
+ */
elementsToRestoreScrollPositionsFor: function()
{
return this._networkLogView.elementsToRestoreScrollPositionsFor();
@@ -1573,30 +1617,9 @@
return this._networkLogView.requests;
},
- requestById: function(id)
- {
- return this._networkLogView.requestById(id);
- },
-
- _requestByAnchor: function(anchor)
- {
- return anchor.requestId ? this.requestById(anchor.requestId) : this._networkLogView._requestsByURL[anchor.href];
- },
-
/**
- * @param {!Element} anchor
- * @return {boolean}
+ * @param {!WebInspector.NetworkRequest} request
*/
- showAnchorLocation: function(anchor)
- {
- var request = this._requestByAnchor(anchor);
- if (!request)
- return false;
- this.revealAndHighlightRequest(request)
- WebInspector.inspectorView.setCurrentPanel(this);
- return true;
- },
-
revealAndHighlightRequest: function(request)
{
this._toggleGridMode();
@@ -1664,7 +1687,7 @@
if (this._viewingRequestMode) {
this._viewingRequestMode = false;
this.element.classList.remove("viewing-resource");
- this.splitView.hideMainElement();
+ this._splitView.hideMain();
}
this._networkLogView.switchToDetailedView();
@@ -1679,7 +1702,7 @@
this._viewingRequestMode = true;
this.element.classList.add("viewing-resource");
- this.splitView.showMainElement();
+ this._splitView.showBoth();
this._networkLogView.allowPopover = false;
this._networkLogView._allowRequestSelection = true;
this._networkLogView.switchToBriefView();
@@ -1709,18 +1732,25 @@
this._networkLogView.searchCanceled();
},
- /**
+ /**
* @param {!WebInspector.ContextMenu} contextMenu
* @param {!Object} target
+ * @this {WebInspector.NetworkPanel}
*/
appendApplicableItems: function(event, contextMenu, target)
{
+ /**
+ * @this {WebInspector.NetworkPanel}
+ */
function reveal(request)
{
WebInspector.inspectorView.setCurrentPanel(this);
this.revealAndHighlightRequest(request);
}
+ /**
+ * @this {WebInspector.NetworkPanel}
+ */
function appendRevealItem(request)
{
var revealText = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Reveal in Network panel" : "Reveal in Network Panel");
@@ -1775,6 +1805,44 @@
/**
* @constructor
+ * @implements {WebInspector.ContextMenu.Provider}
+ */
+WebInspector.NetworkPanel.ContextMenuProvider = function()
+{
+}
+
+WebInspector.NetworkPanel.ContextMenuProvider.prototype = {
+ /**
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!Object} target
+ */
+ appendApplicableItems: function(event, contextMenu, target)
+ {
+ WebInspector.panel("network").appendApplicableItems(event, contextMenu, target);
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Revealer}
+ */
+WebInspector.NetworkPanel.RequestRevealer = function()
+{
+}
+
+WebInspector.NetworkPanel.RequestRevealer.prototype = {
+ /**
+ * @param {!Object} request
+ */
+ reveal: function(request)
+ {
+ if (request instanceof WebInspector.NetworkRequest)
+ /** @type {!WebInspector.NetworkPanel} */ (WebInspector.showPanel("network")).revealAndHighlightRequest(request);
+ }
+}
+
+/**
+ * @constructor
* @implements {WebInspector.TimelineGrid.Calculator}
*/
WebInspector.NetworkBaseCalculator = function()
@@ -1782,27 +1850,43 @@
}
WebInspector.NetworkBaseCalculator.prototype = {
+ /**
+ * @param {number} time
+ * @return {number}
+ */
computePosition: function(time)
{
return (time - this._minimumBoundary) / this.boundarySpan() * this._workingArea;
},
+ /**
+ * @return {!{start: number, middle: number, end: number}}
+ */
computeBarGraphPercentages: function(item)
{
return {start: 0, middle: 0, end: (this._value(item) / this.boundarySpan()) * 100};
},
+ /**
+ * @return {!{left: string, right: string, tooltip: string}}
+ */
computeBarGraphLabels: function(item)
{
const label = this.formatTime(this._value(item));
return {left: label, right: label, tooltip: label};
},
+ /**
+ * @return {number}
+ */
boundarySpan: function()
{
return this._maximumBoundary - this._minimumBoundary;
},
+ /**
+ * @return {boolean}
+ */
updateBoundaries: function(item)
{
this._minimumBoundary = 0;
@@ -1821,21 +1905,33 @@
delete this._maximumBoundary;
},
+ /**
+ * @return {number}
+ */
maximumBoundary: function()
{
return this._maximumBoundary;
},
+ /**
+ * @return {number}
+ */
minimumBoundary: function()
{
return this._minimumBoundary;
},
+ /**
+ * @return {number}
+ */
zeroTime: function()
{
return this._minimumBoundary;
},
+ /**
+ * @return {number}
+ */
_value: function(item)
{
return 0;
@@ -1869,6 +1965,10 @@
}
WebInspector.NetworkTimeCalculator.prototype = {
+ /**
+ * @param {!WebInspector.NetworkRequest} request
+ * @return {!{start: number, middle: number, end: number}}
+ */
computeBarGraphPercentages: function(request)
{
if (request.startTime !== -1)
@@ -1895,6 +1995,9 @@
return {start: start, middle: middle, end: end};
},
+ /**
+ * @return {number}
+ */
computePercentageFromEventTime: function(eventTime)
{
// This function computes a percentage in terms of the total loading time
@@ -1906,6 +2009,9 @@
return 0;
},
+ /**
+ * @return {boolean}
+ */
updateBoundariesForEventTime: function(eventTime)
{
if (eventTime === -1 || this.startAtZero)
@@ -1918,6 +2024,9 @@
return false;
},
+ /**
+ * @return {!{left: string, right: string, tooltip: (string|undefined)}}
+ */
computeBarGraphLabels: function(request)
{
var rightLabel = "";
@@ -1946,6 +2055,9 @@
return {left: leftLabel, right: rightLabel, tooltip: tooltip};
},
+ /**
+ * @return {boolean}
+ */
updateBoundaries: function(request)
{
var didChange = false;
@@ -1970,6 +2082,9 @@
return didChange;
},
+ /**
+ * @return {string}
+ */
formatTime: function(value)
{
return Number.secondsToString(value);
@@ -1998,6 +2113,10 @@
}
WebInspector.NetworkTransferTimeCalculator.prototype = {
+ /**
+ * @param {number} value
+ * @return {string}
+ */
formatTime: function(value)
{
return Number.secondsToString(value);
@@ -2026,6 +2145,10 @@
}
WebInspector.NetworkTransferDurationCalculator.prototype = {
+ /**
+ * @param {number} value
+ * @return {string}
+ */
formatTime: function(value)
{
return Number.secondsToString(value);
@@ -2064,6 +2187,7 @@
this._statusCell = this._createDivInTD("status");
this._schemeCell = this._createDivInTD("scheme");
this._domainCell = this._createDivInTD("domain");
+ this._remoteAddressCell = this._createDivInTD("remoteAddress");
this._typeCell = this._createDivInTD("type");
this._initiatorCell = this._createDivInTD("initiator");
this._cookiesCell = this._createDivInTD("cookies");
@@ -2087,6 +2211,9 @@
this._linkifier.reset();
},
+ /**
+ * @return {boolean}
+ */
isFilteredOut: function()
{
return !!this._parentView._filteredOutRequests.get(this._request);
@@ -2176,6 +2303,7 @@
this._refreshStatusCell();
this._refreshSchemeCell();
this._refreshDomainCell();
+ this._refreshRemoteAddressCell();
this._refreshTypeCell();
this._refreshInitiatorCell();
this._refreshCookiesCell();
@@ -2191,11 +2319,19 @@
this._timelineCell.classList.add("resource-cached");
this._element.classList.add("network-item");
- this._element.enableStyleClass("network-error-row", this._request.failed || (this._request.statusCode >= 400));
+ this._element.enableStyleClass("network-error-row", this._isFailed());
this._updateElementStyleClasses(this._element);
},
/**
+ * @return {boolean}
+ */
+ _isFailed: function()
+ {
+ return !!this._request.failed || (this._request.statusCode >= 400);
+ },
+
+ /**
* @param {!Element} element
*/
_updateElementStyleClasses: function(element)
@@ -2244,37 +2380,30 @@
_refreshStatusCell: function()
{
this._statusCell.removeChildren();
+ this._statusCell.enableStyleClass("network-dim-cell", !this._isFailed() && (this._request.cached || !this._request.statusCode));
- if (this._request.failed) {
- var failText = this._request.canceled ? WebInspector.UIString("(canceled)") : WebInspector.UIString("(failed)");
+ if (this._request.failed && !this._request.canceled) {
+ var failText = WebInspector.UIString("(failed)");
if (this._request.localizedFailDescription) {
this._statusCell.appendChild(document.createTextNode(failText));
this._appendSubtitle(this._statusCell, this._request.localizedFailDescription);
this._statusCell.title = failText + " " + this._request.localizedFailDescription;
} else
this._statusCell.setTextAndTitle(failText);
- this._statusCell.classList.add("network-dim-cell");
- return;
- }
-
- this._statusCell.classList.remove("network-dim-cell");
-
- if (this._request.statusCode) {
+ } else if (this._request.statusCode) {
this._statusCell.appendChild(document.createTextNode("" + this._request.statusCode));
this._appendSubtitle(this._statusCell, this._request.statusText);
this._statusCell.title = this._request.statusCode + " " + this._request.statusText;
- if (this._request.cached)
- this._statusCell.classList.add("network-dim-cell");
+ } else if (this._request.parsedURL.isDataURL()) {
+ this._statusCell.setTextAndTitle(WebInspector.UIString("(data)"));
+ } else if (this._request.isPingRequest()) {
+ this._statusCell.setTextAndTitle(WebInspector.UIString("(ping)"));
+ } else if (this._request.canceled) {
+ this._statusCell.setTextAndTitle(WebInspector.UIString("(canceled)"));
+ } else if (this._request.finished) {
+ this._statusCell.setTextAndTitle(WebInspector.UIString("Finished"));
} else {
- if (this._request.parsedURL.isDataURL())
- this._statusCell.setTextAndTitle(WebInspector.UIString("(data)"));
- else if (this._request.isPingRequest())
- this._statusCell.setTextAndTitle(WebInspector.UIString("(ping)"));
- else if (this._request.finished)
- this._statusCell.setTextAndTitle(WebInspector.UIString("Finished"));
- else
- this._statusCell.setTextAndTitle(WebInspector.UIString("(pending)"));
- this._statusCell.classList.add("network-dim-cell");
+ this._statusCell.setTextAndTitle(WebInspector.UIString("(pending)"));
}
},
@@ -2288,6 +2417,11 @@
this._domainCell.setTextAndTitle(this._request.domain);
},
+ _refreshRemoteAddressCell: function()
+ {
+ this._remoteAddressCell.setTextAndTitle(this._request.remoteAddress());
+ },
+
_refreshTypeCell: function()
{
if (this._request.mimeType) {
@@ -2493,6 +2627,17 @@
return 0;
}
+WebInspector.NetworkDataGridNode.RemoteAddressComparator = function(a, b)
+{
+ var aRemoteAddress = a._request.remoteAddress();
+ var bRemoteAddress = b._request.remoteAddress();
+ if (aRemoteAddress > bRemoteAddress)
+ return 1;
+ if (bRemoteAddress > aRemoteAddress)
+ return -1;
+ return 0;
+}
+
WebInspector.NetworkDataGridNode.SizeComparator = function(a, b)
{
if (b._request.cached && !a._request.cached)
diff --git a/Source/devtools/front_end/NetworkPanelDescriptor.js b/Source/devtools/front_end/NetworkPanelDescriptor.js
deleted file mode 100644
index 58a7223..0000000
--- a/Source/devtools/front_end/NetworkPanelDescriptor.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-
-/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
- * @implements {WebInspector.ContextMenu.Provider}
- */
-WebInspector.NetworkPanelDescriptor = function()
-{
- WebInspector.PanelDescriptor.call(this, "network", WebInspector.UIString("Network"), "NetworkPanel", "NetworkPanel.js");
- WebInspector.ContextMenu.registerProvider(this);
-}
-
-WebInspector.NetworkPanelDescriptor.prototype = {
- /**
- * @param {!WebInspector.ContextMenu} contextMenu
- * @param {!Object} target
- */
- appendApplicableItems: function(event, contextMenu, target)
- {
- if (!(target instanceof WebInspector.NetworkRequest || target instanceof WebInspector.Resource || target instanceof WebInspector.UISourceCode))
- return;
- this.panel().appendApplicableItems(event, contextMenu, target);
- },
-
- __proto__: WebInspector.PanelDescriptor.prototype
-}
diff --git a/Source/devtools/front_end/NetworkRequest.js b/Source/devtools/front_end/NetworkRequest.js
index 69a8295..4301d75 100644
--- a/Source/devtools/front_end/NetworkRequest.js
+++ b/Source/devtools/front_end/NetworkRequest.js
@@ -59,11 +59,14 @@
this._frames = [];
this._responseHeaderValues = {};
+
+ this._remoteAddress = "";
}
WebInspector.NetworkRequest.Events = {
FinishedLoading: "FinishedLoading",
TimingChanged: "TimingChanged",
+ RemoteAddressChanged: "RemoteAddressChanged",
RequestHeadersChanged: "RequestHeadersChanged",
ResponseHeadersChanged: "ResponseHeadersChanged",
}
@@ -144,6 +147,24 @@
},
/**
+ * @param {string} ip
+ * @param {number} port
+ */
+ setRemoteAddress: function(ip, port)
+ {
+ this._remoteAddress = ip + ":" + port;
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this);
+ },
+
+ /**
+ * @return {string}
+ */
+ remoteAddress: function()
+ {
+ return this._remoteAddress;
+ },
+
+ /**
* @return {number}
*/
get startTime()
@@ -188,6 +209,7 @@
if (this._responseReceivedTime > x)
this._responseReceivedTime = x;
}
+ this.dispatchEventToListeners(WebInspector.NetworkRequest.Events.TimingChanged, this);
},
/**
@@ -228,24 +250,7 @@
*/
get transferSize()
{
- if (typeof this._transferSize === "number")
- return this._transferSize;
- if (this.statusCode === 304) // Not modified
- return this.responseHeadersSize;
- if (this._cached)
- return 0;
- // If we did not receive actual transfer size from network
- // stack, we prefer using Content-Length over resourceSize as
- // resourceSize may differ from actual transfer size if platform's
- // network stack performed decoding (e.g. gzip decompression).
- // The Content-Length, though, is expected to come from raw
- // response headers and will reflect actual transfer length.
- // This won't work for chunked content encoding, so fall back to
- // resourceSize when we don't have Content-Length. This still won't
- // work for chunks with non-trivial encodings. We need a way to
- // get actual transfer size from the network stack.
- var bodySize = Number(this.responseHeaderValue("Content-Length") || this.resourceSize);
- return this.responseHeadersSize + bodySize;
+ return this._transferSize || 0;
},
/**
@@ -257,6 +262,14 @@
},
/**
+ * @param {number} x
+ */
+ setTransferSize: function(x)
+ {
+ this._transferSize = x;
+ },
+
+ /**
* @return {boolean}
*/
get finished()
@@ -361,6 +374,9 @@
return this._parsedURL.displayName;
},
+ /**
+ * @return {string}
+ */
name: function()
{
if (this._name)
@@ -369,6 +385,9 @@
return this._name;
},
+ /**
+ * @return {string}
+ */
path: function()
{
if (this._path)
@@ -854,6 +873,7 @@
* @param {?Protocol.Error} error
* @param {string} content
* @param {boolean} contentEncoded
+ * @this {WebInspector.NetworkRequest}
*/
function onResourceContent(error, content, contentEncoded)
{
diff --git a/Source/devtools/front_end/NetworkUISourceCodeProvider.js b/Source/devtools/front_end/NetworkUISourceCodeProvider.js
index 15fd40f..173dd1c 100644
--- a/Source/devtools/front_end/NetworkUISourceCodeProvider.js
+++ b/Source/devtools/front_end/NetworkUISourceCodeProvider.js
@@ -48,6 +48,10 @@
WebInspector.NetworkUISourceCodeProvider.prototype = {
_populate: function()
{
+ /**
+ * @param {!WebInspector.ResourceTreeFrame} frame
+ * @this {WebInspector.NetworkUISourceCodeProvider}
+ */
function populateFrame(frame)
{
for (var i = 0; i < frame.childFrames.length; ++i)
@@ -91,12 +95,12 @@
},
/**
- * @param {!WebInspector.Event} event
+ * @param {!WebInspector.Event|!{data: !WebInspector.Resource}} event
*/
_resourceAdded: function(event)
{
var resource = /** @type {!WebInspector.Resource} */ (event.data);
- this._addFile(resource.url, resource);
+ this._addFile(resource.url, new WebInspector.NetworkUISourceCodeProvider.FallbackResource(resource));
},
/**
@@ -136,6 +140,107 @@
}
/**
- * @type {?WebInspector.SimpleWorkspaceProvider}
+ * @constructor
+ * @implements {WebInspector.ContentProvider}
+ * @param {!WebInspector.Resource} resource
*/
-WebInspector.networkWorkspaceProvider = null;
+WebInspector.NetworkUISourceCodeProvider.FallbackResource = function(resource)
+{
+ this._resource = resource;
+}
+
+WebInspector.NetworkUISourceCodeProvider.FallbackResource.prototype = {
+
+ /**
+ * @return {string}
+ */
+ contentURL: function()
+ {
+ return this._resource.contentURL();
+ },
+
+ /**
+ * @return {!WebInspector.ResourceType}
+ */
+ contentType: function()
+ {
+ return this._resource.contentType();
+ },
+
+ /**
+ * @param {function(?string)} callback
+ */
+ requestContent: function(callback)
+ {
+ /**
+ * @this {WebInspector.NetworkUISourceCodeProvider.FallbackResource}
+ */
+ function loadFallbackContent()
+ {
+ var scripts = WebInspector.debuggerModel.scriptsForSourceURL(this._resource.url);
+ if (!scripts.length) {
+ callback(null);
+ return;
+ }
+
+ var contentProvider;
+ if (this._resource.type === WebInspector.resourceTypes.Document)
+ contentProvider = new WebInspector.ConcatenatedScriptsContentProvider(scripts);
+ else if (this._resource.type === WebInspector.resourceTypes.Script)
+ contentProvider = scripts[0];
+
+ console.assert(contentProvider, "Resource content request failed. " + this._resource.url);
+
+ contentProvider.requestContent(callback);
+ }
+
+ /**
+ * @param {?string} content
+ * @this {WebInspector.NetworkUISourceCodeProvider.FallbackResource}
+ */
+ function requestContentLoaded(content)
+ {
+ if (content)
+ callback(content)
+ else
+ loadFallbackContent.call(this);
+ }
+
+ this._resource.requestContent(requestContentLoaded.bind(this));
+ },
+
+ /**
+ * @param {string} query
+ * @param {boolean} caseSensitive
+ * @param {boolean} isRegex
+ * @param {function(!Array.<!WebInspector.ContentProvider.SearchMatch>)} callback
+ */
+ searchInContent: function(query, caseSensitive, isRegex, callback)
+ {
+ /**
+ * @param {?string} content
+ */
+ function documentContentLoaded(content)
+ {
+ if (content === null) {
+ callback([]);
+ return;
+ }
+
+ var result = WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex);
+ callback(result);
+ }
+
+ if (this.contentType() === WebInspector.resourceTypes.Document) {
+ this.requestContent(documentContentLoaded);
+ return;
+ }
+
+ this._resource.searchInContent(query, caseSensitive, isRegex, callback);
+ }
+}
+
+/**
+ * @type {!WebInspector.SimpleWorkspaceProvider}
+ */
+WebInspector.networkWorkspaceProvider;
diff --git a/Source/devtools/front_end/NotificationService.js b/Source/devtools/front_end/NotificationService.js
new file mode 100644
index 0000000..a6292fe
--- /dev/null
+++ b/Source/devtools/front_end/NotificationService.js
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2014 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.Object}
+ */
+WebInspector.NotificationService = function() { }
+
+WebInspector.NotificationService.prototype = {
+ __proto__: WebInspector.Object.prototype
+}
+
+WebInspector.NotificationService.Events = {
+ SelectedNodeChanged: "SelectedNodeChanged"
+}
+
+WebInspector.notifications = new WebInspector.NotificationService();
diff --git a/Source/devtools/front_end/OWNERS b/Source/devtools/front_end/OWNERS
index a91bd6e..9917e82 100644
--- a/Source/devtools/front_end/OWNERS
+++ b/Source/devtools/front_end/OWNERS
@@ -1,6 +1,7 @@
aandrey@chromium.org
apavlov@chromium.org
caseq@chromium.org
+dgozman@chromium.org
loislo@chromium.org
pfeldman@chromium.org
vsevik@chromium.org
diff --git a/Source/devtools/front_end/Object.js b/Source/devtools/front_end/Object.js
index 9544e0d..6873a20 100644
--- a/Source/devtools/front_end/Object.js
+++ b/Source/devtools/front_end/Object.js
@@ -183,5 +183,3 @@
*/
dispatchEventToListeners: function(eventType, eventData) { },
}
-
-WebInspector.notifications = new WebInspector.Object();
diff --git a/Source/devtools/front_end/ObjectPopoverHelper.js b/Source/devtools/front_end/ObjectPopoverHelper.js
index 5818665..b963706 100644
--- a/Source/devtools/front_end/ObjectPopoverHelper.js
+++ b/Source/devtools/front_end/ObjectPopoverHelper.js
@@ -66,6 +66,7 @@
* @param {!Element} popoverContentElement
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.FunctionDetails} response
+ * @this {WebInspector.ObjectPopoverHelper}
*/
function didGetDetails(anchorElement, popoverContentElement, error, response)
{
@@ -95,6 +96,7 @@
* @param {!WebInspector.RemoteObject} result
* @param {boolean} wasThrown
* @param {!Element=} anchorOverride
+ * @this {WebInspector.ObjectPopoverHelper}
*/
function showObjectPopover(result, wasThrown, anchorOverride)
{
diff --git a/Source/devtools/front_end/ObjectPropertiesSection.js b/Source/devtools/front_end/ObjectPropertiesSection.js
index 80d21f7..edd37c7 100644
--- a/Source/devtools/front_end/ObjectPropertiesSection.js
+++ b/Source/devtools/front_end/ObjectPropertiesSection.js
@@ -79,6 +79,7 @@
/**
* @param {?Array.<!WebInspector.RemoteObjectProperty>} properties
* @param {?Array.<!WebInspector.RemoteObjectProperty>} internalProperties
+ * @this {WebInspector.ObjectPropertiesSection}
*/
function callback(properties, internalProperties)
{
@@ -160,11 +161,12 @@
{
var propertyValue = /** @type {!WebInspector.RemoteObject} */ (this.property.value);
console.assert(propertyValue);
- return WebInspector.ObjectPropertyTreeElement.populate(this, propertyValue);
+ WebInspector.ObjectPropertyTreeElement.populate(this, propertyValue);
},
/**
* @override
+ * @return {boolean}
*/
ondblclick: function(event)
{
@@ -283,6 +285,9 @@
this.parent.shouldRefreshChildren = true;
},
+ /**
+ * @return {boolean}
+ */
renderPromptAsBlock: function()
{
return false;
@@ -290,12 +295,16 @@
/**
* @param {!Event=} event
+ * @return {!Array.<!Element|undefined>}
*/
elementAndValueToEdit: function(event)
{
return [this.valueElement, (typeof this.valueElement._originalTextContent === "string") ? this.valueElement._originalTextContent : undefined];
},
+ /**
+ * @param {!Event=} event
+ */
startEditing: function(event)
{
var elementAndValueToEdit = this.elementAndValueToEdit(event);
@@ -318,6 +327,9 @@
this._prompt = new WebInspector.ObjectPropertyPrompt(this.editingCommitted.bind(this, null, elementToEdit.textContent, context.previousContent, context), this.editingCancelled.bind(this, null, context), this.renderPromptAsBlock());
+ /**
+ * @this {WebInspector.ObjectPropertyTreeElement}
+ */
function blurListener()
{
this.editingCommitted(null, elementToEdit.textContent, context.previousContent, context);
@@ -355,8 +367,10 @@
editingCommitted: function(element, userInput, previousContent, context)
{
- if (userInput === previousContent)
- return this.editingCancelled(element, context); // nothing changed, so cancel
+ if (userInput === previousContent) {
+ this.editingCancelled(element, context); // nothing changed, so cancel
+ return;
+ }
this.editingEnded(context);
this.applyExpression(userInput, true);
@@ -366,11 +380,13 @@
{
if (isEnterKey(event)) {
event.consume(true);
- return this.editingCommitted(null, context.elementToEdit.textContent, context.previousContent, context);
+ this.editingCommitted(null, context.elementToEdit.textContent, context.previousContent, context);
+ return;
}
if (event.keyIdentifier === "U+001B") { // Esc
event.consume();
- return this.editingCancelled(null, context);
+ this.editingCancelled(null, context);
+ return;
}
},
@@ -378,6 +394,11 @@
{
expression = expression.trim();
var expressionLength = expression.length;
+
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.ObjectPropertyTreeElement}
+ */
function callback(error)
{
if (!updateInterface)
@@ -397,6 +418,9 @@
this.property.parentObject.setPropertyValue(this.property.name, expression.trim(), callback.bind(this));
},
+ /**
+ * @return {string|undefined}
+ */
propertyPath: function()
{
if ("_cachedPropertyPath" in this)
@@ -580,6 +604,7 @@
/**
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.FunctionDetails} response
+ * @this {WebInspector.FunctionScopeMainTreeElement}
*/
function didGetDetails(error, response)
{
@@ -661,7 +686,7 @@
WebInspector.ScopeTreeElement.prototype = {
onpopulate: function()
{
- return WebInspector.ObjectPropertyTreeElement.populate(this, this._remoteObject);
+ WebInspector.ObjectPropertyTreeElement.populate(this, this._remoteObject);
},
__proto__: TreeElement.prototype
@@ -706,6 +731,7 @@
* @param {number} fromIndex
* @param {number} toIndex
* @param {boolean} topLevel
+ * @this {WebInspector.ArrayGroupingTreeElement}
*/
WebInspector.ArrayGroupingTreeElement._populateRanges = function(treeElement, object, fromIndex, toIndex, topLevel)
{
@@ -721,6 +747,10 @@
function packRanges(fromIndex, toIndex, bucketThreshold, sparseIterationThreshold)
{
var ownPropertyNames = null;
+
+ /**
+ * @this {Object}
+ */
function doLoop(iterationCallback)
{
if (toIndex - fromIndex < sparseIterationThreshold) {
@@ -800,6 +830,7 @@
* @param {!WebInspector.RemoteObject} object
* @param {number} fromIndex
* @param {number} toIndex
+ * @this {WebInspector.ArrayGroupingTreeElement}
*/
WebInspector.ArrayGroupingTreeElement._populateAsFragment = function(treeElement, object, fromIndex, toIndex)
{
@@ -862,6 +893,7 @@
/**
* @param {!TreeElement|!TreeOutline} treeElement
* @param {!WebInspector.RemoteObject} object
+ * @this {WebInspector.ArrayGroupingTreeElement}
*/
WebInspector.ArrayGroupingTreeElement._populateNonIndexProperties = function(treeElement, object)
{
@@ -887,6 +919,7 @@
/**
* @param {?WebInspector.RemoteObject} arrayFragment
* @param {boolean=} wasThrown
+ * @this {WebInspector.ArrayGroupingTreeElement}
*/
function processObjectFragment(arrayFragment, wasThrown)
{
diff --git a/Source/devtools/front_end/OverridesSupport.js b/Source/devtools/front_end/OverridesSupport.js
index 14fce6b..8e3008a 100644
--- a/Source/devtools/front_end/OverridesSupport.js
+++ b/Source/devtools/front_end/OverridesSupport.js
@@ -34,8 +34,11 @@
*/
WebInspector.OverridesSupport = function()
{
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._deviceMetricsChanged.bind(this), this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._onMainFrameNavigated.bind(this), this);
this._deviceMetricsOverrideEnabled = false;
+ this._emulateViewportEnabled = false;
+ this._userAgent = "";
+ this.maybeHasActiveOverridesChanged();
WebInspector.settings.overrideUserAgent.addChangeListener(this._userAgentChanged, this);
WebInspector.settings.userAgent.addChangeListener(this._userAgentChanged, this);
@@ -59,6 +62,7 @@
WebInspector.OverridesSupport.Events = {
OverridesWarningUpdated: "OverridesWarningUpdated",
+ HasActiveOverridesChanged: "HasActiveOverridesChanged",
}
/**
@@ -298,7 +302,7 @@
WebInspector.OverridesSupport.GeolocationPosition.clearGeolocationOverride = function()
{
- PageAgent.clearGeolocationOverride();
+ GeolocationAgent.clearGeolocationOverride();
}
/**
@@ -378,6 +382,7 @@
emulateDevice: function(deviceMetrics, userAgent)
{
this._deviceMetricsChangedListenerMuted = true;
+ this._userAgentChangedListenerMuted = true;
WebInspector.settings.deviceMetrics.set(deviceMetrics);
WebInspector.settings.userAgent.set(userAgent);
WebInspector.settings.overrideDeviceMetrics.set(true);
@@ -385,12 +390,15 @@
WebInspector.settings.emulateTouchEvents.set(true);
WebInspector.settings.emulateViewport.set(true);
delete this._deviceMetricsChangedListenerMuted;
+ delete this._userAgentChangedListenerMuted;
this._deviceMetricsChanged();
+ this._userAgentChanged();
},
reset: function()
{
this._deviceMetricsChangedListenerMuted = true;
+ this._userAgentChangedListenerMuted = true;
WebInspector.settings.overrideDeviceMetrics.set(false);
WebInspector.settings.overrideUserAgent.set(false);
WebInspector.settings.emulateTouchEvents.set(false);
@@ -400,12 +408,15 @@
WebInspector.settings.emulateViewport.set(false);
WebInspector.settings.deviceMetrics.set("");
delete this._deviceMetricsChangedListenerMuted;
+ delete this._userAgentChangedListenerMuted;
this._deviceMetricsChanged();
+ this._userAgentChanged();
},
applyInitialOverrides: function()
{
this._deviceMetricsChangedListenerMuted = true;
+ this._userAgentChangedListenerMuted = true;
this._userAgentChanged();
this._deviceMetricsChanged();
this._deviceOrientationChanged();
@@ -413,14 +424,20 @@
this._emulateTouchEventsChanged();
this._cssMediaChanged();
delete this._deviceMetricsChangedListenerMuted;
+ delete this._userAgentChangedListenerMuted;
this._deviceMetricsChanged();
+ this._userAgentChanged();
},
_userAgentChanged: function()
{
- if (WebInspector.isInspectingDevice())
+ if (WebInspector.isInspectingDevice() || this._userAgentChangedListenerMuted)
return;
- NetworkAgent.setUserAgentOverride(WebInspector.settings.overrideUserAgent.get() ? WebInspector.settings.userAgent.get() : "");
+ var userAgent = WebInspector.settings.overrideUserAgent.get() ? WebInspector.settings.userAgent.get() : "";
+ NetworkAgent.setUserAgentOverride(userAgent);
+ this._updateUserAgentWarningMessage(this._userAgent !== userAgent ? WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering.") : "");
+ this._userAgent = userAgent;
+ this.maybeHasActiveOverridesChanged();
},
_deviceMetricsChanged: function()
@@ -436,42 +453,51 @@
// Disable override without checks.
if (dipWidth && dipHeight && WebInspector.isInspectingDevice()) {
- this._updateWarningMessage(WebInspector.UIString("Screen emulation on the device is not available."));
+ this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Screen emulation on the device is not available."));
return;
}
PageAgent.setDeviceMetricsOverride(dipWidth, dipHeight, metrics.deviceScaleFactor, WebInspector.settings.emulateViewport.get(), WebInspector.settings.deviceFitWindow.get(), metrics.textAutosizing, metrics.fontScaleFactor(), apiCallback.bind(this));
+ this.maybeHasActiveOverridesChanged();
/**
- * param {?Protocol.Error} error
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.OverridesSupport}
*/
function apiCallback(error)
{
if (error) {
- this._updateWarningMessage(WebInspector.UIString("Screen emulation is not available on this page."));
+ this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Screen emulation is not available on this page."));
return;
}
- var enabled = !!(dipWidth && dipHeight);
- this._updateWarningMessage(this._deviceMetricsOverrideEnabled !== enabled ?
+ var metricsOverrideEnabled = !!(dipWidth && dipHeight);
+ var viewportEnabled = WebInspector.settings.emulateViewport.get();
+ this._updateDeviceMetricsWarningMessage(this._deviceMetricsOverrideEnabled !== metricsOverrideEnabled || (metricsOverrideEnabled && this._emulateViewportEnabled != viewportEnabled) ?
WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering.") : "");
- this._deviceMetricsOverrideEnabled = enabled;
+ this._deviceMetricsOverrideEnabled = metricsOverrideEnabled;
+ this._emulateViewportEnabled = viewportEnabled;
+ this._deviceMetricsOverrideAppliedForTest();
}
- this._revealOverridesTabIfNeeded();
+ },
+
+ _deviceMetricsOverrideAppliedForTest: function()
+ {
+ // Used for sniffing in tests.
},
_geolocationPositionChanged: function()
{
if (!WebInspector.settings.overrideGeolocation.get()) {
- PageAgent.clearGeolocationOverride();
+ GeolocationAgent.clearGeolocationOverride();
return;
}
var geolocation = WebInspector.OverridesSupport.GeolocationPosition.parseSetting(WebInspector.settings.geolocationOverride.get());
if (geolocation.error)
- PageAgent.setGeolocationOverride();
+ GeolocationAgent.setGeolocationOverride();
else
- PageAgent.setGeolocationOverride(geolocation.latitude, geolocation.longitude, 150);
- this._revealOverridesTabIfNeeded();
+ GeolocationAgent.setGeolocationOverride(geolocation.latitude, geolocation.longitude, 150);
+ this.maybeHasActiveOverridesChanged();
},
_deviceOrientationChanged: function()
@@ -485,7 +511,7 @@
var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation.parseSetting(WebInspector.settings.deviceOrientationOverride.get());
PageAgent.setDeviceOrientationOverride(deviceOrientation.alpha, deviceOrientation.beta, deviceOrientation.gamma);
- this._revealOverridesTabIfNeeded();
+ this.maybeHasActiveOverridesChanged();
},
_emulateTouchEventsChanged: function()
@@ -494,38 +520,56 @@
return;
WebInspector.domAgent.emulateTouchEventObjects(WebInspector.settings.emulateTouchEvents.get());
- this._revealOverridesTabIfNeeded();
+ this.maybeHasActiveOverridesChanged();
},
_cssMediaChanged: function()
{
PageAgent.setEmulatedMedia(WebInspector.settings.overrideCSSMedia.get() ? WebInspector.settings.emulatedCSSMedia.get() : "");
WebInspector.cssModel.mediaQueryResultChanged();
- this._revealOverridesTabIfNeeded();
+ this.maybeHasActiveOverridesChanged();
},
- _anyOverrideIsEnabled: function()
+ /**
+ * @return {boolean}
+ */
+ hasActiveOverrides: function()
{
- return WebInspector.settings.overrideUserAgent.get() || WebInspector.settings.overrideDeviceMetrics.get() ||
+ return this._hasActiveOverrides;
+ },
+
+ maybeHasActiveOverridesChanged: function()
+ {
+ var hasActiveOverrides = WebInspector.settings.overrideUserAgent.get() || WebInspector.settings.overrideDeviceMetrics.get() ||
WebInspector.settings.overrideGeolocation.get() || WebInspector.settings.overrideDeviceOrientation.get() ||
WebInspector.settings.emulateTouchEvents.get() || WebInspector.settings.overrideCSSMedia.get();
+ if (this._hasActiveOverrides !== hasActiveOverrides) {
+ this._hasActiveOverrides = hasActiveOverrides;
+ this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.HasActiveOverridesChanged);
+ }
},
- _revealOverridesTabIfNeeded: function()
+ _onMainFrameNavigated: function()
{
- if (this._anyOverrideIsEnabled()) {
- if (!WebInspector.settings.showEmulationViewInDrawer.get())
- WebInspector.settings.showEmulationViewInDrawer.set(true);
- WebInspector.inspectorView.showViewInDrawer("emulation");
- }
+ this._deviceMetricsChanged();
+ this._updateUserAgentWarningMessage("");
},
/**
* @param {string} warningMessage
*/
- _updateWarningMessage: function(warningMessage)
+ _updateDeviceMetricsWarningMessage: function(warningMessage)
{
- this._warningMessage = warningMessage;
+ this._deviceMetricsWarningMessage = warningMessage;
+ this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.OverridesWarningUpdated);
+ },
+
+ /**
+ * @param {string} warningMessage
+ */
+ _updateUserAgentWarningMessage: function(warningMessage)
+ {
+ this._userAgentWarningMessage = warningMessage;
this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.OverridesWarningUpdated);
},
@@ -534,7 +578,7 @@
*/
warningMessage: function()
{
- return this._warningMessage || "";
+ return this._deviceMetricsWarningMessage || this._userAgentWarningMessage || "";
},
__proto__: WebInspector.Object.prototype
@@ -542,6 +586,6 @@
/**
- * @type {?WebInspector.OverridesSupport}
+ * @type {!WebInspector.OverridesSupport}
*/
-WebInspector.overridesSupport = null;
+WebInspector.overridesSupport;
diff --git a/Source/devtools/front_end/OverridesView.js b/Source/devtools/front_end/OverridesView.js
index 86129ec..686e700 100644
--- a/Source/devtools/front_end/OverridesView.js
+++ b/Source/devtools/front_end/OverridesView.js
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2014 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -37,7 +37,7 @@
WebInspector.View.call(this);
this.registerRequiredCSS("overrides.css");
this.registerRequiredCSS("helpScreen.css");
- this.element.classList.add("overrides-view", "fill", "vbox");
+ this.element.classList.add("overrides-view");
this._tabbedPane = new WebInspector.TabbedPane();
this._tabbedPane.shrinkableTabs = false;
@@ -172,7 +172,7 @@
*/
_createSettingCheckbox: function(name, setting, callback)
{
- var checkbox = WebInspector.SettingsTab.createCheckbox(name, setting.get.bind(setting), listener, true);
+ var checkbox = WebInspector.SettingsUI.createCheckbox(name, setting.get.bind(setting), listener, true);
function listener(value)
{
@@ -192,10 +192,10 @@
checkbox.firstChild.checked = setting.get();
}
return checkbox;
- }
-}
+ },
-WebInspector.OverridesView.Tab.prototype.__proto__ = WebInspector.View.prototype;
+ __proto__: WebInspector.View.prototype
+}
/**
* @constructor
@@ -231,7 +231,6 @@
this._deviceSelectElement.selectedIndex = devices.length - 1;
this._deviceSelectElement.addEventListener("change", this._deviceSelected.bind(this), false);
- this._deviceSelectElement.addEventListener("dblclick", this._emulateButtonClicked.bind(this), false);
this._deviceSelectElement.addEventListener("keypress", this._keyPressed.bind(this), false);
this._deviceSelectElement.disabled = WebInspector.isInspectingDevice();
@@ -240,11 +239,11 @@
emulateButton.textContent = WebInspector.UIString("Emulate");
emulateButton.addEventListener("click", this._emulateButtonClicked.bind(this), false);
emulateButton.disabled = WebInspector.isInspectingDevice();
- this._emulateButton = emulateButton;
var resetButton = buttonsBar.createChild("button", "settings-tab-text-button");
resetButton.textContent = WebInspector.UIString("Reset");
resetButton.addEventListener("click", this._resetButtonClicked.bind(this), false);
+ this._resetButton = resetButton;
this._viewportValueLabel = this.element.createChild("div", "overrides-device-value-label");
this._viewportValueLabel.textContent = WebInspector.UIString("Viewport:");
@@ -255,6 +254,8 @@
this._userAgentValueElement = this._userAgentLabel.createChild("span", "overrides-device-value");
this._updateValueLabels();
+ WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport.Events.HasActiveOverridesChanged, this._hasActiveOverridesChanged, this);
+ this._hasActiveOverridesChanged();
}
// Third element lists device metrics separated by 'x':
@@ -353,10 +354,10 @@
];
WebInspector.OverridesView.DeviceTab._tablets = [
- ["Amazon Amazon Kindle Fire HD 7\"",
+ ["Amazon Amazon Kindle Fire HD 7\u2033",
"Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire HD Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"1280x800x1.5"],
- ["Amazon Amazon Kindle Fire HD 8.9\"",
+ ["Amazon Amazon Kindle Fire HD 8.9\u2033",
"Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire HD Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"1920x1200x1.5"],
["Amazon Amazon Kindle Fire",
@@ -366,7 +367,7 @@
"Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5",
"1024x768x1"],
["Apple iPad 3 / 4",
- "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
+ "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
"2048x1536x2"],
["BlackBerry PlayBook",
"Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+",
@@ -412,6 +413,11 @@
WebInspector.overridesSupport.reset();
},
+ _hasActiveOverridesChanged: function()
+ {
+ this._resetButton.disabled = !WebInspector.overridesSupport.hasActiveOverrides();
+ },
+
_deviceSelected: function()
{
var option = this._deviceSelectElement.options[this._deviceSelectElement.selectedIndex];
@@ -424,14 +430,14 @@
var option = this._deviceSelectElement.options[this._deviceSelectElement.selectedIndex];
var metrics;
if (option._metrics && (metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(option._metrics)))
- this._viewportValueElement.textContent = WebInspector.UIString("%s \u00D7 %s, devicePixelRatio = %s", metrics.width, metrics.height, metrics.deviceScaleFactor);
+ this._viewportValueElement.textContent = WebInspector.UIString("%s \xD7 %s, devicePixelRatio = %s", metrics.width, metrics.height, metrics.deviceScaleFactor);
else
this._viewportValueElement.textContent = "";
this._userAgentValueElement.textContent = option._userAgent || "";
- }
-}
+ },
-WebInspector.OverridesView.DeviceTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
+ __proto__: WebInspector.OverridesView.Tab.prototype
+}
/**
@@ -451,7 +457,7 @@
this.element.appendChild(checkbox);
this.element.appendChild(this._createDeviceMetricsElement(metrics));
- this.element.appendChild(this._createMediaEmulationElement());
+ this.element.appendChild(this._createMediaEmulationFragment());
var footnote = this.element.createChild("p", "help-footnote");
var footnoteLink = footnote.createChild("a");
@@ -470,6 +476,7 @@
{
if (enabled && !this._widthOverrideElement.value)
this._widthOverrideElement.focus();
+ this._applyDeviceMetricsUserInput();
},
_applyDeviceMetricsUserInput: function()
@@ -528,11 +535,15 @@
*/
_createDeviceMetricsElement: function(metrics)
{
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideDeviceMetrics);
- fieldsetElement.disabled = WebInspector.isInspectingDevice();
+ var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.overrideDeviceMetrics);
+ if (WebInspector.isInspectingDevice())
+ fieldsetElement.disabled = true;
fieldsetElement.id = "metrics-override-section";
- function swapDimensionsClicked(event)
+ /**
+ * @this {WebInspector.OverridesView.ViewportTab}
+ */
+ function swapDimensionsClicked()
{
var widthValue = this._widthOverrideElement.value;
this._widthOverrideElement.value = this._heightOverrideElement.value;
@@ -605,12 +616,12 @@
this._textAutosizingOverrideCheckbox.checked = metrics.textAutosizing || false;
},
- _createMediaEmulationElement: function()
+ _createMediaEmulationFragment: function()
{
- var checkbox = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("CSS media"), WebInspector.settings.overrideCSSMedia, true);
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideCSSMedia);
- fieldsetElement.disabled = WebInspector.isInspectingDevice();
- checkbox.appendChild(fieldsetElement);
+ var checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("CSS media"), WebInspector.settings.overrideCSSMedia, true);
+ var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.overrideCSSMedia);
+ if (WebInspector.isInspectingDevice())
+ fieldsetElement.disabled = true;
var mediaSelectElement = fieldsetElement.createChild("select");
var mediaTypes = WebInspector.CSSStyleModel.MediaTypes;
@@ -630,7 +641,10 @@
}
mediaSelectElement.addEventListener("change", this._emulateMediaChanged.bind(this, mediaSelectElement), false);
- return checkbox;
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild(checkbox);
+ fragment.appendChild(fieldsetElement);
+ return fragment;
},
_emulateMediaChanged: function(select)
@@ -645,10 +659,10 @@
return;
this._widthOverrideElement.value = this._widthRangeInput.value;
this._applyDeviceMetricsUserInput();
- }
-}
+ },
-WebInspector.OverridesView.ViewportTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
+ __proto__: WebInspector.OverridesView.Tab.prototype
+}
/**
@@ -666,34 +680,34 @@
}
WebInspector.OverridesView.UserAgentTab._userAgents = [
- ["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"],
- ["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
- ["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
- ["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"],
-
- ["Firefox 7 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
- ["Firefox 7 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
- ["Firefox 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
- ["Firefox 4 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
- ["Firefox 14 \u2014 Android Mobile", "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0"],
- ["Firefox 14 \u2014 Android Tablet", "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"],
-
- ["Chrome \u2014 Android Mobile", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"],
- ["Chrome \u2014 Android Tablet", "Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"],
-
- ["iPhone \u2014 iOS 7", "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53"],
- ["iPhone \u2014 iOS 6", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
- ["iPad \u2014 iOS 7", "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53"],
- ["iPad \u2014 iOS 6", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
-
- ["Android 2.3 \u2014 Nexus S", "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"],
["Android 4.0.2 \u2014 Galaxy Nexus", "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"],
-
+ ["Android 2.3 \u2014 Nexus S", "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"],
+ ["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
["BlackBerry \u2014 PlayBook 2.1", "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+"],
["BlackBerry \u2014 9900", "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.187 Mobile Safari/534.11+"],
- ["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
-
+ ["Chrome 31 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"],
+ ["Chrome 31 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"],
+ ["Chrome \u2014 Android Tablet", "Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"],
+ ["Chrome \u2014 Android Mobile", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"],
+ ["Firefox 14 \u2014 Android Mobile", "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0"],
+ ["Firefox 14 \u2014 Android Tablet", "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"],
+ ["Firefox 4 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
+ ["Firefox 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
+ ["Firefox 7 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
+ ["Firefox 7 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
+ ["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"],
+ ["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"],
+ ["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
+ ["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
+ ["iPad \u2014 iOS 7", "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53"],
+ ["iPad \u2014 iOS 6", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
+ ["iPhone \u2014 iOS 7", "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53"],
+ ["iPhone \u2014 iOS 6", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
["MeeGo \u2014 Nokia N9", "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13"],
+ ["Opera 18 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
+ ["Opera 18 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
+ ["Opera 12 \u2014 Mac", "Opera/9.80 (Macintosh; Intel Mac OS X 10.9.1) Presto/2.12.388 Version/12.16"],
+ ["Opera 12 \u2014 Windows", "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.16"],
];
WebInspector.OverridesView.UserAgentTab.prototype = {
@@ -705,8 +719,9 @@
var userAgent = WebInspector.settings.userAgent.get();
var userAgents = WebInspector.OverridesView.UserAgentTab._userAgents.concat([[WebInspector.UIString("Other"), "Other"]]);
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideUserAgent);
- fieldsetElement.disabled = WebInspector.isInspectingDevice();
+ var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.overrideUserAgent);
+ if (WebInspector.isInspectingDevice())
+ fieldsetElement.disabled = true;
this._selectElement = fieldsetElement.createChild("select");
fieldsetElement.createChild("br");
@@ -740,12 +755,18 @@
fieldsetElement.addEventListener("dblclick", textDoubleClicked.bind(this), false);
this._otherUserAgentElement.addEventListener("blur", textChanged.bind(this), false);
+ /**
+ * @this {WebInspector.OverridesView.UserAgentTab}
+ */
function textDoubleClicked()
{
this._selectElement.selectedIndex = userAgents.length - 1;
this._userAgentChanged();
}
+ /**
+ * @this {WebInspector.OverridesView.UserAgentTab}
+ */
function textChanged()
{
if (WebInspector.settings.userAgent.get() !== this._otherUserAgentElement.value)
@@ -794,10 +815,10 @@
this._otherUserAgentElement.value = value;
this._otherUserAgentElement.title = value;
}
- }
-}
+ },
-WebInspector.OverridesView.UserAgentTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
+ __proto__: WebInspector.OverridesView.Tab.prototype
+}
/**
@@ -864,7 +885,7 @@
*/
_createGeolocationOverrideElement: function(geolocation)
{
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideGeolocation);
+ var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.overrideGeolocation);
fieldsetElement.id = "geolocation-override-section";
var tableElement = fieldsetElement.createChild("table");
@@ -961,7 +982,7 @@
*/
_createDeviceOrientationOverrideElement: function(deviceOrientation)
{
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideDeviceOrientation);
+ var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.overrideDeviceOrientation);
fieldsetElement.id = "device-orientation-override-section";
var tableElement = fieldsetElement.createChild("table");
var rowElement = tableElement.createChild("tr");
@@ -996,7 +1017,7 @@
_setBoxOrientation: function(deviceOrientation)
{
var matrix = new WebKitCSSMatrix();
- this._boxMatrix = matrix.rotate(deviceOrientation.beta, deviceOrientation.gamma, deviceOrientation.alpha);
+ this._boxMatrix = matrix.rotate(-deviceOrientation.beta, deviceOrientation.gamma, -deviceOrientation.alpha);
this._boxElement.style.webkitTransform = this._boxMatrix.toString();
},
@@ -1019,7 +1040,7 @@
this._currentMatrix = rotationMatrix.multiply(this._boxMatrix)
this._boxElement.style.webkitTransform = this._currentMatrix;
var eulerAngles = WebInspector.Geometry.EulerAngles.fromRotationMatrix(this._currentMatrix);
- var newOrientation = new WebInspector.OverridesSupport.DeviceOrientation(eulerAngles.alpha, eulerAngles.beta, eulerAngles.gamma);
+ var newOrientation = new WebInspector.OverridesSupport.DeviceOrientation(-eulerAngles.alpha, -eulerAngles.beta, eulerAngles.gamma);
this._setDeviceOrientation(newOrientation, WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.UserDrag);
return false;
},
diff --git a/Source/devtools/front_end/OverviewGrid.js b/Source/devtools/front_end/OverviewGrid.js
index 8e64b81..7fdce6c 100644
--- a/Source/devtools/front_end/OverviewGrid.js
+++ b/Source/devtools/front_end/OverviewGrid.js
@@ -161,7 +161,7 @@
this._parentElement = parentElement;
this._dividersLabelBarElement = dividersLabelBarElement;
- WebInspector.installDragHandle(this._parentElement, this._startWindowSelectorDragging.bind(this), this._windowSelectorDragging.bind(this), this._endWindowSelectorDragging.bind(this), "ew-resize");
+ WebInspector.installDragHandle(this._parentElement, this._startWindowSelectorDragging.bind(this), this._windowSelectorDragging.bind(this), this._endWindowSelectorDragging.bind(this), "ew-resize", null);
WebInspector.installDragHandle(this._dividersLabelBarElement, this._startWindowDragging.bind(this), this._windowDragging.bind(this), null, "move");
this.windowLeft = 0.0;
@@ -212,7 +212,6 @@
if (this._enabled === enabled)
return;
this._enabled = enabled;
- this._parentElement.enableStyleClass("resize-enabled", enabled);
},
/**
diff --git a/Source/devtools/front_end/PaintProfiler.js b/Source/devtools/front_end/PaintProfiler.js
new file mode 100644
index 0000000..46ad15e
--- /dev/null
+++ b/Source/devtools/front_end/PaintProfiler.js
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @param {string} snapshotId
+ */
+WebInspector.PaintProfilerSnapshot = function(snapshotId)
+{
+ this._id = snapshotId;
+}
+
+WebInspector.PaintProfilerSnapshot.prototype = {
+ dispose: function()
+ {
+ LayerTreeAgent.releaseSnapshot(this._id);
+ },
+
+ /**
+ * @param {?number} firstStep
+ * @param {?number} lastStep
+ * @param {function(string=)} callback
+ */
+ requestImage: function(firstStep, lastStep, callback)
+ {
+ var wrappedCallback = InspectorBackend.wrapClientCallback(callback, "LayerTreeAgent.replaySnapshot(): ");
+ LayerTreeAgent.replaySnapshot(this._id, firstStep || undefined, lastStep || undefined, wrappedCallback);
+ },
+
+ /**
+ * @param {function(!Array.<!LayerTreeAgent.PaintProfile>=)} callback
+ */
+ profile: function(callback)
+ {
+ var wrappedCallback = InspectorBackend.wrapClientCallback(callback, "LayerTreeAgent.profileSnapshot(): ");
+ LayerTreeAgent.profileSnapshot(this._id, 5, 1, wrappedCallback);
+ }
+};
diff --git a/Source/devtools/front_end/PaintProfilerView.js b/Source/devtools/front_end/PaintProfilerView.js
new file mode 100644
index 0000000..50e00d5
--- /dev/null
+++ b/Source/devtools/front_end/PaintProfilerView.js
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2013 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @param {!WebInspector.LayerTreeModel} model
+ * @param {!WebInspector.Layers3DView} layers3DView
+ * @extends {WebInspector.View}
+ */
+WebInspector.PaintProfilerView = function(model, layers3DView)
+{
+ WebInspector.View.call(this);
+ this.element.classList.add("paint-profiler-view");
+
+ this._model = model;
+ this._layers3DView = layers3DView;
+
+ this._canvas = this.element.createChild("canvas", "fill");
+ this._context = this._canvas.getContext("2d");
+ this._selectionWindow = new WebInspector.OverviewGrid.Window(this.element, this.element);
+ this._selectionWindow.addEventListener(WebInspector.OverviewGrid.Events.WindowChanged, this._onWindowChanged, this);
+
+ this._innerBarWidth = 4 * window.devicePixelRatio;
+ this._minBarHeight = 4 * window.devicePixelRatio;
+ this._barPaddingWidth = 2 * window.devicePixelRatio;
+ this._outerBarWidth = this._innerBarWidth + this._barPaddingWidth;
+
+ this._reset();
+}
+
+WebInspector.PaintProfilerView.prototype = {
+ onResize: function()
+ {
+ this._update();
+ },
+
+ _update: function()
+ {
+ this._canvas.width = this.element.clientWidth * window.devicePixelRatio;
+ this._canvas.height = this.element.clientHeight * window.devicePixelRatio;
+ this._samplesPerBar = 0;
+ if (!this._profiles || !this._profiles.length)
+ return;
+
+ var maxBars = Math.floor((this._canvas.width - 2 * this._barPaddingWidth) / this._outerBarWidth);
+ var sampleCount = this._profiles[0].length;
+ this._samplesPerBar = Math.ceil(sampleCount / maxBars);
+ var barCount = Math.floor(sampleCount / this._samplesPerBar);
+
+ var maxBarTime = 0;
+ var barTimes = [];
+ for (var i = 0, lastBarIndex = 0, lastBarTime = 0; i < sampleCount;) {
+ for (var row = 0; row < this._profiles.length; row++)
+ lastBarTime += this._profiles[row][i];
+ ++i;
+ if (i - lastBarIndex == this._samplesPerBar || i == sampleCount) {
+ // Normalize by total number of samples accumulated.
+ lastBarTime /= this._profiles.length * (i - lastBarIndex);
+ barTimes.push(lastBarTime);
+ if (lastBarTime > maxBarTime)
+ maxBarTime = lastBarTime;
+ lastBarTime = 0;
+ lastBarIndex = i;
+ }
+ }
+ const paddingHeight = 4 * window.devicePixelRatio;
+ var scale = (this._canvas.height - paddingHeight - this._minBarHeight) / maxBarTime;
+ this._context.fillStyle = "rgba(110, 180, 110, 0.7)";
+ for (var i = 0; i < barTimes.length; ++i)
+ this._renderBar(i, barTimes[i] * scale + this._minBarHeight);
+ },
+
+ /**
+ * @param {number} index
+ * @param {number} height
+ */
+ _renderBar: function(index, height)
+ {
+ var x = this._barPaddingWidth + index * this._outerBarWidth;
+ var y = this._canvas.height - height;
+ this._context.fillRect(x, y, this._innerBarWidth, height);
+ },
+
+ _onWindowChanged: function()
+ {
+ if (this._updateImageTimer)
+ return;
+ this._updateImageTimer = setTimeout(this._updateImage.bind(this), 100);
+ },
+
+ _updateImage: function()
+ {
+ delete this._updateImageTimer;
+ if (!this._profiles || !this._profiles.length)
+ return;
+
+ var screenLeft = this._selectionWindow.windowLeft * this._canvas.width;
+ var screenRight = this._selectionWindow.windowRight * this._canvas.width;
+
+ var barLeft = Math.floor((screenLeft - this._barPaddingWidth) / this._outerBarWidth);
+ var barRight = Math.floor((screenRight - this._barPaddingWidth + this._innerBarWidth)/ this._outerBarWidth);
+
+ var stepLeft = Math.max(0, barLeft * this._samplesPerBar);
+ var stepRight = Math.min(barRight * this._samplesPerBar, this._profiles[0].length);
+ this._snapshot.requestImage(stepLeft, stepRight, this._layers3DView.showImageForLayer.bind(this._layers3DView, this._layer));
+ },
+
+ _reset: function()
+ {
+ this._snapshot = null;
+ this._profiles = null;
+ this._selectionWindow.reset();
+ },
+
+ /**
+ * @param {!WebInspector.Layer} layer
+ */
+ profile: function(layer)
+ {
+ this._reset();
+ this._layer = layer;
+ this._layer.requestSnapshot(onSnapshotDone.bind(this));
+
+ /**
+ * @param {!WebInspector.PaintProfilerSnapshot=} snapshot
+ * @this {WebInspector.PaintProfilerView}
+ */
+ function onSnapshotDone(snapshot)
+ {
+ this._snapshot = snapshot;
+ if (!snapshot) {
+ this._profiles = null;
+ this._update();
+ return;
+ }
+ snapshot.requestImage(null, null, this._layers3DView.showImageForLayer.bind(this._layers3DView, this._layer));
+ snapshot.profile(onProfileDone.bind(this));
+ }
+
+ /**
+ * @param {!Array.<!LayerTreeAgent.PaintProfile>=} profiles
+ * @this {WebInspector.PaintProfilerView}
+ */
+ function onProfileDone(profiles)
+ {
+ this._profiles = profiles;
+ this._update();
+ }
+ },
+
+ __proto__: WebInspector.View.prototype
+};
diff --git a/Source/devtools/front_end/Panel.js b/Source/devtools/front_end/Panel.js
index f8b6ad0..2e95c20 100644
--- a/Source/devtools/front_end/Panel.js
+++ b/Source/devtools/front_end/Panel.js
@@ -40,8 +40,6 @@
this._panelName = name;
this._shortcuts = /** !Object.<number, function(Event=):boolean> */ ({});
-
- WebInspector.settings[this._sidebarWidthSettingName()] = WebInspector.settings.createSetting(this._sidebarWidthSettingName(), undefined);
}
// Should by in sync with style declarations.
@@ -57,9 +55,12 @@
{
},
+ /**
+ * @return {!Element}
+ */
defaultFocusedElement: function()
{
- return this.sidebarTreeElement || this.element;
+ return this.element;
},
/**
@@ -85,79 +86,14 @@
{
},
- /**
- * @param {!Element=} parentElement
- * @param {string=} position
- * @param {number=} defaultWidth
- * @param {number=} defaultHeight
- */
- createSidebarView: function(parentElement, position, defaultWidth, defaultHeight)
- {
- if (this.splitView)
- return;
-
- if (!parentElement)
- parentElement = this.element;
-
- this.splitView = new WebInspector.SidebarView(position, this._sidebarWidthSettingName(), defaultWidth, defaultHeight);
- this.splitView.show(parentElement);
- this.splitView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this.sidebarResized.bind(this));
-
- this.sidebarElement = this.splitView.sidebarElement;
- },
-
- /**
- * @param {!Element=} parentElement
- * @param {string=} position
- * @param {number=} defaultWidth
- */
- createSidebarViewWithTree: function(parentElement, position, defaultWidth)
- {
- if (this.splitView)
- return;
-
- this.createSidebarView(parentElement, position);
-
- this.sidebarTreeElement = document.createElement("ol");
- this.sidebarTreeElement.className = "sidebar-tree";
- this.splitView.sidebarElement.appendChild(this.sidebarTreeElement);
- this.splitView.sidebarElement.classList.add("sidebar");
-
- this.sidebarTree = new TreeOutline(this.sidebarTreeElement);
- this.sidebarTree.panel = this;
- },
-
- _sidebarWidthSettingName: function()
- {
- return this._panelName + "SidebarWidth";
- },
-
// Should be implemented by ancestors.
-
get statusBarItems()
{
},
/**
- * @param {!WebInspector.Event} event
+ * @return {!Array.<!Element>}
*/
- sidebarResized: function(event)
- {
- },
-
- statusBarResized: function()
- {
- },
-
- /**
- * @param {!Element} anchor
- * @return {boolean}
- */
- showAnchorLocation: function(anchor)
- {
- return false;
- },
-
elementsToRestoreScrollPositionsFor: function()
{
return [];
@@ -209,26 +145,92 @@
}
/**
+ * @extends {WebInspector.Panel}
+ * @param {number=} defaultWidth
* @constructor
- * @param {string} name
- * @param {string} title
- * @param {string=} className
- * @param {string=} scriptName
- * @param {!WebInspector.Panel=} panel
*/
-WebInspector.PanelDescriptor = function(name, title, className, scriptName, panel)
+WebInspector.PanelWithSidebarTree = function(name, defaultWidth)
{
- this._name = name;
- this._title = title;
- this._className = className;
- this._scriptName = scriptName;
- this._panel = panel;
+ WebInspector.Panel.call(this, name);
+
+ this._panelSplitView = new WebInspector.SplitView(true, false, this._panelName + "SidebarWidth", defaultWidth || 200);
+ this._panelSplitView.setSidebarElementConstraints(Preferences.minSidebarWidth);
+ this._panelSplitView.show(this.element);
+
+ var sidebarElement = this._panelSplitView.sidebarElement();
+ sidebarElement.classList.add("sidebar");
+ var sidebarTreeElement = sidebarElement.createChild("ol", "sidebar-tree");
+ this.sidebarTree = new TreeOutline(sidebarTreeElement);
+}
+
+WebInspector.PanelWithSidebarTree.prototype = {
+ /**
+ * @return {!Element}
+ */
+ sidebarElement: function()
+ {
+ return this._panelSplitView.sidebarElement();
+ },
+
+ /**
+ * @return {!Element} element
+ */
+ mainElement: function()
+ {
+ return this._panelSplitView.mainElement();
+ },
+
+ /**
+ * @return {!Element}
+ */
+ defaultFocusedElement: function()
+ {
+ return this.sidebarTree.element || this.element;
+ },
+
+ __proto__: WebInspector.Panel.prototype
+}
+
+/**
+ * @interface
+ */
+WebInspector.PanelDescriptor = function()
+{
}
WebInspector.PanelDescriptor.prototype = {
/**
* @return {string}
*/
+ name: function() {},
+
+ /**
+ * @return {string}
+ */
+ title: function() {},
+
+ /**
+ * @return {!WebInspector.Panel}
+ */
+ panel: function() {}
+}
+
+/**
+ * @constructor
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @implements {WebInspector.PanelDescriptor}
+ */
+WebInspector.ModuleManagerExtensionPanelDescriptor = function(extension)
+{
+ this._name = extension.descriptor()["name"];
+ this._title = WebInspector.UIString(extension.descriptor()["title"]);
+ this._extension = extension;
+}
+
+WebInspector.ModuleManagerExtensionPanelDescriptor.prototype = {
+ /**
+ * @return {string}
+ */
name: function()
{
return this._name;
@@ -247,21 +249,6 @@
*/
panel: function()
{
- if (this._panel)
- return this._panel;
- if (!this._isCreatingPanel) {
- var oldStackTraceLimit = Error.stackTraceLimit;
- Error.stackTraceLimit = 50;
- console.assert(!this._isCreatingPanel, "PanelDescriptor.panel() is called from inside itself: " + new Error().stack);
- Error.stackTraceLimit = oldStackTraceLimit;
- }
- if (this._scriptName)
- loadScript(this._scriptName);
- this._isCreatingPanel = true;
- this._panel = new WebInspector[this._className];
- delete this._isCreatingPanel;
- return this._panel;
- },
-
- registerShortcuts: function() {}
+ return /** @type {!WebInspector.Panel} */ (this._extension.instance());
+ }
}
diff --git a/Source/devtools/front_end/ParsedURL.js b/Source/devtools/front_end/ParsedURL.js
index 046094d..89b9bfb 100644
--- a/Source/devtools/front_end/ParsedURL.js
+++ b/Source/devtools/front_end/ParsedURL.js
@@ -238,6 +238,9 @@
return this._displayName;
},
+ /**
+ * @return {string}
+ */
dataURLDisplayName: function()
{
if (this._dataURLDisplayName)
@@ -248,11 +251,17 @@
return this._dataURLDisplayName;
},
+ /**
+ * @return {boolean}
+ */
isAboutBlank: function()
{
return this.url === "about:blank";
},
+ /**
+ * @return {boolean}
+ */
isDataURL: function()
{
return this.scheme === "data";
diff --git a/Source/devtools/front_end/PieChart.js b/Source/devtools/front_end/PieChart.js
index 036b4ce..280806d 100644
--- a/Source/devtools/front_end/PieChart.js
+++ b/Source/devtools/front_end/PieChart.js
@@ -70,5 +70,7 @@
innerSliceElement.style.backgroundColor = color;
innerSliceElement.style.webkitTransform = "rotate(" + Number(sliceAngle).toFixed(2) + "deg)";
this._lastAngle += sliceAngle;
+ if (this._lastAngle > 360)
+ console.assert("Pie chard slices are greater than total.");
}
}
diff --git a/Source/devtools/front_end/Platform.js b/Source/devtools/front_end/Platform.js
new file mode 100644
index 0000000..f5a545b
--- /dev/null
+++ b/Source/devtools/front_end/Platform.js
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2014 Google 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "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 OR ITS 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.
+ */
+
+WebInspector.platform = function()
+{
+ if (!WebInspector._platform)
+ WebInspector._platform = InspectorFrontendHost.platform();
+ return WebInspector._platform;
+}
+
+WebInspector.isMac = function()
+{
+ if (typeof WebInspector._isMac === "undefined")
+ WebInspector._isMac = WebInspector.platform() === "mac";
+
+ return WebInspector._isMac;
+}
+
+WebInspector.isWin = function()
+{
+ if (typeof WebInspector._isWin === "undefined")
+ WebInspector._isWin = WebInspector.platform() === "windows";
+
+ return WebInspector._isWin;
+}
+
+WebInspector.PlatformFlavor = {
+ WindowsVista: "windows-vista",
+ MacTiger: "mac-tiger",
+ MacLeopard: "mac-leopard",
+ MacSnowLeopard: "mac-snowleopard",
+ MacLion: "mac-lion"
+}
+
+WebInspector.platformFlavor = function()
+{
+ function detectFlavor()
+ {
+ const userAgent = navigator.userAgent;
+
+ if (WebInspector.platform() === "windows") {
+ var match = userAgent.match(/Windows NT (\d+)\.(?:\d+)/);
+ if (match && match[1] >= 6)
+ return WebInspector.PlatformFlavor.WindowsVista;
+ return null;
+ } else if (WebInspector.platform() === "mac") {
+ var match = userAgent.match(/Mac OS X\s*(?:(\d+)_(\d+))?/);
+ if (!match || match[1] != 10)
+ return WebInspector.PlatformFlavor.MacSnowLeopard;
+ switch (Number(match[2])) {
+ case 4:
+ return WebInspector.PlatformFlavor.MacTiger;
+ case 5:
+ return WebInspector.PlatformFlavor.MacLeopard;
+ case 6:
+ return WebInspector.PlatformFlavor.MacSnowLeopard;
+ case 7:
+ return WebInspector.PlatformFlavor.MacLion;
+ case 8: // Matches the default version
+ case 9: // Matches the default version
+ default:
+ return "";
+ }
+ }
+ }
+
+ if (!WebInspector._platformFlavor)
+ WebInspector._platformFlavor = detectFlavor();
+
+ return WebInspector._platformFlavor;
+}
+
+WebInspector.port = function()
+{
+ if (!WebInspector._port)
+ WebInspector._port = InspectorFrontendHost.port();
+
+ return WebInspector._port;
+}
diff --git a/Source/devtools/front_end/PlatformFontsSidebarPane.js b/Source/devtools/front_end/PlatformFontsSidebarPane.js
index 0f79214..29db225 100644
--- a/Source/devtools/front_end/PlatformFontsSidebarPane.js
+++ b/Source/devtools/front_end/PlatformFontsSidebarPane.js
@@ -80,7 +80,7 @@
/**
* @param {!WebInspector.DOMNode} node
- * @param {?String} cssFamilyName
+ * @param {?string} cssFamilyName
* @param {?Array.<!CSSAgent.PlatformFontUsage>} platformFonts
*/
_refreshUI: function(node, cssFamilyName, platformFonts)
diff --git a/Source/devtools/front_end/Popover.js b/Source/devtools/front_end/Popover.js
index 2deb9e4..042b973 100644
--- a/Source/devtools/front_end/Popover.js
+++ b/Source/devtools/front_end/Popover.js
@@ -153,10 +153,13 @@
// Skinny tooltips are not pretty, their arrow location is not nice.
preferredWidth = Math.max(preferredWidth, 50);
- const totalWidth = window.innerWidth;
- const totalHeight = window.innerHeight;
+ // Position relative to main DevTools element.
+ const container = WebInspector.inspectorView.devtoolsElement();
+ const totalWidth = container.offsetWidth;
+ const totalHeight = container.offsetHeight;
var anchorBox = anchorElement instanceof AnchorBox ? anchorElement : anchorElement.boxInWindow(window);
+ anchorBox = anchorBox.relativeToElement(container);
var newElementPosition = { x: 0, y: 0, width: preferredWidth + scrollerWidth, height: preferredHeight };
var verticalAlignment;
@@ -215,7 +218,7 @@
}
this.element.className = "popover custom-popup-vertical-scroll custom-popup-horizontal-scroll " + verticalAlignment + "-" + horizontalAlignment + "-arrow";
- this.element.positionAt(newElementPosition.x - borderWidth, newElementPosition.y - borderWidth);
+ this.element.positionAt(newElementPosition.x - borderWidth, newElementPosition.y - borderWidth, container);
this.element.style.width = newElementPosition.width + borderWidth * 2 + "px";
this.element.style.height = newElementPosition.height + borderWidth * 2 + "px";
},
@@ -305,6 +308,9 @@
if (!this._popover || this._hidePopoverTimer)
return;
+ /**
+ * @this {WebInspector.PopoverHelper}
+ */
function doHide()
{
this._hidePopover();
@@ -333,6 +339,9 @@
}
},
+ /**
+ * @return {boolean}
+ */
isPopoverVisible: function()
{
return !!this._popover;
diff --git a/Source/devtools/front_end/ProfileDataGridTree.js b/Source/devtools/front_end/ProfileDataGridTree.js
index 4711b8f..8ed6aa1 100644
--- a/Source/devtools/front_end/ProfileDataGridTree.js
+++ b/Source/devtools/front_end/ProfileDataGridTree.js
@@ -60,13 +60,11 @@
var data = {};
if (this._deoptReason) {
- var div = document.createElement("div");
- var marker = div.createChild("span");
- marker.className = "profile-warn-marker";
+ var content = document.createDocumentFragment();
+ var marker = content.createChild("span", "profile-warn-marker");
marker.title = WebInspector.UIString("Not optimized: %s", this._deoptReason);
- var functionName = div.createChild("span");
- functionName.textContent = this.functionName;
- data["function"] = div;
+ content.createTextChild(this.functionName);
+ data["function"] = content;
} else
data["function"] = this.functionName;
@@ -203,6 +201,7 @@
/**
* @param {!WebInspector.ProfileDataGridNode} node
+ * @return {?WebInspector.ProfileDataGridNode}
*/
findChild: function(node)
{
diff --git a/Source/devtools/front_end/ProfileLauncherView.js b/Source/devtools/front_end/ProfileLauncherView.js
index df1879f..7689b57 100644
--- a/Source/devtools/front_end/ProfileLauncherView.js
+++ b/Source/devtools/front_end/ProfileLauncherView.js
@@ -47,6 +47,10 @@
this._controlButton = this._contentElement.createChild("button", "control-profiling");
this._controlButton.addEventListener("click", this._controlButtonClicked.bind(this), false);
+
+ this._loadButton = this._contentElement.createChild("button", "load-profile");
+ this._loadButton.textContent = WebInspector.UIString("Load");
+ this._loadButton.addEventListener("click", this._loadButtonClicked.bind(this), false);
}
WebInspector.ProfileLauncherView.prototype = {
@@ -70,6 +74,11 @@
this._panel.toggleRecordButton();
},
+ _loadButtonClicked: function()
+ {
+ this._panel.showLoadFromFileDialog();
+ },
+
_updateControls: function()
{
if (this._isEnabled)
@@ -91,14 +100,12 @@
profileStarted: function()
{
this._isProfiling = true;
- WebInspector.profileManager.notifyStarted(this._profileTypeId);
this._updateControls();
},
profileFinished: function()
{
this._isProfiling = false;
- WebInspector.profileManager.notifyStoped(this._profileTypeId);
this._updateControls();
},
@@ -154,6 +161,7 @@
var optionElement = document.createElement("input");
labelElement.insertBefore(optionElement, labelElement.firstChild);
this._typeIdToOptionElement[profileType.id] = optionElement;
+ optionElement._profileType = profileType;
optionElement.type = "radio";
optionElement.name = "profile-type";
optionElement.style.hidden = true;
@@ -167,13 +175,12 @@
restoreSelectedProfileType: function()
{
- var typeName = WebInspector.settings.selectedProfileType.get();
- if (!(typeName in this._typeIdToOptionElement))
- typeName = Object.keys(this._typeIdToOptionElement)[0];
- this._typeIdToOptionElement[typeName].checked = true;
- this.dispatchEventToListeners(
- WebInspector.MultiProfileLauncherView.EventTypes.ProfileTypeSelected,
- this._panel.getProfileType(typeName));
+ var typeId = WebInspector.settings.selectedProfileType.get();
+ if (!(typeId in this._typeIdToOptionElement))
+ typeId = Object.keys(this._typeIdToOptionElement)[0];
+ this._typeIdToOptionElement[typeId].checked = true;
+ var type = this._typeIdToOptionElement[typeId]._profileType;
+ this.dispatchEventToListeners(WebInspector.MultiProfileLauncherView.EventTypes.ProfileTypeSelected, type);
},
_controlButtonClicked: function()
@@ -207,14 +214,12 @@
profileStarted: function()
{
this._isProfiling = true;
- WebInspector.profileManager.notifyStarted(this._profileTypeId);
this._updateControls();
},
profileFinished: function()
{
this._isProfiling = false;
- WebInspector.profileManager.notifyStoped(this._profileTypeId);
this._updateControls();
},
diff --git a/Source/devtools/front_end/ProfilesPanel.js b/Source/devtools/front_end/ProfilesPanel.js
index 55a56ad..44989f7 100644
--- a/Source/devtools/front_end/ProfilesPanel.js
+++ b/Source/devtools/front_end/ProfilesPanel.js
@@ -31,14 +31,16 @@
*/
WebInspector.ProfileType = function(id, name)
{
+ WebInspector.Object.call(this);
this._id = id;
this._name = name;
/** @type {!Array.<!WebInspector.ProfileHeader>} */
this._profiles = [];
- /** @type {?WebInspector.SidebarSectionTreeElement} */
- this.treeElement = null;
/** @type {?WebInspector.ProfileHeader} */
this._profileBeingRecorded = null;
+ this._nextProfileUid = 1;
+
+ window.addEventListener("unload", this._clearTempStorage.bind(this), false);
}
WebInspector.ProfileType.Events = {
@@ -126,6 +128,7 @@
/**
* @param {!WebInspector.ProfileHeader} profile
* @return {boolean}
+ * @this {WebInspector.ProfileType}
*/
function isFinished(profile)
{
@@ -195,14 +198,17 @@
*/
removeProfile: function(profile)
{
- if (this._profileBeingRecorded === profile)
- this._profileBeingRecorded = null;
- for (var i = 0; i < this._profiles.length; ++i) {
- if (this._profiles[i].uid === profile.uid) {
- this._profiles.splice(i, 1);
- break;
- }
- }
+ var index = this._profiles.indexOf(profile);
+ if (index === -1)
+ return;
+ this._profiles.splice(index, 1);
+ this._disposeProfile(profile);
+ },
+
+ _clearTempStorage: function()
+ {
+ for (var i = 0; i < this._profiles.length; ++i)
+ this._profiles[i].removeTempFile();
},
/**
@@ -214,21 +220,31 @@
return this._profileBeingRecorded;
},
+ profileBeingRecordedRemoved: function()
+ {
+ },
+
_reset: function()
{
var profiles = this._profiles.slice(0);
- for (var i = 0; i < profiles.length; ++i) {
- var profile = profiles[i];
- var view = profile.existingView();
- if (view) {
- view.detach();
- if ("dispose" in view)
- view.dispose();
- }
- this.dispatchEventToListeners(WebInspector.ProfileType.Events.RemoveProfileHeader, profile);
- }
- this.treeElement.removeChildren();
+ for (var i = 0; i < profiles.length; ++i)
+ this._disposeProfile(profiles[i]);
this._profiles = [];
+
+ this._nextProfileUid = 1;
+ },
+
+ /**
+ * @param {!WebInspector.ProfileHeader} profile
+ */
+ _disposeProfile: function(profile)
+ {
+ this.dispatchEventToListeners(WebInspector.ProfileType.Events.RemoveProfileHeader, profile);
+ profile.dispose();
+ if (this._profileBeingRecorded === profile) {
+ this.profileBeingRecordedRemoved();
+ this._profileBeingRecorded = null;
+ }
},
__proto__: WebInspector.Object.prototype
@@ -236,19 +252,35 @@
/**
* @constructor
+ * @extends {WebInspector.Object}
* @param {!WebInspector.ProfileType} profileType
* @param {string} title
- * @param {number=} uid
*/
-WebInspector.ProfileHeader = function(profileType, title, uid)
+WebInspector.ProfileHeader = function(profileType, title)
{
this._profileType = profileType;
this.title = title;
- this.uid = (uid === undefined) ? -1 : uid;
+ this.uid = profileType._nextProfileUid++;
this._fromFile = false;
}
-WebInspector.ProfileHeader._nextProfileFromFileUid = 1;
+/**
+ * @constructor
+ * @param {?string} subtitle
+ * @param {boolean} wait
+ */
+WebInspector.ProfileHeader.StatusUpdate = function(subtitle, wait)
+{
+ /** @type {?string} */
+ this.subtitle = subtitle;
+ /** @type {boolean} */
+ this.wait = wait;
+}
+
+WebInspector.ProfileHeader.Events = {
+ UpdateStatus: "UpdateStatus",
+ ProfileReceived: "ProfileReceived"
+}
WebInspector.ProfileHeader.prototype = {
/**
@@ -260,6 +292,15 @@
},
/**
+ * @param {?string} subtitle
+ * @param {boolean=} wait
+ */
+ updateStatus: function(subtitle, wait)
+ {
+ this.dispatchEventToListeners(WebInspector.ProfileHeader.Events.UpdateStatus, new WebInspector.ProfileHeader.StatusUpdate(subtitle, !!wait));
+ },
+
+ /**
* Must be implemented by subclasses.
* @return {!WebInspector.ProfileSidebarTreeElement}
*/
@@ -269,33 +310,19 @@
},
/**
- * @return {?WebInspector.View}
- */
- existingView: function()
- {
- return this._view;
- },
-
- /**
- * @param {!WebInspector.ProfilesPanel} panel
* @return {!WebInspector.View}
*/
- view: function(panel)
- {
- if (!this._view)
- this._view = this.createView(panel);
- return this._view;
- },
-
- /**
- * @param {!WebInspector.ProfilesPanel} panel
- * @return {!WebInspector.View}
- */
- createView: function(panel)
+ createView: function()
{
throw new Error("Not implemented.");
},
+ removeTempFile: function()
+ {
+ if (this._tempFile)
+ this._tempFile.remove();
+ },
+
dispose: function()
{
},
@@ -339,53 +366,44 @@
setFromFile: function()
{
this._fromFile = true;
- this.uid = "From file #" + WebInspector.ProfileHeader._nextProfileFromFileUid++;
- }
+ },
+
+ __proto__: WebInspector.Object.prototype
}
/**
* @constructor
* @implements {WebInspector.Searchable}
- * @implements {WebInspector.ContextMenu.Provider}
- * @extends {WebInspector.Panel}
- * @param {string=} name
- * @param {!WebInspector.ProfileType=} type
+ * @extends {WebInspector.PanelWithSidebarTree}
*/
-WebInspector.ProfilesPanel = function(name, type)
+WebInspector.ProfilesPanel = function()
{
- // If the name is not specified the ProfilesPanel works in multi-profile mode.
- var singleProfileMode = typeof name !== "undefined";
- name = name || "profiles";
- WebInspector.Panel.call(this, name);
+ WebInspector.PanelWithSidebarTree.call(this, "profiles");
this.registerRequiredCSS("panelEnablerView.css");
this.registerRequiredCSS("heapProfiler.css");
this.registerRequiredCSS("profilesPanel.css");
- this.createSidebarViewWithTree();
-
- this.splitView.mainElement.classList.add("vbox");
- this.splitView.sidebarElement.classList.add("vbox");
-
this._searchableView = new WebInspector.SearchableView(this);
- this._searchableView.show(this.splitView.mainElement);
+
+ var mainView = new WebInspector.View();
+ this._searchableView.show(mainView.element);
+ mainView.show(this.mainElement());
this.profilesItemTreeElement = new WebInspector.ProfilesSidebarTreeElement(this);
this.sidebarTree.appendChild(this.profilesItemTreeElement);
- this._singleProfileMode = singleProfileMode;
- this._profileTypesByIdMap = {};
-
this.profileViews = document.createElement("div");
this.profileViews.id = "profile-views";
this.profileViews.classList.add("vbox");
this._searchableView.element.appendChild(this.profileViews);
- var statusBarContainer = this.splitView.mainElement.createChild("div", "profiles-status-bar");
+ var statusBarContainer = document.createElementWithClass("div", "profiles-status-bar");
+ mainView.element.insertBefore(statusBarContainer, mainView.element.firstChild);
this._statusBarElement = statusBarContainer.createChild("div", "status-bar");
- var sidebarTreeBox = this.sidebarElement.createChild("div", "profiles-sidebar-tree-box");
- sidebarTreeBox.appendChild(this.sidebarTreeElement);
- var statusBarContainerLeft = this.sidebarElement.createChild("div", "profiles-status-bar");
+ this.sidebarElement().classList.add("profiles-sidebar-tree-box");
+ var statusBarContainerLeft = document.createElementWithClass("div", "profiles-status-bar");
+ this.sidebarElement().insertBefore(statusBarContainerLeft, this.sidebarElement().firstChild);
this._statusBarButtons = statusBarContainerLeft.createChild("div", "status-bar");
this.recordButton = new WebInspector.StatusBarButton("", "record-profile-status-bar-item");
@@ -393,41 +411,74 @@
this._statusBarButtons.appendChild(this.recordButton.element);
this.clearResultsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear all profiles."), "clear-status-bar-item");
- this.clearResultsButton.addEventListener("click", this._clearProfiles, this);
+ this.clearResultsButton.addEventListener("click", this._reset, this);
this._statusBarButtons.appendChild(this.clearResultsButton.element);
this._profileTypeStatusBarItemsContainer = this._statusBarElement.createChild("div");
this._profileViewStatusBarItemsContainer = this._statusBarElement.createChild("div");
- if (singleProfileMode) {
- this._launcherView = this._createLauncherView();
- this._registerProfileType(/** @type {!WebInspector.ProfileType} */ (type));
- this._selectedProfileType = type;
- this._updateProfileTypeSpecificUI();
- } else {
- this._launcherView = new WebInspector.MultiProfileLauncherView(this);
- this._launcherView.addEventListener(WebInspector.MultiProfileLauncherView.EventTypes.ProfileTypeSelected, this._onProfileTypeSelected, this);
+ this._profileGroups = {};
+ this._launcherView = new WebInspector.MultiProfileLauncherView(this);
+ this._launcherView.addEventListener(WebInspector.MultiProfileLauncherView.EventTypes.ProfileTypeSelected, this._onProfileTypeSelected, this);
- this._registerProfileType(new WebInspector.CPUProfileType());
- this._registerProfileType(new WebInspector.HeapSnapshotProfileType());
- this._registerProfileType(new WebInspector.TrackingHeapSnapshotProfileType(this));
- if (!WebInspector.WorkerManager.isWorkerFrontend() && WebInspector.experimentsSettings.canvasInspection.isEnabled())
- this._registerProfileType(new WebInspector.CanvasProfileType());
- this._launcherView.restoreSelectedProfileType();
- }
-
- this._reset();
+ this._profileToView = [];
+ this._typeIdToSidebarSection = {};
+ var types = WebInspector.ProfileTypeRegistry.instance.profileTypes();
+ for (var i = 0; i < types.length; i++)
+ this._registerProfileType(types[i]);
+ this._launcherView.restoreSelectedProfileType();
+ this.profilesItemTreeElement.select();
+ this._showLauncherView();
this._createFileSelectorElement();
this.element.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), true);
this._registerShortcuts();
- WebInspector.ContextMenu.registerProvider(this);
-
this._configureCpuProfilerSamplingInterval();
WebInspector.settings.highResolutionCpuProfiling.addChangeListener(this._configureCpuProfilerSamplingInterval, this);
}
+
+/**
+ * @constructor
+ */
+WebInspector.ProfileTypeRegistry = function() {
+ this._profileTypes = [];
+
+ this.cpuProfileType = new WebInspector.CPUProfileType();
+ this._addProfileType(this.cpuProfileType);
+ this.heapSnapshotProfileType = new WebInspector.HeapSnapshotProfileType();
+ this._addProfileType(this.heapSnapshotProfileType);
+ this.trackingHeapSnapshotProfileType = new WebInspector.TrackingHeapSnapshotProfileType();
+ this._addProfileType(this.trackingHeapSnapshotProfileType);
+ HeapProfilerAgent.enable();
+
+ if (!WebInspector.isWorkerFrontend() && WebInspector.experimentsSettings.canvasInspection.isEnabled()) {
+ this.canvasProfileType = new WebInspector.CanvasProfileType();
+ this._addProfileType(this.canvasProfileType);
+ }
+}
+
+WebInspector.ProfileTypeRegistry.prototype = {
+ /**
+ * @param {!WebInspector.ProfileType} profileType
+ */
+ _addProfileType: function(profileType)
+ {
+ this._profileTypes.push(profileType);
+ },
+
+ /**
+ * @return {!Array.<!WebInspector.ProfileType>}
+ */
+ profileTypes: function()
+ {
+ return this._profileTypes;
+ }
+}
+
+
+
WebInspector.ProfilesPanel.prototype = {
/**
* @return {!WebInspector.SearchableView}
@@ -455,8 +506,9 @@
_findProfileTypeByExtension: function(fileName)
{
- for (var id in this._profileTypesByIdMap) {
- var type = this._profileTypesByIdMap[id];
+ var types = WebInspector.ProfileTypeRegistry.instance.profileTypes();
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i];
var extension = type.fileExtension();
if (!extension)
continue;
@@ -468,7 +520,7 @@
_registerShortcuts: function()
{
- this.registerShortcuts(WebInspector.ProfilesPanelDescriptor.ShortcutKeys.StartStopRecording, this.toggleRecordButton.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.ProfilesPanelShortcuts.StartStopRecording, this.toggleRecordButton.bind(this));
},
_configureCpuProfilerSamplingInterval: function()
@@ -492,8 +544,9 @@
var profileType = this._findProfileTypeByExtension(file.name);
if (!profileType) {
var extensions = [];
- for (var id in this._profileTypesByIdMap) {
- var extension = this._profileTypesByIdMap[id].fileExtension();
+ var types = WebInspector.ProfileTypeRegistry.instance.profileTypes();
+ for (var i = 0; i < types.length; i++) {
+ var extension = types[i].fileExtension();
if (!extension)
continue;
extensions.push(extension);
@@ -522,13 +575,20 @@
if (isProfiling) {
this._launcherView.profileStarted();
if (type.hasTemporaryView())
- this._showProfile(type.profileBeingRecorded());
+ this.showProfile(type.profileBeingRecorded());
} else {
this._launcherView.profileFinished();
}
return true;
},
+ _profileBeingRecordedRemoved: function()
+ {
+ this.recordButton.toggled = false;
+ this.recordButton.title = this._selectedProfileType.buttonTooltip;
+ this._launcherView.profileFinished();
+ },
+
/**
* @param {!WebInspector.Event} event
*/
@@ -554,8 +614,9 @@
{
WebInspector.Panel.prototype.reset.call(this);
- for (var typeId in this._profileTypesByIdMap)
- this._profileTypesByIdMap[typeId]._reset();
+ var types = WebInspector.ProfileTypeRegistry.instance.profileTypes();
+ for (var i = 0; i < types.length; i++)
+ types[i]._reset();
delete this.visibleView;
delete this.currentQuery;
@@ -567,7 +628,7 @@
this.recordButton.title = this._selectedProfileType.buttonTooltip;
this._launcherView.profileFinished();
- this.sidebarTreeElement.classList.remove("some-expandable");
+ this.sidebarTree.element.classList.remove("some-expandable");
this._launcherView.detach();
this.profileViews.removeChildren();
@@ -590,13 +651,6 @@
this.visibleView = this._launcherView;
},
- _clearProfiles: function()
- {
- ProfilerAgent.clearProfiles();
- HeapProfilerAgent.clearProfiles();
- this._reset();
- },
-
_garbageCollectButtonClicked: function()
{
HeapProfilerAgent.collectGarbage();
@@ -607,23 +661,35 @@
*/
_registerProfileType: function(profileType)
{
- this._profileTypesByIdMap[profileType.id] = profileType;
this._launcherView.addProfileType(profileType);
- profileType.treeElement = new WebInspector.SidebarSectionTreeElement(profileType.treeItemTitle, null, true);
- profileType.treeElement.hidden = !this._singleProfileMode;
- this.sidebarTree.appendChild(profileType.treeElement);
- profileType.treeElement.childrenListElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), true);
+ var profileTypeSection = new WebInspector.ProfileTypeSidebarSection(profileType);
+ this._typeIdToSidebarSection[profileType.id] = profileTypeSection
+ this.sidebarTree.appendChild(profileTypeSection);
+ profileTypeSection.childrenListElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), true);
+
+ /**
+ * @this {WebInspector.ProfilesPanel}
+ */
function onAddProfileHeader(event)
{
this._addProfileHeader(event.data);
}
+
+ /**
+ * @this {WebInspector.ProfilesPanel}
+ */
function onRemoveProfileHeader(event)
{
this._removeProfileHeader(event.data);
}
+
profileType.addEventListener(WebInspector.ProfileType.Events.ViewUpdated, this._updateProfileTypeSpecificUI, this);
profileType.addEventListener(WebInspector.ProfileType.Events.AddProfileHeader, onAddProfileHeader, this);
profileType.addEventListener(WebInspector.ProfileType.Events.RemoveProfileHeader, onRemoveProfileHeader, this);
+
+ var profiles = profileType.getProfiles();
+ for (var i = 0; i < profiles.length; i++)
+ this._addProfileHeader(profiles[i]);
},
/**
@@ -645,21 +711,15 @@
if (this.visibleView instanceof WebInspector.HeapSnapshotView) {
this.visibleView.populateContextMenu(contextMenu, event);
}
- if (element !== this.element || event.srcElement === this.sidebarElement) {
+ if (element !== this.element || event.srcElement === this.sidebarElement()) {
contextMenu.appendItem(WebInspector.UIString("Load\u2026"), this._fileSelectorElement.click.bind(this._fileSelectorElement));
}
contextMenu.show();
},
- /**
- * @nosideeffects
- * @param {string} text
- * @param {string} profileTypeId
- * @return {string}
- */
- _makeTitleKey: function(text, profileTypeId)
+ showLoadFromFileDialog: function()
{
- return escape(text) + '/' + escape(profileTypeId);
+ this._fileSelectorElement.click();
},
/**
@@ -669,60 +729,9 @@
{
var profileType = profile.profileType();
var typeId = profileType.id;
- var sidebarParent = profileType.treeElement;
- sidebarParent.hidden = false;
- var small = false;
- var alternateTitle;
-
- if (!profile.fromFile() && profile.profileType().profileBeingRecorded() !== profile) {
- var profileTitleKey = this._makeTitleKey(profile.title, typeId);
- if (!(profileTitleKey in this._profileGroups))
- this._profileGroups[profileTitleKey] = [];
-
- var group = this._profileGroups[profileTitleKey];
- group.push(profile);
- if (group.length === 2) {
- // Make a group TreeElement now that there are 2 profiles.
- group._profilesTreeElement = new WebInspector.ProfileGroupSidebarTreeElement(this, profile.title);
-
- // Insert at the same index for the first profile of the group.
- var index = sidebarParent.children.indexOf(group[0]._profilesTreeElement);
- sidebarParent.insertChild(group._profilesTreeElement, index);
-
- // Move the first profile to the group.
- var selected = group[0]._profilesTreeElement.selected;
- sidebarParent.removeChild(group[0]._profilesTreeElement);
- group._profilesTreeElement.appendChild(group[0]._profilesTreeElement);
- if (selected)
- group[0]._profilesTreeElement.revealAndSelect();
-
- group[0]._profilesTreeElement.small = true;
- group[0]._profilesTreeElement.mainTitle = WebInspector.UIString("Run %d", 1);
-
- this.sidebarTreeElement.classList.add("some-expandable");
- }
-
- if (group.length >= 2) {
- sidebarParent = group._profilesTreeElement;
- alternateTitle = WebInspector.UIString("Run %d", group.length);
- small = true;
- }
- }
-
- var profileTreeElement = profile.createSidebarTreeElement();
- profile.sidebarElement = profileTreeElement;
- profileTreeElement.small = small;
- if (alternateTitle)
- profileTreeElement.mainTitle = alternateTitle;
- profile._profilesTreeElement = profileTreeElement;
-
- sidebarParent.appendChild(profileTreeElement);
+ this._typeIdToSidebarSection[typeId].addProfileHeader(profile);;
if (!this.visibleView || this.visibleView === this._launcherView)
- this._showProfile(profile);
-
- this.dispatchEventToListeners("profile added", {
- type: typeId
- });
+ this.showProfile(profile);
},
/**
@@ -730,35 +739,22 @@
*/
_removeProfileHeader: function(profile)
{
- profile.dispose();
- profile.profileType().removeProfile(profile);
+ if (profile.profileType()._profileBeingRecorded === profile)
+ this._profileBeingRecordedRemoved();
- var sidebarParent = profile.profileType().treeElement;
- var profileTitleKey = this._makeTitleKey(profile.title, profile.profileType().id);
- var group = this._profileGroups[profileTitleKey];
- if (group) {
- group.splice(group.indexOf(profile), 1);
- if (group.length === 1) {
- // Move the last profile out of its group and remove the group.
- var index = sidebarParent.children.indexOf(group._profilesTreeElement);
- sidebarParent.insertChild(group[0]._profilesTreeElement, index);
- group[0]._profilesTreeElement.small = false;
- group[0]._profilesTreeElement.mainTitle = group[0].title;
- sidebarParent.removeChild(group._profilesTreeElement);
- }
- if (group.length !== 0)
- sidebarParent = group._profilesTreeElement;
- else
- delete this._profileGroups[profileTitleKey];
- }
- sidebarParent.removeChild(profile._profilesTreeElement);
+ var i = this._indexOfViewForProfile(profile);
+ if (i !== -1)
+ this._profileToView.splice(i, 1);
+
+ var profileType = profile.profileType();
+ var typeId = profileType.id;
+ var sectionIsEmpty = this._typeIdToSidebarSection[typeId].removeProfileHeader(profile);
// No other item will be selected if there aren't any other profiles, so
// make sure that view gets cleared when the last profile is removed.
- if (!sidebarParent.children.length) {
+ if (sectionIsEmpty) {
this.profilesItemTreeElement.select();
this._showLauncherView();
- sidebarParent.hidden = !this._singleProfileMode;
}
},
@@ -766,12 +762,12 @@
* @param {?WebInspector.ProfileHeader} profile
* @return {?WebInspector.View}
*/
- _showProfile: function(profile)
+ showProfile: function(profile)
{
if (!profile || (profile.profileType().profileBeingRecorded() === profile) && !profile.profileType().hasTemporaryView())
return null;
- var view = profile.view(this);
+ var view = this._viewForProfile(profile);
if (view === this.visibleView)
return view;
@@ -779,12 +775,12 @@
view.show(this.profileViews);
- profile._profilesTreeElement._suppressOnSelect = true;
- profile._profilesTreeElement.revealAndSelect();
- delete profile._profilesTreeElement._suppressOnSelect;
-
this.visibleView = view;
+ var profileTypeSection = this._typeIdToSidebarSection[profile.profileType().id];
+ var sidebarElement = profileTypeSection.sidebarElementForProfile(profile);
+ sidebarElement.revealAndSelect();
+
this._profileViewStatusBarItemsContainer.removeChildren();
var statusBarItems = view.statusBarItems;
@@ -801,13 +797,13 @@
*/
showObject: function(snapshotObjectId, viewName)
{
- var heapProfiles = this.getProfileType(WebInspector.HeapSnapshotProfileType.TypeId).getProfiles();
+ var heapProfiles = WebInspector.ProfileTypeRegistry.instance.heapSnapshotProfileType.getProfiles();
for (var i = 0; i < heapProfiles.length; i++) {
var profile = heapProfiles[i];
// FIXME: allow to choose snapshot if there are several options.
if (profile.maxJSObjectId >= snapshotObjectId) {
- this._showProfile(profile);
- var view = profile.view(this);
+ this.showProfile(profile);
+ var view = this._viewForProfile(profile);
view.changeView(viewName, function() {
function didHighlightObject(found) {
if (!found)
@@ -821,38 +817,31 @@
},
/**
- * @param {string} typeId
- * @param {number} uid
+ * @param {!WebInspector.ProfileHeader} profile
+ * @return {!WebInspector.View}
*/
- getProfile: function(typeId, uid)
+ _viewForProfile: function(profile)
{
- return this.getProfileType(typeId).getProfile(uid);
+ var index = this._indexOfViewForProfile(profile);
+ if (index !== -1)
+ return this._profileToView[index].view;
+ var view = profile.createView();
+ view.element.classList.add("profile-view");
+ this._profileToView.push({ profile: profile, view: view});
+ return view;
},
/**
- * @param {!WebInspector.View} view
+ * @param {!WebInspector.ProfileHeader} profile
+ * @return {number}
*/
- showView: function(view)
+ _indexOfViewForProfile: function(profile)
{
- this._showProfile(view.profile);
- },
-
- /**
- * @param {string} typeId
- */
- getProfileType: function(typeId)
- {
- return this._profileTypesByIdMap[typeId];
- },
-
- /**
- * @param {string} typeId
- * @param {string} uid
- * @return {?WebInspector.View}
- */
- showProfile: function(typeId, uid)
- {
- return this._showProfile(this.getProfile(typeId, Number(uid)));
+ for (var i = 0; i < this._profileToView.length; i++) {
+ if (this._profileToView[i].profile === profile)
+ return i;
+ }
+ return -1;
},
closeVisibleView: function()
@@ -874,6 +863,9 @@
if (!visibleView)
return;
+ /**
+ * @this {WebInspector.ProfilesPanel}
+ */
function finishedCallback(view, searchMatches)
{
if (!searchMatches)
@@ -910,17 +902,6 @@
this._searchableView.updateCurrentMatchIndex(this._searchResultsView.currentSearchResultIndex());
},
- /**
- * @return {!Array.<!WebInspector.ProfileHeader>}
- */
- _getAllProfiles: function()
- {
- var profiles = [];
- for (var typeId in this._profileTypesByIdMap)
- profiles = profiles.concat(this._profileTypesByIdMap[typeId].getProfiles());
- return profiles;
- },
-
searchCanceled: function()
{
if (this._searchResultsView) {
@@ -933,22 +914,14 @@
},
/**
- * @param {!WebInspector.ProfileHeader} profile
- * @param {number} done
- * @param {number} total
- */
- _reportProfileProgress: function(profile, done, total)
- {
- profile.sidebarElement.subtitle = WebInspector.UIString("%.0f%", (done / total) * 100);
- profile.sidebarElement.wait = true;
- },
-
- /**
* @param {!WebInspector.ContextMenu} contextMenu
* @param {!Object} target
*/
appendApplicableItems: function(event, contextMenu, target)
{
+ if (!(target instanceof WebInspector.RemoteObject))
+ return;
+
if (WebInspector.inspectorView.currentPanel() !== this)
return;
@@ -957,15 +930,21 @@
if (!objectId)
return;
- var heapProfiles = this.getProfileType(WebInspector.HeapSnapshotProfileType.TypeId).getProfiles();
+ var heapProfiles = WebInspector.ProfileTypeRegistry.instance.heapSnapshotProfileType.getProfiles();
if (!heapProfiles.length)
return;
+ /**
+ * @this {WebInspector.ProfilesPanel}
+ */
function revealInView(viewName)
{
HeapProfilerAgent.getHeapObjectId(objectId, didReceiveHeapObjectId.bind(this, viewName));
}
+ /**
+ * @this {WebInspector.ProfilesPanel}
+ */
function didReceiveHeapObjectId(viewName, error, result)
{
if (WebInspector.inspectorView.currentPanel() !== this)
@@ -974,11 +953,173 @@
this.showObject(result, viewName);
}
- contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Reveal in Dominators view" : "Reveal in Dominators View"), revealInView.bind(this, "Dominators"));
+ if (WebInspector.settings.showAdvancedHeapSnapshotProperties.get())
+ contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Reveal in Dominators view" : "Reveal in Dominators View"), revealInView.bind(this, "Dominators"));
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Reveal in Summary view" : "Reveal in Summary View"), revealInView.bind(this, "Summary"));
},
- __proto__: WebInspector.Panel.prototype
+ __proto__: WebInspector.PanelWithSidebarTree.prototype
+}
+
+
+/**
+ * @constructor
+ * @extends {WebInspector.SidebarSectionTreeElement}
+ * @param {!WebInspector.ProfileType} profileType
+ */
+WebInspector.ProfileTypeSidebarSection = function(profileType)
+{
+ WebInspector.SidebarSectionTreeElement.call(this, profileType.treeItemTitle, null, true);
+ this._profileTreeElements = [];
+ this._profileGroups = {};
+ this.hidden = true;
+}
+
+/**
+ * @constructor
+ */
+WebInspector.ProfileTypeSidebarSection.ProfileGroup = function()
+{
+ this.profileSidebarTreeElements = [];
+ this.sidebarTreeElement = null;
+}
+
+WebInspector.ProfileTypeSidebarSection.prototype = {
+ /**
+ * @param {!WebInspector.ProfileHeader} profile
+ */
+ addProfileHeader: function(profile)
+ {
+ this.hidden = false;
+ var profileType = profile.profileType();
+ var sidebarParent = this;
+ var profileTreeElement = profile.createSidebarTreeElement();
+ this._profileTreeElements.push(profileTreeElement);
+
+ if (!profile.fromFile() && profileType.profileBeingRecorded() !== profile) {
+ var profileTitle = profile.title;
+ var group = this._profileGroups[profileTitle];
+ if (!group) {
+ group = new WebInspector.ProfileTypeSidebarSection.ProfileGroup();
+ this._profileGroups[profileTitle] = group;
+ }
+ group.profileSidebarTreeElements.push(profileTreeElement);
+
+ var groupSize = group.profileSidebarTreeElements.length;
+ if (groupSize === 2) {
+ // Make a group TreeElement now that there are 2 profiles.
+ group.sidebarTreeElement = new WebInspector.ProfileGroupSidebarTreeElement(profile.title);
+
+ var firstProfileTreeElement = group.profileSidebarTreeElements[0];
+ // Insert at the same index for the first profile of the group.
+ var index = this.children.indexOf(firstProfileTreeElement);
+ this.insertChild(group.sidebarTreeElement, index);
+
+ // Move the first profile to the group.
+ var selected = firstProfileTreeElement.selected;
+ this.removeChild(firstProfileTreeElement);
+ group.sidebarTreeElement.appendChild(firstProfileTreeElement);
+ if (selected)
+ firstProfileTreeElement.revealAndSelect();
+
+ firstProfileTreeElement.small = true;
+ firstProfileTreeElement.mainTitle = WebInspector.UIString("Run %d", 1);
+
+ this.treeOutline.element.classList.add("some-expandable");
+ }
+
+ if (groupSize >= 2) {
+ sidebarParent = group.sidebarTreeElement;
+ profileTreeElement.small = true;
+ profileTreeElement.mainTitle = WebInspector.UIString("Run %d", groupSize);
+ }
+ }
+
+ sidebarParent.appendChild(profileTreeElement);
+ },
+
+ /**
+ * @param {!WebInspector.ProfileHeader} profile
+ * @return {boolean}
+ */
+ removeProfileHeader: function(profile)
+ {
+ var index = this._sidebarElementIndex(profile);
+ if (index === -1)
+ return false;
+ var profileTreeElement = this._profileTreeElements[index];
+ this._profileTreeElements.splice(index, 1);
+
+ var sidebarParent = this;
+ var group = this._profileGroups[profile.title];
+ if (group) {
+ var groupElements = group.profileSidebarTreeElements;
+ groupElements.splice(groupElements.indexOf(profileTreeElement), 1);
+ if (groupElements.length === 1) {
+ // Move the last profile out of its group and remove the group.
+ var pos = sidebarParent.children.indexOf(group.sidebarTreeElement);
+ this.insertChild(groupElements[0], pos);
+ groupElements[0].small = false;
+ groupElements[0].mainTitle = group.sidebarTreeElement.title;
+ this.removeChild(group.sidebarTreeElement);
+ }
+ if (groupElements.length !== 0)
+ sidebarParent = group.sidebarTreeElement;
+ }
+ sidebarParent.removeChild(profileTreeElement);
+ profileTreeElement.dispose();
+
+ if (this.children.length)
+ return false;
+ this.hidden = true;
+ return true;
+ },
+
+ /**
+ * @param {!WebInspector.ProfileHeader} profile
+ * @return {?WebInspector.ProfileSidebarTreeElement}
+ */
+ sidebarElementForProfile: function(profile)
+ {
+ var index = this._sidebarElementIndex(profile);
+ return index === -1 ? null : this._profileTreeElements[index];
+ },
+
+ /**
+ * @param {!WebInspector.ProfileHeader} profile
+ * @return {number}
+ */
+ _sidebarElementIndex: function(profile)
+ {
+ var elements = this._profileTreeElements;
+ for (var i = 0; i < elements.length; i++) {
+ if (elements[i].profile === profile)
+ return i;
+ }
+ return -1;
+ },
+
+ __proto__: WebInspector.SidebarSectionTreeElement.prototype
+}
+
+
+/**
+ * @constructor
+ * @implements {WebInspector.ContextMenu.Provider}
+ */
+WebInspector.ProfilesPanel.ContextMenuProvider = function()
+{
+}
+
+WebInspector.ProfilesPanel.ContextMenuProvider.prototype = {
+ /**
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!Object} target
+ */
+ appendApplicableItems: function(event, contextMenu, target)
+ {
+ WebInspector.panel("profiles").appendApplicableItems(event, contextMenu, target);
+ }
}
/**
@@ -990,36 +1131,60 @@
WebInspector.ProfileSidebarTreeElement = function(profile, className)
{
this.profile = profile;
- WebInspector.SidebarTreeElement.call(this, className, "", "", profile, false);
+ WebInspector.SidebarTreeElement.call(this, className, profile.title, "", profile, false);
this.refreshTitles();
+ profile.addEventListener(WebInspector.ProfileHeader.Events.UpdateStatus, this._updateStatus, this);
+ if (profile.canSaveToFile())
+ this._createSaveLink();
+ else
+ profile.addEventListener(WebInspector.ProfileHeader.Events.ProfileReceived, this._onProfileReceived, this);
}
WebInspector.ProfileSidebarTreeElement.prototype = {
+ _createSaveLink: function()
+ {
+ this._saveLinkElement = this.titleContainer.createChild("span", "save-link");
+ this._saveLinkElement.textContent = WebInspector.UIString("Save");
+ this._saveLinkElement.addEventListener("click", this._saveProfile.bind(this), false);
+ },
+
+ _onProfileReceived: function(event)
+ {
+ this._createSaveLink();
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _updateStatus: function(event)
+ {
+ var statusUpdate = event.data;
+ if (statusUpdate.subtitle !== null)
+ this.subtitle = statusUpdate.subtitle;
+ this.wait = !!statusUpdate.wait;
+ this.refreshTitles();
+ },
+
+ dispose: function()
+ {
+ this.profile.removeEventListener(WebInspector.ProfileHeader.Events.UpdateStatus, this._updateStatus, this);
+ this.profile.removeEventListener(WebInspector.ProfileHeader.Events.ProfileReceived, this._onProfileReceived, this);
+ },
+
onselect: function()
{
- if (!this._suppressOnSelect)
- this.treeOutline.panel._showProfile(this.profile);
+ WebInspector.panels.profiles.showProfile(this.profile);
},
+ /**
+ * @return {boolean}
+ */
ondelete: function()
{
- this.treeOutline.panel._removeProfileHeader(this.profile);
+ this.profile.profileType().removeProfile(this.profile);
return true;
},
- get mainTitle()
- {
- if (this._mainTitle)
- return this._mainTitle;
- return this.profile.title;
- },
-
- set mainTitle(x)
- {
- this._mainTitle = x;
- this.refreshTitles();
- },
-
/**
* @param {!Event} event
* @param {!WebInspector.ProfilesPanel} panel
@@ -1036,27 +1201,30 @@
contextMenu.show();
},
+ _saveProfile: function(event)
+ {
+ this.profile.saveToFile();
+ },
+
__proto__: WebInspector.SidebarTreeElement.prototype
}
/**
* @constructor
* @extends {WebInspector.SidebarTreeElement}
- * @param {!WebInspector.ProfilesPanel} panel
* @param {string} title
* @param {string=} subtitle
*/
-WebInspector.ProfileGroupSidebarTreeElement = function(panel, title, subtitle)
+WebInspector.ProfileGroupSidebarTreeElement = function(title, subtitle)
{
WebInspector.SidebarTreeElement.call(this, "profile-group-sidebar-tree-item", title, subtitle, null, true);
- this._panel = panel;
}
WebInspector.ProfileGroupSidebarTreeElement.prototype = {
onselect: function()
{
if (this.children.length > 0)
- this._panel._showProfile(this.children[this.children.length - 1].profile);
+ WebInspector.panels.profiles.showProfile(this.children[this.children.length - 1].profile);
},
__proto__: WebInspector.SidebarTreeElement.prototype
@@ -1090,71 +1258,17 @@
}
-/**
- * @constructor
- * @extends {WebInspector.ProfilesPanel}
- */
-WebInspector.CPUProfilerPanel = function()
-{
- WebInspector.ProfilesPanel.call(this, "cpu-profiler", new WebInspector.CPUProfileType());
-}
-
-WebInspector.CPUProfilerPanel.prototype = {
- __proto__: WebInspector.ProfilesPanel.prototype
-}
-
-
-/**
- * @constructor
- * @extends {WebInspector.ProfilesPanel}
- */
-WebInspector.HeapProfilerPanel = function()
-{
- var heapSnapshotProfileType = new WebInspector.HeapSnapshotProfileType();
- WebInspector.ProfilesPanel.call(this, "heap-profiler", heapSnapshotProfileType);
- this._singleProfileMode = false;
- this._registerProfileType(new WebInspector.TrackingHeapSnapshotProfileType(this));
- this._launcherView.addEventListener(WebInspector.MultiProfileLauncherView.EventTypes.ProfileTypeSelected, this._onProfileTypeSelected, this);
- this._launcherView._profileTypeChanged(heapSnapshotProfileType);
-}
-
-WebInspector.HeapProfilerPanel.prototype = {
- _createLauncherView: function()
- {
- return new WebInspector.MultiProfileLauncherView(this);
- },
-
- __proto__: WebInspector.ProfilesPanel.prototype
-}
-
-
-/**
- * @constructor
- * @extends {WebInspector.ProfilesPanel}
- */
-WebInspector.CanvasProfilerPanel = function()
-{
- WebInspector.ProfilesPanel.call(this, "canvas-profiler", new WebInspector.CanvasProfileType());
-}
-
-WebInspector.CanvasProfilerPanel.prototype = {
- __proto__: WebInspector.ProfilesPanel.prototype
-}
-
-
importScript("ProfileDataGridTree.js");
-importScript("AllocationProfile.js");
importScript("BottomUpProfileDataGridTree.js");
importScript("CPUProfileView.js");
-importScript("HeapSnapshot.js");
+importScript("HeapSnapshotCommon.js");
+importScript("HeapSnapshotProxy.js");
importScript("HeapSnapshotDataGrids.js");
importScript("HeapSnapshotGridNodes.js");
-importScript("HeapSnapshotLoader.js");
-importScript("HeapSnapshotProxy.js");
importScript("HeapSnapshotView.js");
-importScript("HeapSnapshotWorkerDispatcher.js");
-importScript("JSHeapSnapshot.js");
importScript("ProfileLauncherView.js");
importScript("TopDownProfileDataGridTree.js");
importScript("CanvasProfileView.js");
importScript("CanvasReplayStateView.js");
+
+WebInspector.ProfileTypeRegistry.instance = new WebInspector.ProfileTypeRegistry();
diff --git a/Source/devtools/front_end/ProfilesPanelDescriptor.js b/Source/devtools/front_end/ProfilesPanelDescriptor.js
deleted file mode 100644
index cd37d52..0000000
--- a/Source/devtools/front_end/ProfilesPanelDescriptor.js
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2013 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
- */
-WebInspector.ProfilesPanelDescriptor = function()
-{
- WebInspector.PanelDescriptor.call(this, "profiles", WebInspector.UIString("Profiles"), "ProfilesPanel", "ProfilesPanel.js");
-}
-
-WebInspector.ProfilesPanelDescriptor.prototype = {
- registerShortcuts: function()
- {
- var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Profiles Panel"));
- section.addAlternateKeys(WebInspector.ProfilesPanelDescriptor.ShortcutKeys.StartStopRecording, WebInspector.UIString("Start/stop recording"));
- },
-
- __proto__: WebInspector.PanelDescriptor.prototype
-}
-
-WebInspector.ProfilesPanelDescriptor.ShortcutKeys = {
- StartStopRecording: [
- WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ]
-}
-
-WebInspector.ProfilesPanelDescriptor.ProfileURLRegExp = /webkit-profile:\/\/(.+)\/(.+)/;
-
-/**
- * @param {string} title
- * @return {string}
- */
-WebInspector.ProfilesPanelDescriptor.resolveProfileTitle = function(title)
-{
- return title;
-}
-
-/**
- * @param {?Event} event
- */
-WebInspector.ProfilesPanelDescriptor._openCPUProfile = function(event)
-{
- event.preventDefault();
- var panel = WebInspector.showPanel("profiles");
- var link = /** @type {!Element} */ (event.target);
- var view = /** @type {!WebInspector.CPUProfileView} */ (panel.showProfile("CPU", link.profileUID));
- if (!view)
- return;
- if (typeof link.timeLeft === "number" && typeof link.timeRight === "number")
- view.selectRange(link.timeLeft, link.timeRight);
-}
-
-/**
- * @param {number} uid
- * @param {string} linkText
- * @param {number=} timeLeft
- * @param {number=} timeRight
- * @param {string=} tooltipText
- * @return {!Element}
- */
-WebInspector.ProfilesPanelDescriptor.linkifyCPUProfile = function(uid, linkText, timeLeft, timeRight, tooltipText)
-{
- var link = document.createElement("a");
- link.innerText = linkText;
- link.href = WebInspector.UIString("show CPU profile");
- link.target = "_blank";
- if (tooltipText)
- link.title = tooltipText;
- link.timeLeft = timeLeft;
- link.timeRight = timeRight;
- link.profileUID = uid;
- link.addEventListener("click", WebInspector.ProfilesPanelDescriptor._openCPUProfile, true);
- return link;
-}
-
-/**
- * @constructor
- * @extends {WebInspector.Object}
- */
-WebInspector.ProfileManager = function()
-{
- this._startedProfiles = {};
-};
-
-WebInspector.ProfileManager.EventTypes = {
- ProfileStarted: "profile-started",
- ProfileStopped: "profile-stopped"
-};
-
-WebInspector.ProfileManager.prototype = {
- /**
- * @param {string} profileTypeId
- * @return {boolean}
- */
- isStarted: function(profileTypeId)
- {
- return profileTypeId in this._startedProfiles;
- },
-
- /**
- * @param {string} profileTypeId
- */
- notifyStarted: function(profileTypeId)
- {
- this._startedProfiles[profileTypeId] = true;
- this.dispatchEventToListeners(WebInspector.ProfileManager.EventTypes.ProfileStarted, profileTypeId);
- },
-
- /**
- * @param {string} profileTypeId
- */
- notifyStoped: function(profileTypeId)
- {
- delete this._startedProfiles[profileTypeId];
- this.dispatchEventToListeners(WebInspector.ProfileManager.EventTypes.ProfileStopped, profileTypeId);
- },
-
- __proto__: WebInspector.Object.prototype
-};
-
-/**
- * @type {?WebInspector.ProfileManager}
- */
-WebInspector.profileManager = null;
\ No newline at end of file
diff --git a/Source/devtools/front_end/Progress.js b/Source/devtools/front_end/Progress.js
index ce709eb..dd4b1cc 100644
--- a/Source/devtools/front_end/Progress.js
+++ b/Source/devtools/front_end/Progress.js
@@ -109,6 +109,7 @@
/**
* @param {number=} weight
+ * @return {!WebInspector.SubProgress}
*/
createSubProgress: function(weight)
{
diff --git a/Source/devtools/front_end/ProgressIndicator.js b/Source/devtools/front_end/ProgressIndicator.js
index 58d4616..0224f47 100644
--- a/Source/devtools/front_end/ProgressIndicator.js
+++ b/Source/devtools/front_end/ProgressIndicator.js
@@ -81,6 +81,9 @@
this.dispatchEventToListeners(WebInspector.Progress.Events.Canceled);
},
+ /**
+ * @return {boolean}
+ */
isCanceled: function()
{
return this._isCanceled;
diff --git a/Source/devtools/front_end/PropertiesSidebarPane.js b/Source/devtools/front_end/PropertiesSidebarPane.js
index 20f69e5..46005f2 100644
--- a/Source/devtools/front_end/PropertiesSidebarPane.js
+++ b/Source/devtools/front_end/PropertiesSidebarPane.js
@@ -50,10 +50,17 @@
WebInspector.RemoteObject.resolveNode(node, WebInspector.PropertiesSidebarPane._objectGroupName, nodeResolved.bind(this));
+ /**
+ * @this {WebInspector.PropertiesSidebarPane}
+ */
function nodeResolved(object)
{
if (!object)
return;
+
+ /**
+ * @this {WebInspector.PropertiesSidebarPane}
+ */
function protoList()
{
var proto = this;
@@ -69,6 +76,9 @@
object.release();
}
+ /**
+ * @this {WebInspector.PropertiesSidebarPane}
+ */
function nodePrototypesReady(object, wasThrown)
{
if (!object || wasThrown)
@@ -76,6 +86,9 @@
object.getOwnProperties(fillSection.bind(this));
}
+ /**
+ * @this {WebInspector.PropertiesSidebarPane}
+ */
function fillSection(prototypes)
{
if (!prototypes)
diff --git a/Source/devtools/front_end/RemoteObject.js b/Source/devtools/front_end/RemoteObject.js
index 9a856c4..4e0b141 100644
--- a/Source/devtools/front_end/RemoteObject.js
+++ b/Source/devtools/front_end/RemoteObject.js
@@ -185,6 +185,10 @@
*/
getProperty: function(propertyPath, callback)
{
+ /**
+ * @param {string} arrayStr
+ * @this {Object}
+ */
function remoteFunction(arrayStr)
{
var result = this;
@@ -259,6 +263,7 @@
* @param {?Protocol.Error} error
* @param {!RuntimeAgent.RemoteObject} result
* @param {boolean=} wasThrown
+ * @this {WebInspector.RemoteObject}
*/
function evaluatedCallback(error, result, wasThrown)
{
@@ -521,6 +526,7 @@
/**
* @param {?Array.<!WebInspector.RemoteObjectProperty>} properties
* @param {?Array.<!WebInspector.RemoteObjectProperty>} internalProperties
+ * @this {WebInspector.ScopeRemoteObject}
*/
function wrappedCallback(properties, internalProperties)
{
@@ -558,6 +564,7 @@
/**
* @param {?Protocol.Error} error
+ * @this {WebInspector.ScopeRemoteObject}
*/
function setVariableValueCallback(error)
{
@@ -622,9 +629,12 @@
}
WebInspector.RemoteObjectProperty.prototype = {
+ /**
+ * @return {boolean}
+ */
isAccessorProperty: function()
{
- return this.getter || this.setter;
+ return !!(this.getter || this.setter);
}
};
@@ -801,6 +811,10 @@
return [];
var value = /** @type {!Object} */ (this._value);
+ /**
+ * @param {string} propName
+ * @this {WebInspector.LocalJSONObject}
+ */
function buildProperty(propName)
{
return new WebInspector.RemoteObjectProperty(propName, new WebInspector.LocalJSONObject(this._value[propName]));
@@ -867,5 +881,7 @@
}
callback(result);
- }
+ },
+
+ __proto__: WebInspector.RemoteObject.prototype
}
diff --git a/Source/devtools/front_end/RenderingOptionsView.js b/Source/devtools/front_end/RenderingOptionsView.js
index 2c2a393..ddab696 100644
--- a/Source/devtools/front_end/RenderingOptionsView.js
+++ b/Source/devtools/front_end/RenderingOptionsView.js
@@ -38,12 +38,12 @@
this.registerRequiredCSS("helpScreen.css");
this.element.classList.add("help-indent-labels");
- var div = this.element.createChild("div", "settings-tab help-content help-container");
- div.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show paint rectangles"), WebInspector.settings.showPaintRects));
- div.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show composited layer borders"), WebInspector.settings.showDebugBorders));
- div.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show FPS meter"), WebInspector.settings.showFPSCounter));
- div.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Enable continuous page repainting"), WebInspector.settings.continuousPainting));
- var child = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show potential scroll bottlenecks"), WebInspector.settings.showScrollBottleneckRects);
+ var div = this.element.createChild("div", "settings-tab help-content help-container help-no-columns");
+ div.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show paint rectangles"), WebInspector.settings.showPaintRects));
+ div.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show composited layer borders"), WebInspector.settings.showDebugBorders));
+ div.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show FPS meter"), WebInspector.settings.showFPSCounter));
+ div.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Enable continuous page repainting"), WebInspector.settings.continuousPainting));
+ var child = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show potential scroll bottlenecks"), WebInspector.settings.showScrollBottleneckRects);
child.title = WebInspector.UIString("Shows areas of the page that slow down scrolling:\nTouch and mousewheel event listeners can delay scrolling.\nSome areas need to repaint their content when scrolled.");
div.appendChild(child);
}
diff --git a/Source/devtools/front_end/RequestHTMLView.js b/Source/devtools/front_end/RequestHTMLView.js
index 6e7ef88..5d05e9a 100644
--- a/Source/devtools/front_end/RequestHTMLView.js
+++ b/Source/devtools/front_end/RequestHTMLView.js
@@ -42,6 +42,9 @@
}
WebInspector.RequestHTMLView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
diff --git a/Source/devtools/front_end/RequestHeadersView.js b/Source/devtools/front_end/RequestHeadersView.js
index 30d0b4c..ff401c8 100644
--- a/Source/devtools/front_end/RequestHeadersView.js
+++ b/Source/devtools/front_end/RequestHeadersView.js
@@ -48,6 +48,11 @@
this._headersTreeOutline = new TreeOutline(this._headersListElement);
this._headersTreeOutline.expandTreeElementsWhenArrowing = true;
+ this._remoteAddressTreeElement = new TreeElement("", null, false);
+ this._remoteAddressTreeElement.selectable = false;
+ this._remoteAddressTreeElement.hidden = true;
+ this._headersTreeOutline.appendChild(this._remoteAddressTreeElement);
+
this._urlTreeElement = new TreeElement("", null, false);
this._urlTreeElement.selectable = false;
this._headersTreeOutline.appendChild(this._urlTreeElement);
@@ -98,6 +103,7 @@
wasShown: function()
{
+ this._request.addEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
this._request.addEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
this._request.addEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
this._request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
@@ -107,10 +113,12 @@
this._refreshRequestHeaders();
this._refreshResponseHeaders();
this._refreshHTTPInformation();
+ this._refreshRemoteAddress();
},
willHide: function()
{
+ this._request.removeEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
this._request.removeEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
this._request.removeEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
this._request.removeEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
@@ -234,6 +242,7 @@
/**
* @param {?Event} event
+ * @this {WebInspector.RequestHeadersView}
*/
function toggleViewSource(event)
{
@@ -281,6 +290,7 @@
/**
* @param {?Event} event
+ * @this {WebInspector.RequestHeadersView}
*/
function toggleViewSource(event)
{
@@ -446,6 +456,15 @@
this._refreshHeadersTitle(title, headersTreeElement, count);
},
+ _refreshRemoteAddress: function()
+ {
+ var remoteAddress = this._request.remoteAddress();
+ var treeElement = this._remoteAddressTreeElement;
+ treeElement.hidden = !remoteAddress;
+ if (remoteAddress)
+ treeElement.title = this._formatHeader(WebInspector.UIString("Remote Address"), remoteAddress);
+ },
+
/**
* @param {?Event} event
*/
diff --git a/Source/devtools/front_end/RequestJSONView.js b/Source/devtools/front_end/RequestJSONView.js
index 153d331..34d4b3d 100644
--- a/Source/devtools/front_end/RequestJSONView.js
+++ b/Source/devtools/front_end/RequestJSONView.js
@@ -78,6 +78,9 @@
}
WebInspector.RequestJSONView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
diff --git a/Source/devtools/front_end/RequestPreviewView.js b/Source/devtools/front_end/RequestPreviewView.js
index d5237e0..c9eb937 100644
--- a/Source/devtools/front_end/RequestPreviewView.js
+++ b/Source/devtools/front_end/RequestPreviewView.js
@@ -83,7 +83,8 @@
_createPreviewView: function()
{
if (this.request.content) {
- if (this.request.mimeType === "application/json") {
+ var jsonMediaTypeRE = /^application\/[^;]*\+json/;
+ if (this.request.mimeType === "application/json" || jsonMediaTypeRE.test(this.request.mimeType)) {
var jsonView = this._jsonView();
if (jsonView)
return jsonView;
diff --git a/Source/devtools/front_end/RequestTimingView.js b/Source/devtools/front_end/RequestTimingView.js
index 5662596..d3303f7 100644
--- a/Source/devtools/front_end/RequestTimingView.js
+++ b/Source/devtools/front_end/RequestTimingView.js
@@ -45,6 +45,7 @@
wasShown: function()
{
this._request.addEventListener(WebInspector.NetworkRequest.Events.TimingChanged, this._refresh, this);
+ this._request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refresh, this);
if (!this._request.timing) {
if (!this._emptyView) {
@@ -66,6 +67,7 @@
willHide: function()
{
this._request.removeEventListener(WebInspector.NetworkRequest.Events.TimingChanged, this._refresh, this);
+ this._request.removeEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refresh, this);
},
_refresh: function()
@@ -97,8 +99,20 @@
rows.push(row);
}
+ function firstPositive(numbers)
+ {
+ for (var i = 0; i < numbers.length; ++i) {
+ if (numbers[i] > 0)
+ return numbers[i];
+ }
+ return undefined;
+ }
+
var timing = request.timing;
- var blocking = timing.dnsStart > 0 ? timing.dnsStart : timing.connectStart > 0 ? timing.connectStart : timing.sendStart;
+ var blocking = firstPositive([timing.dnsStart, timing.connectStart, timing.sendStart]);
+ var endTime = firstPositive([request.endTime, request.responseReceivedTime, timing.requestTime]);
+ var total = (endTime - timing.requestTime) * 1000;
+
if (blocking > 0)
addRow(WebInspector.UIString("Blocking"), "blocking", 0, blocking);
@@ -116,10 +130,11 @@
addRow(WebInspector.UIString("Sending"), "sending", timing.sendStart, timing.sendEnd);
addRow(WebInspector.UIString("Waiting"), "waiting", timing.sendEnd, timing.receiveHeadersEnd);
- addRow(WebInspector.UIString("Receiving"), "receiving", (request.responseReceivedTime - timing.requestTime) * 1000, (request.endTime - timing.requestTime) * 1000);
+
+ if (request.endTime !== -1)
+ addRow(WebInspector.UIString("Receiving"), "receiving", (request.responseReceivedTime - timing.requestTime) * 1000, total);
const chartWidth = 200;
- var total = (request.endTime - timing.requestTime) * 1000;
var scale = chartWidth / total;
for (var i = 0; i < rows.length; ++i) {
@@ -156,5 +171,12 @@
tr.appendChild(td);
}
+
+ if (!request.finished) {
+ var cell = tableElement.createChild("tr").createChild("td", "caution");
+ cell.colSpan = 2;
+ cell.createTextChild(WebInspector.UIString("CAUTION: request is not finished yet!"));
+ }
+
return tableElement;
}
diff --git a/Source/devtools/front_end/RequestView.js b/Source/devtools/front_end/RequestView.js
index da13294..fcf7b42 100644
--- a/Source/devtools/front_end/RequestView.js
+++ b/Source/devtools/front_end/RequestView.js
@@ -43,6 +43,9 @@
}
WebInspector.RequestView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return false;
diff --git a/Source/devtools/front_end/Resource.js b/Source/devtools/front_end/Resource.js
index c67f4ad..01188ed 100644
--- a/Source/devtools/front_end/Resource.js
+++ b/Source/devtools/front_end/Resource.js
@@ -241,6 +241,9 @@
this._innerRequestContent();
},
+ /**
+ * @return {string}
+ */
canonicalMimeType: function()
{
return this.type.canonicalMimeType() || this.mimeType;
@@ -264,24 +267,10 @@
}
if (this.type === WebInspector.resourceTypes.Document) {
- this.requestContent(documentContentLoaded);
+ callback([]);
return;
}
- /**
- * @param {?string} content
- */
- function documentContentLoaded(content)
- {
- if (content === null) {
- callback([]);
- return;
- }
-
- var result = WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex);
- callback(result);
- }
-
if (this.frameId)
PageAgent.searchInResource(this.frameId, this.url, query, caseSensitive, isRegex, callbackWrapper);
else
@@ -295,6 +284,7 @@
{
/**
* @param {?string} content
+ * @this {WebInspector.Resource}
*/
function onResourceContent(content)
{
@@ -325,11 +315,12 @@
* @param {?Protocol.Error} error
* @param {?string} content
* @param {boolean} contentEncoded
+ * @this {WebInspector.Resource}
*/
function contentLoaded(error, content, contentEncoded)
{
if (error || content === null) {
- loadFallbackContent.call(this, error);
+ replyWithContent.call(this, null, false);
return;
}
replyWithContent.call(this, content, contentEncoded);
@@ -338,6 +329,7 @@
/**
* @param {?string} content
* @param {boolean} contentEncoded
+ * @this {WebInspector.Resource}
*/
function replyWithContent(content, contentEncoded)
{
@@ -354,46 +346,12 @@
* @param {?Protocol.Error} error
* @param {string} content
* @param {boolean} contentEncoded
+ * @this {WebInspector.Resource}
*/
function resourceContentLoaded(error, content, contentEncoded)
{
contentLoaded.call(this, error, content, contentEncoded);
}
-
- /**
- * @param {?Protocol.Error} error
- */
- function loadFallbackContent(error)
- {
- var scripts = WebInspector.debuggerModel.scriptsForSourceURL(this.url);
- if (!scripts.length) {
- console.error("Resource content request failed: " + error);
- replyWithContent.call(this, null, false);
- return;
- }
-
- var contentProvider;
- if (this.type === WebInspector.resourceTypes.Document)
- contentProvider = new WebInspector.ConcatenatedScriptsContentProvider(scripts);
- else if (this.type === WebInspector.resourceTypes.Script)
- contentProvider = scripts[0];
-
- if (!contentProvider) {
- console.error("Resource content request failed: " + error);
- replyWithContent.call(this, null, false);
- return;
- }
-
- contentProvider.requestContent(fallbackContentLoaded.bind(this));
- }
-
- /**
- * @param {?string} content
- */
- function fallbackContentLoaded(content)
- {
- replyWithContent.call(this, content, false);
- }
if (this.request) {
this.request.requestContent(requestContentLoaded.bind(this));
@@ -402,6 +360,7 @@
/**
* @param {?string} content
+ * @this {WebInspector.Resource}
*/
function requestContentLoaded(content)
{
diff --git a/Source/devtools/front_end/ResourceScriptMapping.js b/Source/devtools/front_end/ResourceScriptMapping.js
index ffbbd47..f76c136 100644
--- a/Source/devtools/front_end/ResourceScriptMapping.js
+++ b/Source/devtools/front_end/ResourceScriptMapping.js
@@ -31,14 +31,16 @@
/**
* @constructor
* @implements {WebInspector.ScriptSourceMapping}
+ * @param {!WebInspector.DebuggerModel} debuggerModel
* @param {!WebInspector.Workspace} workspace
*/
-WebInspector.ResourceScriptMapping = function(workspace)
+WebInspector.ResourceScriptMapping = function(debuggerModel, workspace)
{
+ this._debuggerModel = debuggerModel;
this._workspace = workspace;
this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAddedToWorkspace, this);
- WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
+ debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
this._initialize();
}
@@ -50,7 +52,7 @@
rawLocationToUILocation: function(rawLocation)
{
var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (rawLocation);
- var script = WebInspector.debuggerModel.scriptForId(debuggerModelLocation.scriptId);
+ var script = this._debuggerModel.scriptForId(debuggerModelLocation.scriptId);
var uiSourceCode = this._workspaceUISourceCodeForScript(script);
if (!uiSourceCode)
return null;
@@ -70,7 +72,7 @@
{
var scripts = this._scriptsForUISourceCode(uiSourceCode);
console.assert(scripts.length);
- return WebInspector.debuggerModel.createRawLocation(scripts[0], lineNumber, columnNumber);
+ return this._debuggerModel.createRawLocation(scripts[0], lineNumber, columnNumber);
},
/**
@@ -205,6 +207,7 @@
{
/**
* @param {!Array.<!WebInspector.Script>} scripts
+ * @this {WebInspector.ResourceScriptMapping}
*/
function unbindUISourceCodesForScripts(scripts)
{
@@ -283,6 +286,7 @@
/**
* @param {?string} error
* @param {!DebuggerAgent.SetScriptSourceError=} errorData
+ * @this {WebInspector.ResourceScriptFile}
*/
function innerCallback(error, errorData)
{
@@ -299,9 +303,7 @@
if (!this._script)
return;
var source = this._uiSourceCode.workingCopy();
- if (this._script.hasSourceURL && !this._sourceEndsWithSourceURL(source))
- source += "\n //# sourceURL=" + this._script.sourceURL;
- WebInspector.debuggerModel.setScriptSource(this._script.scriptId, source, innerCallback.bind(this));
+ this._resourceScriptMapping._debuggerModel.setScriptSource(this._script.scriptId, source, innerCallback.bind(this));
},
/**
@@ -317,29 +319,7 @@
return false;
if (typeof this._scriptSource === "undefined")
return false;
- return !this._sourceMatchesScriptSource(this._uiSourceCode.workingCopy(), this._scriptSource);
- },
-
- /**
- * @param {string} source
- * @param {string} scriptSource
- * @return {boolean}
- */
- _sourceMatchesScriptSource: function(source, scriptSource)
- {
- if (!scriptSource.startsWith(source))
- return false;
- var scriptSourceTail = scriptSource.substr(source.length).trim();
- return !scriptSourceTail || !!scriptSourceTail.match(/^\/\/[@#]\ssourceURL=\s*(\S*?)\s*$/m);
- },
-
- /**
- * @param {string} source
- * @return {boolean}
- */
- _sourceEndsWithSourceURL: function(source)
- {
- return !!source.match(/\/\/[@#]\ssourceURL=\s*(\S*?)\s*$/m);
+ return this._uiSourceCode.workingCopy() !== this._scriptSource;
},
/**
@@ -410,6 +390,7 @@
/**
* @param {?string} source
+ * @this {WebInspector.ResourceScriptFile}
*/
function callback(source)
{
diff --git a/Source/devtools/front_end/ResourceTreeModel.js b/Source/devtools/front_end/ResourceTreeModel.js
index bffe18a..0134022 100644
--- a/Source/devtools/front_end/ResourceTreeModel.js
+++ b/Source/devtools/front_end/ResourceTreeModel.js
@@ -96,6 +96,9 @@
this._cachedResourcesProcessed = true;
},
+ /**
+ * @return {boolean}
+ */
cachedResourcesLoaded: function()
{
return this._cachedResourcesProcessed;
@@ -137,11 +140,12 @@
},
/**
- * @param {string} securityOrigin
+ * @param {string|undefined} securityOrigin
*/
_removeSecurityOrigin: function(securityOrigin)
{
- console.assert(this._securityOriginFrameCount[securityOrigin]);
+ if (typeof securityOrigin === "undefined")
+ return;
if (this._securityOriginFrameCount[securityOrigin] === 1) {
delete this._securityOriginFrameCount[securityOrigin];
this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginRemoved, securityOrigin);
@@ -165,6 +169,7 @@
{
/**
* @param {!WebInspector.ResourceTreeFrame} frame
+ * @this {WebInspector.ResourceTreeModel}
*/
function removeOriginForFrame(frame)
{
@@ -209,17 +214,14 @@
if (!this._cachedResourcesProcessed)
return;
var frame = this._frames[framePayload.id];
- if (frame) {
- // Navigation within existing frame.
- this._removeSecurityOrigin(frame.securityOrigin);
- frame._navigate(framePayload);
- } else {
- // Either a new frame or a main frame navigation to the new backend process.
- console.error("Navigated unregistered frame.");
+ if (!frame) {
+ // Simulate missed "frameAttached" for a main frame navigation to the new backend process.
+ console.assert(!framePayload.parentId, "Main frame shouldn't have parent frame id.");
frame = this._frameAttached(framePayload.id, framePayload.parentId || "");
- if (!frame)
- return;
+ console.assert(frame);
}
+ this._removeSecurityOrigin(frame.securityOrigin);
+ frame._navigate(framePayload);
var addedOrigin = frame.securityOrigin;
if (frame.isMainFrame())
@@ -398,7 +400,7 @@
/**
* @param {string} url
- * @return {!WebInspector.Resource}
+ * @return {?WebInspector.Resource}
*/
resourceForURL: function(url)
{
@@ -664,7 +666,7 @@
}
}
this._callForFrameResources(filter);
- return result;
+ return result || null;
},
/**
@@ -683,6 +685,22 @@
return true;
}
return false;
+ },
+
+ /**
+ * @return {string}
+ */
+ displayName: function()
+ {
+ if (!this._parentFrame)
+ return WebInspector.UIString("<top frame>");
+ var subtitle = new WebInspector.ParsedURL(this._url).displayName;
+ if (subtitle) {
+ if (!this._name)
+ return subtitle;
+ return this._name + "( " + subtitle + " )";
+ }
+ return WebInspector.UIString("<iframe>");
}
}
@@ -774,6 +792,6 @@
}
/**
- * @type {?WebInspector.ResourceTreeModel}
+ * @type {!WebInspector.ResourceTreeModel}
*/
-WebInspector.resourceTreeModel = null;
+WebInspector.resourceTreeModel;
diff --git a/Source/devtools/front_end/ResourceUtils.js b/Source/devtools/front_end/ResourceUtils.js
index b3e8ba0..d7d2c04 100644
--- a/Source/devtools/front_end/ResourceUtils.js
+++ b/Source/devtools/front_end/ResourceUtils.js
@@ -148,7 +148,6 @@
var urlNode = WebInspector.linkifyURLAsNode(url, title, undefined, isExternal);
if (typeof lineNumber !== "undefined") {
urlNode.lineNumber = lineNumber;
- urlNode.preferredPanel = "sources";
if (typeof columnNumber !== "undefined")
urlNode.columnNumber = columnNumber;
}
@@ -223,13 +222,12 @@
WebInspector.linkifyRequestAsNode = function(request)
{
var anchor = WebInspector.linkifyURLAsNode(request.url);
- anchor.preferredPanel = "network";
- anchor.requestId = request.requestId;
+ anchor.requestId = request.requestId;
return anchor;
}
/**
- * @param {string} content
+ * @param {?string} content
* @param {string} mimeType
* @param {boolean} contentEncoded
* @return {?string}
@@ -237,7 +235,7 @@
WebInspector.contentAsDataURL = function(content, mimeType, contentEncoded)
{
const maxDataUrlSize = 1024 * 1024;
- if (content == null || content.length > maxDataUrlSize)
+ if (content === null || content.length > maxDataUrlSize)
return null;
return "data:" + mimeType + (contentEncoded ? ";base64," : ",") + content;
diff --git a/Source/devtools/front_end/ResourceView.js b/Source/devtools/front_end/ResourceView.js
index 0a7b28f..daab09f 100644
--- a/Source/devtools/front_end/ResourceView.js
+++ b/Source/devtools/front_end/ResourceView.js
@@ -41,6 +41,9 @@
}
WebInspector.ResourceView.prototype = {
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return false;
@@ -51,13 +54,14 @@
/**
* @param {!WebInspector.Resource} resource
+ * @return {boolean}
*/
WebInspector.ResourceView.hasTextContent = function(resource)
{
if (resource.type.isTextType())
return true;
if (resource.type === WebInspector.resourceTypes.Other)
- return resource.content && !resource.contentEncoded;
+ return !!resource.content && !resource.contentEncoded;
return false;
}
@@ -110,7 +114,6 @@
{
WebInspector.View.call(this);
this._resource = resource;
- this.element.classList.add("fill");
this.element.classList.add("script-view");
this._content = this.element.createChild("div", "script-view-fallback monospace");
}
diff --git a/Source/devtools/front_end/ResourcesPanel.js b/Source/devtools/front_end/ResourcesPanel.js
index 25ba46a..b4448d0 100644
--- a/Source/devtools/front_end/ResourcesPanel.js
+++ b/Source/devtools/front_end/ResourcesPanel.js
@@ -39,22 +39,17 @@
/**
* @constructor
- * @extends {WebInspector.Panel}
+ * @extends {WebInspector.PanelWithSidebarTree}
*/
WebInspector.ResourcesPanel = function(database)
{
- WebInspector.Panel.call(this, "resources");
+ WebInspector.PanelWithSidebarTree.call(this, "resources");
this.registerRequiredCSS("resourcesPanel.css");
WebInspector.settings.resourcesLastSelectedItem = WebInspector.settings.createSetting("resourcesLastSelectedItem", {});
- this.createSidebarViewWithTree();
- this.sidebarElement.classList.add("outline-disclosure");
- this.sidebarElement.classList.add("filter-all");
- this.sidebarElement.classList.add("children");
- this.sidebarElement.classList.add("small");
-
- this.sidebarTreeElement.classList.remove("sidebar-tree");
+ this.sidebarElement().classList.add("filter-all", "children", "small", "outline-disclosure");
+ this.sidebarTree.element.classList.remove("sidebar-tree");
this.resourcesListTreeElement = new WebInspector.StorageCategoryTreeElement(this, WebInspector.UIString("Frames"), "Frames", ["frame-storage-tree-item"]);
this.sidebarTree.appendChild(this.resourcesListTreeElement);
@@ -82,11 +77,11 @@
this.sidebarTree.appendChild(this.fileSystemListTreeElement);
}
- var mainElement = this.splitView.mainElement;
- this.storageViews = mainElement.createChild("div", "resources-main");
- var statusBarContainer = mainElement.createChild("div", "resources-status-bar");
+ var mainView = new WebInspector.View();
+ this.storageViews = mainView.element.createChild("div", "resources-main diff-container");
+ var statusBarContainer = mainView.element.createChild("div", "resources-status-bar");
this.storageViewStatusBarItemsContainer = statusBarContainer.createChild("div", "status-bar");
- this.storageViews.classList.add("diff-container");
+ mainView.show(this.mainElement());
/** @type {!Map.<!WebInspector.Database, !Object.<string, !WebInspector.DatabaseTableView>>} */
this._databaseTableViews = new Map();
@@ -103,9 +98,13 @@
/** @type {!Object.<string, boolean>} */
this._domains = {};
- this.sidebarElement.addEventListener("mousemove", this._onmousemove.bind(this), false);
- this.sidebarElement.addEventListener("mouseout", this._onmouseout.bind(this), false);
+ this.sidebarElement().addEventListener("mousemove", this._onmousemove.bind(this), false);
+ this.sidebarElement().addEventListener("mouseout", this._onmouseout.bind(this), false);
+ /**
+ * @return {!WebInspector.View}
+ * @this {WebInspector.ResourcesPanel}
+ */
function viewGetter()
{
return this.visibleView;
@@ -219,6 +218,10 @@
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, this._frameDetached, this);
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ResourceAdded, this._resourceAdded, this);
+ /**
+ * @param {!WebInspector.ResourceTreeFrame} frame
+ * @this {WebInspector.ResourcesPanel}
+ */
function populateFrame(frame)
{
this._frameAdded({data:frame});
@@ -408,23 +411,10 @@
},
/**
- * @param {!Element} anchor
- * @return {boolean}
- */
- showAnchorLocation: function(anchor)
- {
- var resource = WebInspector.resourceForURL(anchor.href);
- if (!resource)
- return false;
- this.showResource(resource, anchor.lineNumber);
- WebInspector.inspectorView.setCurrentPanel(this);
- return true;
- },
-
- /**
* @param {!WebInspector.Resource} resource
* @param {number=} line
* @param {number=} column
+ * @return {boolean}
*/
showResource: function(resource, line, column)
{
@@ -771,7 +761,27 @@
}
},
- __proto__: WebInspector.Panel.prototype
+ __proto__: WebInspector.PanelWithSidebarTree.prototype
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Revealer}
+ */
+WebInspector.ResourcesPanel.ResourceRevealer = function()
+{
+}
+
+WebInspector.ResourcesPanel.ResourceRevealer.prototype = {
+ /**
+ * @param {!Object} resource
+ * @param {number=} lineNumber
+ */
+ reveal: function(resource, lineNumber)
+ {
+ if (resource instanceof WebInspector.Resource)
+ /** @type {!WebInspector.ResourcesPanel} */ (WebInspector.showPanel("resources")).showResource(resource, lineNumber);
+ }
}
/**
@@ -861,6 +871,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -927,6 +938,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -997,6 +1009,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1035,6 +1048,10 @@
this._treeElementForResource[resource.url] = resourceTreeElement;
},
+ /**
+ * @param {string} url
+ * @return {?WebInspector.Resource}
+ */
resourceByURL: function(url)
{
var treeElement = this._treeElementForResource[url];
@@ -1109,6 +1126,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1119,6 +1137,7 @@
/**
* @override
+ * @return {boolean}
*/
ondblclick: function(event)
{
@@ -1227,6 +1246,9 @@
this._updateErrorsAndWarningsBubbles();
},
+ /**
+ * @return {!WebInspector.ResourceSourceFrame}
+ */
sourceView: function()
{
if (!this._sourceView) {
@@ -1263,6 +1285,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1283,6 +1306,10 @@
{
this.removeChildren();
+ /**
+ * @param {!Array.<string>} tableNames
+ * @this {WebInspector.DatabaseTreeElement}
+ */
function tableNamesCallback(tableNames)
{
var tableNamesLength = tableNames.length;
@@ -1314,6 +1341,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1587,6 +1615,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1655,6 +1684,9 @@
_clearObjectStore: function()
{
+ /**
+ * @this {WebInspector.IDBObjectStoreTreeElement}
+ */
function callback() {
this.update(this._objectStore);
}
@@ -1713,6 +1745,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1797,6 +1830,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1835,6 +1869,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1888,6 +1923,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1924,6 +1960,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -1981,6 +2018,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
@@ -2018,6 +2056,7 @@
/**
* @override
+ * @return {boolean}
*/
onselect: function(selectedByUser)
{
diff --git a/Source/devtools/front_end/RevisionHistoryView.js b/Source/devtools/front_end/RevisionHistoryView.js
index 0ca393d..8c4bd31 100644
--- a/Source/devtools/front_end/RevisionHistoryView.js
+++ b/Source/devtools/front_end/RevisionHistoryView.js
@@ -37,7 +37,6 @@
WebInspector.View.call(this);
this.registerRequiredCSS("revisionHistory.css");
this.element.classList.add("revision-history-drawer");
- this.element.classList.add("fill");
this.element.classList.add("outline-disclosure");
this._uiSourceCodeItems = new Map();
@@ -46,6 +45,7 @@
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
+ * @this {WebInspector.RevisionHistoryView}
*/
function populateRevisions(uiSourceCode)
{
@@ -221,6 +221,7 @@
/**
* @param {?string} baseContent
+ * @this {WebInspector.RevisionHistoryTreeElement}
*/
function step1(baseContent)
{
@@ -230,6 +231,7 @@
/**
* @param {?string} baseContent
* @param {?string} newContent
+ * @this {WebInspector.RevisionHistoryTreeElement}
*/
function step2(baseContent, newContent)
{
diff --git a/Source/devtools/front_end/RuntimeModel.js b/Source/devtools/front_end/RuntimeModel.js
index 8f47781..dcea28e 100644
--- a/Source/devtools/front_end/RuntimeModel.js
+++ b/Source/devtools/front_end/RuntimeModel.js
@@ -81,25 +81,34 @@
return this._frameIdToContextList[frame.id];
},
+ /**
+ * @param {!WebInspector.Event} event
+ */
_frameAdded: function(event)
{
- var frame = event.data;
+ var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
var context = new WebInspector.FrameExecutionContextList(frame);
this._frameIdToContextList[frame.id] = context;
this.dispatchEventToListeners(WebInspector.RuntimeModel.Events.FrameExecutionContextListAdded, context);
},
+ /**
+ * @param {!WebInspector.Event} event
+ */
_frameNavigated: function(event)
{
- var frame = event.data;
+ var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
var context = this._frameIdToContextList[frame.id];
if (context)
context._frameNavigated(frame);
},
+ /**
+ * @param {!WebInspector.Event} event
+ */
_frameDetached: function(event)
{
- var frame = event.data;
+ var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
var context = this._frameIdToContextList[frame.id];
if (!context)
return;
@@ -116,9 +125,7 @@
_executionContextCreated: function(context)
{
var contextList = this._frameIdToContextList[context.frameId];
- // FIXME(85708): this should never happen
- if (!contextList)
- return;
+ console.assert(contextList);
contextList._addExecutionContext(new WebInspector.ExecutionContext(context.id, context.name, context.isPageContext));
},
@@ -210,6 +217,9 @@
else
this.evaluate(expressionString, "completion", true, true, false, false, evaluated.bind(this));
+ /**
+ * @this {WebInspector.RuntimeModel}
+ */
function evaluated(result, wasThrown)
{
if (!result || wasThrown) {
@@ -217,6 +227,10 @@
return;
}
+ /**
+ * @param {string} primitiveType
+ * @this {WebInspector.RuntimeModel}
+ */
function getCompletions(primitiveType)
{
var object;
@@ -247,6 +261,12 @@
this.evaluate("(" + getCompletions + ")(\"" + result.type + "\")", "completion", false, true, true, false, receivedPropertyNamesFromEval.bind(this));
}
+ /**
+ * @param {?WebInspector.RemoteObject} notRelevant
+ * @param {boolean} wasThrown
+ * @param {?RuntimeAgent.RemoteObject=} result
+ * @this {WebInspector.RuntimeModel}
+ */
function receivedPropertyNamesFromEval(notRelevant, wasThrown, result)
{
if (result && !wasThrown)
@@ -255,6 +275,9 @@
completionsReadyCallback([]);
}
+ /**
+ * @this {WebInspector.RuntimeModel}
+ */
function receivedPropertyNames(propertyNames)
{
RuntimeAgent.releaseObjectGroup("completion");
@@ -326,9 +349,9 @@
}
/**
- * @type {?WebInspector.RuntimeModel}
+ * @type {!WebInspector.RuntimeModel}
*/
-WebInspector.runtimeModel = null;
+WebInspector.runtimeModel;
/**
* @constructor
@@ -349,7 +372,6 @@
/**
* @constructor
- * @extends {WebInspector.Object}
*/
WebInspector.ExecutionContext = function(id, name, isPageContext)
{
@@ -376,6 +398,7 @@
/**
* @constructor
* @extends {WebInspector.Object}
+ * @param {!WebInspector.ResourceTreeFrame} frame
*/
WebInspector.FrameExecutionContextList = function(frame)
{
@@ -390,6 +413,9 @@
WebInspector.FrameExecutionContextList.prototype =
{
+ /**
+ * @param {!WebInspector.ResourceTreeFrame} frame
+ */
_frameNavigated: function(frame)
{
this._frame = frame;
@@ -407,11 +433,17 @@
this.dispatchEventToListeners(WebInspector.FrameExecutionContextList.EventTypes.ContextAdded, this);
},
+ /**
+ * @return {!Array.<!WebInspector.ExecutionContext>}
+ */
executionContexts: function()
{
return this._executionContexts;
},
+ /**
+ * @return {!WebInspector.ExecutionContext}
+ */
mainWorldContext: function()
{
return this._executionContexts[0];
@@ -419,6 +451,7 @@
/**
* @param {string} securityOrigin
+ * @return {?WebInspector.ExecutionContext}
*/
contextBySecurityOrigin: function(securityOrigin)
{
@@ -427,30 +460,31 @@
if (!context.isMainWorldContext && context.name === securityOrigin)
return context;
}
+ return null;
},
+ /**
+ * @return {string}
+ */
get frameId()
{
return this._frame.id;
},
+ /**
+ * @return {string}
+ */
get url()
{
return this._frame.url;
},
+ /**
+ * @return {string}
+ */
get displayName()
{
- if (!this._frame.parentFrame)
- return "<top frame>";
- var name = this._frame.name || "";
- var subtitle = new WebInspector.ParsedURL(this._frame.url).displayName;
- if (subtitle) {
- if (!name)
- return subtitle;
- return name + "( " + subtitle + " )";
- }
- return "<iframe>";
+ return this._frame.displayName();
},
__proto__: WebInspector.Object.prototype
diff --git a/Source/devtools/front_end/SASSSourceMapping.js b/Source/devtools/front_end/SASSSourceMapping.js
index f8fdcde..f9ffa0f 100644
--- a/Source/devtools/front_end/SASSSourceMapping.js
+++ b/Source/devtools/front_end/SASSSourceMapping.js
@@ -169,6 +169,7 @@
* @param {number} statusCode
* @param {!NetworkAgent.Headers} headers
* @param {string} content
+ * @this {WebInspector.SASSSourceMapping}
*/
function sassLoadedViaNetwork(error, statusCode, headers, content)
{
@@ -184,6 +185,7 @@
/**
* @param {?Date} timestamp
+ * @this {WebInspector.SASSSourceMapping}
*/
function metadataReceived(timestamp)
{
@@ -240,7 +242,7 @@
{
var cssUISourceCode = this._workspace.uiSourceCodeForURL(cssURL);
if (!cssUISourceCode) {
- WebInspector.log(cssURL + " resource missing. Please reload the page.");
+ WebInspector.log(WebInspector.UIString("%s resource missing. Please reload the page.", cssURL));
callback(cssURL, sassURL, true);
return;
}
@@ -272,6 +274,7 @@
* @param {number} statusCode
* @param {!NetworkAgent.Headers} headers
* @param {string} content
+ * @this {WebInspector.SASSSourceMapping}
*/
function contentLoaded(error, statusCode, headers, content)
{
@@ -325,6 +328,7 @@
/**
* @param {?Date} timestamp
+ * @this {WebInspector.SASSSourceMapping}
*/
function metadataCallback(timestamp)
{
@@ -349,6 +353,7 @@
/**
* @param {?string} content
+ * @this {WebInspector.SASSSourceMapping}
*/
function contentCallback(content)
{
@@ -430,6 +435,7 @@
/**
* @param {?WebInspector.SourceMap} sourceMap
+ * @this {WebInspector.SASSSourceMapping}
*/
function sourceMapLoaded(sourceMap)
{
@@ -490,6 +496,7 @@
/**
* @param {?WebInspector.SourceMap} sourceMap
+ * @this {WebInspector.SASSSourceMapping}
*/
function sourceMapLoaded(sourceMap)
{
@@ -593,7 +600,7 @@
this._cssURLsForSASSURL = {};
/** @type {!Object.<string, !Array.<function(?WebInspector.SourceMap)>>} */
this._pendingSourceMapLoadingCallbacks = {};
- /** @type {!Object.<string, {deadlineMs: number, dataByURL: !Object.<string, !{timer: number, previousPoll: number}>}>} */
+ /** @type {!Object.<string, !{deadlineMs: number, dataByURL: !Object.<string, !{timer: number, previousPoll: number}>}>} */
this._pollDataForSASSURL = {};
/** @type {!Object.<string, !WebInspector.SourceMap>} */
this._sourceMapByURL = {};
diff --git a/Source/devtools/front_end/ScreencastView.js b/Source/devtools/front_end/ScreencastView.js
index ad47bce..602c97a 100644
--- a/Source/devtools/front_end/ScreencastView.js
+++ b/Source/devtools/front_end/ScreencastView.js
@@ -32,63 +32,13 @@
* @constructor
* @extends {WebInspector.View}
* @implements {WebInspector.DOMNodeHighlighter}
+ * @param {!Element} statusBarButtonPlaceholder
*/
-WebInspector.ScreencastView = function()
+WebInspector.ScreencastView = function(statusBarButtonPlaceholder)
{
WebInspector.View.call(this);
this.registerRequiredCSS("screencastView.css");
-
- this.element.classList.add("fill");
- this.element.classList.add("screencast");
-
- this._createNavigationBar();
-
- this._viewportElement = this.element.createChild("div", "screencast-viewport hidden");
- this._glassPaneElement = this.element.createChild("div", "screencast-glasspane hidden");
-
- this._canvasElement = this._viewportElement.createChild("canvas");
- this._canvasElement.tabIndex = 1;
- this._canvasElement.addEventListener("mousedown", this._handleMouseEvent.bind(this), false);
- this._canvasElement.addEventListener("mouseup", this._handleMouseEvent.bind(this), false);
- this._canvasElement.addEventListener("mousemove", this._handleMouseEvent.bind(this), false);
- this._canvasElement.addEventListener("mousewheel", this._handleMouseEvent.bind(this), false);
- this._canvasElement.addEventListener("click", this._handleMouseEvent.bind(this), false);
- this._canvasElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false);
- this._canvasElement.addEventListener("keydown", this._handleKeyEvent.bind(this), false);
- this._canvasElement.addEventListener("keyup", this._handleKeyEvent.bind(this), false);
- this._canvasElement.addEventListener("keypress", this._handleKeyEvent.bind(this), false);
-
- this._titleElement = this._viewportElement.createChild("div", "screencast-element-title monospace hidden");
- this._tagNameElement = this._titleElement.createChild("span", "screencast-tag-name");
- this._nodeIdElement = this._titleElement.createChild("span", "screencast-node-id");
- this._classNameElement = this._titleElement.createChild("span", "screencast-class-name");
- this._titleElement.appendChild(document.createTextNode(" "));
- this._nodeWidthElement = this._titleElement.createChild("span");
- this._titleElement.createChild("span", "screencast-px").textContent = "px";
- this._titleElement.appendChild(document.createTextNode(" \u00D7 "));
- this._nodeHeightElement = this._titleElement.createChild("span");
- this._titleElement.createChild("span", "screencast-px").textContent = "px";
-
- this._imageElement = new Image();
- this._isCasting = false;
- this._context = this._canvasElement.getContext("2d");
- this._checkerboardPattern = this._createCheckerboardPattern(this._context);
-
- this._shortcuts = /** !Object.<number, function(Event=):boolean> */ ({});
- this._shortcuts[WebInspector.KeyboardShortcut.makeKey("l", WebInspector.KeyboardShortcut.Modifiers.Ctrl)] = this._focusNavigationBar.bind(this);
-
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ScreencastFrame, this._screencastFrame, this);
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ScreencastVisibilityChanged, this._screencastVisibilityChanged, this);
-
- WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStarted, this._onTimeline.bind(this, true), this);
- WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStopped, this._onTimeline.bind(this, false), this);
- this._timelineActive = WebInspector.timelineManager.isStarted();
-
- WebInspector.profileManager.addEventListener(WebInspector.ProfileManager.EventTypes.ProfileStarted, this._onProfiler.bind(this, true), this);
- WebInspector.profileManager.addEventListener(WebInspector.ProfileManager.EventTypes.ProfileStopped, this._onProfiler.bind(this, false), this);
- this._profilerActive = WebInspector.CPUProfileType && WebInspector.profileManager.isStarted(WebInspector.CPUProfileType.TypeId);
-
- this._updateGlasspane();
+ this._statusBarButtonPlaceholder = statusBarButtonPlaceholder;
}
WebInspector.ScreencastView._bordersSize = 40;
@@ -98,6 +48,83 @@
WebInspector.ScreencastView._HttpRegex = /^https?:\/\/(.+)/;
WebInspector.ScreencastView.prototype = {
+ initialize: function()
+ {
+ this.element.classList.add("screencast");
+
+ this._createNavigationBar();
+
+ this._viewportElement = this.element.createChild("div", "screencast-viewport hidden");
+ this._glassPaneElement = this.element.createChild("div", "screencast-glasspane hidden");
+
+ this._canvasElement = this._viewportElement.createChild("canvas");
+ this._canvasElement.tabIndex = 1;
+ this._canvasElement.addEventListener("mousedown", this._handleMouseEvent.bind(this), false);
+ this._canvasElement.addEventListener("mouseup", this._handleMouseEvent.bind(this), false);
+ this._canvasElement.addEventListener("mousemove", this._handleMouseEvent.bind(this), false);
+ this._canvasElement.addEventListener("mousewheel", this._handleMouseEvent.bind(this), false);
+ this._canvasElement.addEventListener("click", this._handleMouseEvent.bind(this), false);
+ this._canvasElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false);
+ this._canvasElement.addEventListener("keydown", this._handleKeyEvent.bind(this), false);
+ this._canvasElement.addEventListener("keyup", this._handleKeyEvent.bind(this), false);
+ this._canvasElement.addEventListener("keypress", this._handleKeyEvent.bind(this), false);
+
+ this._titleElement = this._viewportElement.createChild("div", "screencast-element-title monospace hidden");
+ this._tagNameElement = this._titleElement.createChild("span", "screencast-tag-name");
+ this._nodeIdElement = this._titleElement.createChild("span", "screencast-node-id");
+ this._classNameElement = this._titleElement.createChild("span", "screencast-class-name");
+ this._titleElement.appendChild(document.createTextNode(" "));
+ this._nodeWidthElement = this._titleElement.createChild("span");
+ this._titleElement.createChild("span", "screencast-px").textContent = "px";
+ this._titleElement.appendChild(document.createTextNode(" \u00D7 "));
+ this._nodeHeightElement = this._titleElement.createChild("span");
+ this._titleElement.createChild("span", "screencast-px").textContent = "px";
+
+ this._imageElement = new Image();
+ this._isCasting = false;
+ this._context = this._canvasElement.getContext("2d");
+ this._checkerboardPattern = this._createCheckerboardPattern(this._context);
+
+ this._shortcuts = /** !Object.<number, function(Event=):boolean> */ ({});
+ this._shortcuts[WebInspector.KeyboardShortcut.makeKey("l", WebInspector.KeyboardShortcut.Modifiers.Ctrl)] = this._focusNavigationBar.bind(this);
+
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ScreencastFrame, this._screencastFrame, this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ScreencastVisibilityChanged, this._screencastVisibilityChanged, this);
+
+ WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStarted, this._onTimeline.bind(this, true), this);
+ WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStopped, this._onTimeline.bind(this, false), this);
+ this._timelineActive = WebInspector.timelineManager.isStarted();
+
+ WebInspector.cpuProfilerModel.addEventListener(WebInspector.CPUProfilerModel.EventTypes.ProfileStarted, this._onProfiler.bind(this, true), this);
+ WebInspector.cpuProfilerModel.addEventListener(WebInspector.CPUProfilerModel.EventTypes.ProfileStopped, this._onProfiler.bind(this, false), this);
+ this._profilerActive = WebInspector.cpuProfilerModel.isRecordingProfile();
+
+ this._updateGlasspane();
+
+ this._currentScreencastState = WebInspector.settings.createSetting("currentScreencastState", "");
+ this._lastScreencastState = WebInspector.settings.createSetting("lastScreencastState", "");
+ this._toggleScreencastButton = new WebInspector.StatusBarStatesSettingButton(
+ "screencast-status-bar-item",
+ ["disabled", "left", "top"],
+ [WebInspector.UIString("Disable screencast."), WebInspector.UIString("Switch to portrait screencast."), WebInspector.UIString("Switch to landscape screencast.")],
+ this._currentScreencastState,
+ this._lastScreencastState,
+ this._toggleScreencastButtonClicked.bind(this));
+ this._statusBarButtonPlaceholder.parentElement.insertBefore(this._toggleScreencastButton.element, this._statusBarButtonPlaceholder);
+ this._statusBarButtonPlaceholder.parentElement.removeChild(this._statusBarButtonPlaceholder);
+ },
+
+ /**
+ * @param {string} state
+ */
+ _toggleScreencastButtonClicked: function(state)
+ {
+ if (state === "disabled")
+ WebInspector.inspectorView.hideScreencastView();
+ else
+ WebInspector.inspectorView.showScreencastView(this, state === "left");
+ },
+
wasShown: function()
{
this._startCasting();
@@ -122,8 +149,8 @@
this._isCasting = false;
return;
}
- dimensions.width *= WebInspector.zoomFactor();
- dimensions.height *= WebInspector.zoomFactor();
+ dimensions.width *= WebInspector.zoomManager.zoomFactor();
+ dimensions.height *= WebInspector.zoomManager.zoomFactor();
PageAgent.startScreencast("jpeg", 80, Math.min(maxImageDimension, dimensions.width), Math.min(maxImageDimension, dimensions.height));
WebInspector.domAgent.setHighlighter(this);
},
@@ -201,8 +228,6 @@
* @private
*/
_onProfiler: function(on, event) {
- if (!WebInspector.CPUProfileType || event.data != WebInspector.CPUProfileType.TypeId)
- return;
this._profilerActive = on;
if (this._profilerActive)
this._stopCasting();
@@ -269,6 +294,7 @@
/**
* @param {?Protocol.Error} error
* @param {number} nodeId
+ * @this {WebInspector.ScreencastView}
*/
function callback(error, nodeId)
{
@@ -458,6 +484,7 @@
/**
* @param {?Protocol.Error} error
* @param {!DOMAgent.BoxModel} model
+ * @this {WebInspector.ScreencastView}
*/
function callback(error, model)
{
@@ -478,8 +505,10 @@
_scaleModel: function(model)
{
var scale = this._canvasElement.offsetWidth / this._viewport.width;
+
/**
* @param {!DOMAgent.Quad} quad
+ * @this {WebInspector.ScreencastView}
*/
function scaleQuad(quad)
{
@@ -716,12 +745,13 @@
* @param {boolean} enabled
* @param {boolean} inspectShadowDOM
* @param {!DOMAgent.HighlightConfig} config
- * @param {function(?Protocol.Error)} callback
+ * @param {function(?Protocol.Error)=} callback
*/
setInspectModeEnabled: function(enabled, inspectShadowDOM, config, callback)
{
this._inspectModeConfig = enabled ? config : null;
- callback(null);
+ if (callback)
+ callback(null);
},
/**
diff --git a/Source/devtools/front_end/Script.js b/Source/devtools/front_end/Script.js
index c5ae5be..c1eb311 100644
--- a/Source/devtools/front_end/Script.js
+++ b/Source/devtools/front_end/Script.js
@@ -60,6 +60,17 @@
WebInspector.Script.snippetSourceURLPrefix = "snippets:///";
+/**
+ * @param {string} source
+ * @return {string}
+ */
+WebInspector.Script._trimSourceURLComment = function(source)
+{
+ var sourceURLRegex = /\n[\040\t]*\/\/[@#]\ssourceURL=\s*(\S*?)\s*$/mg;
+ return source.replace(sourceURLRegex, "");
+},
+
+
WebInspector.Script.prototype = {
/**
* @return {string}
@@ -94,7 +105,7 @@
*/
function didGetScriptSource(error, source)
{
- this._source = error ? "" : source;
+ this._source = WebInspector.Script._trimSourceURLComment(error ? "" : source);
callback(this._source);
}
if (this.scriptId) {
@@ -137,6 +148,17 @@
},
/**
+ * @param {string} source
+ * @return {string}
+ */
+ _appendSourceURLCommentIfNeeded: function(source)
+ {
+ if (!this.hasSourceURL)
+ return source;
+ return source + "\n //# sourceURL=" + this.sourceURL;
+ },
+
+ /**
* @param {string} newSource
* @param {function(?Protocol.Error, !DebuggerAgent.SetScriptSourceError=, !Array.<!DebuggerAgent.CallFrame>=, !DebuggerAgent.StackTrace=, boolean=)} callback
*/
@@ -161,6 +183,10 @@
this.dispatchEventToListeners(WebInspector.Script.Events.ScriptEdited, newSource);
}
+ newSource = WebInspector.Script._trimSourceURLComment(newSource);
+ // We append correct sourceURL to script for consistency only. It's not actually needed for things to work correctly.
+ newSource = this._appendSourceURLCommentIfNeeded(newSource);
+
if (this.scriptId)
DebuggerAgent.setScriptSource(this.scriptId, newSource, undefined, didEditScriptSource.bind(this));
else
diff --git a/Source/devtools/front_end/ScriptFormatterWorker.js b/Source/devtools/front_end/ScriptFormatterWorker.js
index d6d8615..378a9a2 100644
--- a/Source/devtools/front_end/ScriptFormatterWorker.js
+++ b/Source/devtools/front_end/ScriptFormatterWorker.js
@@ -34,18 +34,44 @@
importScripts("cm/xml.js");
importScripts("cm/htmlmixed.js");
WebInspector = {};
-FormatterWorker = {};
-importScripts("CodeMirrorUtils.js");
-
-var onmessage = function(event) {
- if (!event.data.method)
- return;
-
- FormatterWorker[event.data.method](event.data.params);
+FormatterWorker = {
+ /**
+ * @param {string} mimeType
+ * @return {function(string, function(string, ?string, number, number))}
+ */
+ createTokenizer: function(mimeType)
+ {
+ var mode = CodeMirror.getMode({indentUnit: 2}, mimeType);
+ var state = CodeMirror.startState(mode);
+ function tokenize(line, callback)
+ {
+ var stream = new CodeMirror.StringStream(line);
+ while (!stream.eol()) {
+ var style = mode.token(stream, state);
+ var value = stream.current();
+ callback(value, style, stream.start, stream.start + value.length);
+ stream.start = stream.pos;
+ }
+ }
+ return tokenize;
+ }
};
/**
- * @param {!Object} params
+ * @typedef {{indentString: string, content: string, mimeType: string}}
+ */
+var FormatterParameters;
+
+var onmessage = function(event) {
+ var data = /** @type !{method: string, params: !FormatterParameters} */ (event.data);
+ if (!data.method)
+ return;
+
+ FormatterWorker[data.method](data.params);
+};
+
+/**
+ * @param {!FormatterParameters} params
*/
FormatterWorker.format = function(params)
{
@@ -83,12 +109,12 @@
/**
* @param {!Object} params
*/
-FormatterWorker.outline = function(params)
+FormatterWorker.javaScriptOutline = function(params)
{
- const chunkSize = 100000; // characters per data chunk
- const totalLength = params.content.length;
- const lines = params.content.split("\n");
- const chunkCount = FormatterWorker._chunkCount(totalLength, chunkSize);
+ var chunkSize = 100000; // characters per data chunk
+ var totalLength = params.content.length;
+ var lines = params.content.split("\n");
+ var chunkCount = FormatterWorker._chunkCount(totalLength, chunkSize);
var outlineChunk = [];
var previousIdentifier = null;
var previousToken = null;
@@ -99,22 +125,32 @@
var isReadingArguments = false;
var argumentsText = "";
var currentFunction = null;
- var tokenizer = WebInspector.CodeMirrorUtils.createTokenizer("text/javascript");
+ var tokenizer = FormatterWorker.createTokenizer("text/javascript");
for (var i = 0; i < lines.length; ++i) {
var line = lines[i];
tokenizer(line, processToken);
}
/**
+ * @param {?string} tokenType
+ * @return {boolean}
+ */
+ function isJavaScriptIdentifier(tokenType)
+ {
+ if (!tokenType)
+ return false;
+ return tokenType.startsWith("variable") || tokenType.startsWith("property") || tokenType === "def";
+ }
+
+ /**
* @param {string} tokenValue
- * @param {string} tokenType
+ * @param {?string} tokenType
* @param {number} column
* @param {number} newColumn
*/
function processToken(tokenValue, tokenType, column, newColumn)
{
- tokenType = tokenType ? WebInspector.CodeMirrorUtils.convertTokenType(tokenType) : null;
- if (tokenType === "javascript-ident") {
+ if (isJavaScriptIdentifier(tokenType)) {
previousIdentifier = tokenValue;
if (tokenValue && previousToken === "function") {
// A named function: "function f...".
@@ -122,7 +158,7 @@
addedFunction = true;
previousIdentifier = null;
}
- } else if (tokenType === "javascript-keyword") {
+ } else if (tokenType === "keyword") {
if (tokenValue === "function") {
if (previousIdentifier && (previousToken === "=" || previousToken === ":")) {
// Anonymous function assigned to an identifier: "...f = function..."
@@ -132,7 +168,7 @@
previousIdentifier = null;
}
}
- } else if (tokenValue === "." && previousTokenType === "javascript-ident")
+ } else if (tokenValue === "." && isJavaScriptIdentifier(previousTokenType))
previousIdentifier += ".";
else if (tokenValue === "(" && addedFunction)
isReadingArguments = true;
@@ -164,6 +200,89 @@
postMessage({ chunk: outlineChunk, total: chunkCount, index: chunkCount });
}
+FormatterWorker.CSSParserStates = {
+ Initial: "Initial",
+ Selector: "Selector",
+ AtRule: "AtRule",
+};
+
+FormatterWorker.cssOutline = function(params)
+{
+ var chunkSize = 100000; // characters per data chunk
+ var totalLength = params.content.length;
+ var lines = params.content.split("\n");
+ var chunkCount = FormatterWorker._chunkCount(totalLength, chunkSize);
+ var rules = [];
+ var processedChunkCharacters = 0;
+ var currentChunk = 0;
+
+ var state = FormatterWorker.CSSParserStates.Initial;
+ var rule;
+ var property;
+
+ /**
+ * @param {string} tokenValue
+ * @param {?string} tokenType
+ * @param {number} column
+ * @param {number} newColumn
+ */
+ function processToken(tokenValue, tokenType, column, newColumn)
+ {
+ switch (state) {
+ case FormatterWorker.CSSParserStates.Initial:
+ if (tokenType === "qualifier" || tokenType === "builtin" || tokenType === "tag") {
+ rule = {
+ selectorText: tokenValue,
+ lineNumber: lineNumber,
+ columNumber: column,
+ };
+ state = FormatterWorker.CSSParserStates.Selector;
+ } else if (tokenType === "def") {
+ rule = {
+ atRule: tokenValue,
+ lineNumber: lineNumber,
+ columNumber: column,
+ };
+ state = FormatterWorker.CSSParserStates.AtRule;
+ }
+ break;
+ case FormatterWorker.CSSParserStates.Selector:
+ if (tokenValue === "{" && tokenType === null) {
+ rule.selectorText = rule.selectorText.trim();
+ rules.push(rule);
+ state = FormatterWorker.CSSParserStates.Initial;
+ } else {
+ rule.selectorText += tokenValue;
+ }
+ break;
+ case FormatterWorker.CSSParserStates.AtRule:
+ if ((tokenValue === ";" || tokenValue === "{") && tokenType === null) {
+ rule.atRule = rule.atRule.trim();
+ rules.push(rule);
+ state = FormatterWorker.CSSParserStates.Initial;
+ } else {
+ rule.atRule += tokenValue;
+ }
+ break;
+ default:
+ console.assert(false, "Unknown CSS parser state.");
+ }
+ processedChunkCharacters += newColumn - column;
+ if (processedChunkCharacters > chunkSize) {
+ postMessage({ chunk: rules, total: chunkCount, index: currentChunk++ });
+ rules = [];
+ processedChunkCharacters = 0;
+ }
+ }
+ var tokenizer = FormatterWorker.createTokenizer("text/css");
+ var lineNumber;
+ for (lineNumber = 0; lineNumber < lines.length; ++lineNumber) {
+ var line = lines[lineNumber];
+ tokenizer(line, processToken);
+ }
+ postMessage({ chunk: rules, total: chunkCount, index: currentChunk++ });
+}
+
/**
* @param {string} content
* @param {!{original: !Array.<number>, formatted: !Array.<number>}} mapping
@@ -221,6 +340,7 @@
FormatterWorker.HTMLFormatter.prototype = {
/**
* @param {string} content
+ * @return {!{content: string, mapping: {original: !Array.<number>, formatted: !Array.<number>}}}
*/
format: function(content)
{
@@ -232,9 +352,13 @@
var scriptOpened = false;
var styleOpened = false;
- var tokenizer = WebInspector.CodeMirrorUtils.createTokenizer("text/html");
+ var tokenizer = FormatterWorker.createTokenizer("text/html");
+
+ /**
+ * @this {FormatterWorker.HTMLFormatter}
+ */
function processToken(tokenValue, tokenType, tokenStart, tokenEnd) {
- if (tokenType !== "xml-tag")
+ if (tokenType !== "tag")
return;
if (tokenValue.toLowerCase() === "<script") {
scriptOpened = true;
@@ -301,7 +425,7 @@
},
/**
- * @param {function(string, {formatted: !Array.<number>, original: !Array.<number>}, number, number, string)} formatFunction
+ * @param {function(string, !{formatted: !Array.<number>, original: !Array.<number>}, number, number, string)} formatFunction
* @param {number} cursor
*/
_handleSubFormatterEnd: function(formatFunction, cursor)
@@ -327,6 +451,9 @@
return keys;
};
+/**
+ * @return {!Object}
+ */
function require()
{
return parse;
diff --git a/Source/devtools/front_end/ScriptSnippetModel.js b/Source/devtools/front_end/ScriptSnippetModel.js
index b77e162..2e229e7 100644
--- a/Source/devtools/front_end/ScriptSnippetModel.js
+++ b/Source/devtools/front_end/ScriptSnippetModel.js
@@ -220,6 +220,7 @@
* @param {?string} error
* @param {string=} scriptId
* @param {string=} syntaxErrorMessage
+ * @this {WebInspector.ScriptSnippetModel}
*/
function compileCallback(error, scriptId, syntaxErrorMessage)
{
@@ -259,6 +260,7 @@
* @param {?string} error
* @param {?RuntimeAgent.RemoteObject} result
* @param {boolean=} wasThrown
+ * @this {WebInspector.ScriptSnippetModel}
*/
function runCallback(error, result, wasThrown)
{
@@ -350,7 +352,7 @@
for (var i = 0; i < breakpointLocations.length; ++i) {
var uiLocation = breakpointLocations[i].uiLocation;
var breakpoint = breakpointLocations[i].breakpoint;
- WebInspector.breakpointManager.setBreakpoint(uiSourceCode, uiLocation.lineNumber, breakpoint.condition(), breakpoint.enabled());
+ WebInspector.breakpointManager.setBreakpoint(uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, breakpoint.condition(), breakpoint.enabled());
}
},
@@ -581,6 +583,9 @@
*/
searchInContent: function(query, caseSensitive, isRegex, callback)
{
+ /**
+ * @this {WebInspector.SnippetContentProvider}
+ */
function performSearch()
{
callback(WebInspector.ContentProvider.performSearchInContent(this._snippet.content, query, caseSensitive, isRegex));
@@ -588,9 +593,7 @@
// searchInContent should call back later.
window.setTimeout(performSearch.bind(this), 0);
- },
-
- __proto__: WebInspector.ContentProvider.prototype
+ }
}
/**
@@ -685,6 +688,6 @@
}
/**
- * @type {?WebInspector.ScriptSnippetModel}
+ * @type {!WebInspector.ScriptSnippetModel}
*/
-WebInspector.scriptSnippetModel = null;
+WebInspector.scriptSnippetModel;
diff --git a/Source/devtools/front_end/SearchableView.js b/Source/devtools/front_end/SearchableView.js
index e5dde3c..a938276 100644
--- a/Source/devtools/front_end/SearchableView.js
+++ b/Source/devtools/front_end/SearchableView.js
@@ -39,9 +39,6 @@
WebInspector.View.call(this);
this._searchProvider = searchable;
-
- this.element.classList.add("vbox");
- this.element.style.flex = "auto";
this.element.addEventListener("keydown", this._onKeyDown.bind(this), false);
this._footerElementContainer = this.element.createChild("div", "inspector-footer status-bar hidden");
@@ -110,7 +107,7 @@
this._replaceCheckboxElement = this._replaceElement.createChild("input");
this._replaceCheckboxElement.type = "checkbox";
this._replaceCheckboxElement.id = "search-replace-trigger";
- this._replaceCheckboxElement.addEventListener("click", this._updateSecondRowVisibility.bind(this), false);
+ this._replaceCheckboxElement.addEventListener("change", this._updateSecondRowVisibility.bind(this), false);
this._replaceLabelElement = this._replaceElement.createChild("label");
this._replaceLabelElement.textContent = WebInspector.UIString("Replace");
@@ -180,6 +177,11 @@
{
this._shortcuts = {};
+ /**
+ * @param {!Array.<!WebInspector.KeyboardShortcut.Descriptor>} shortcuts
+ * @param {function()} handler
+ * @this {WebInspector.SearchableView}
+ */
function register(shortcuts, handler)
{
for (var i = 0; i < shortcuts.length; ++i)
@@ -201,11 +203,11 @@
},
/**
- * @param {boolean} canReplace
+ * @param {boolean} replaceable
*/
- setCanReplace: function(canReplace)
+ setReplaceable: function(replaceable)
{
- this._canReplace = canReplace;
+ this._replaceable = replaceable;
},
/**
@@ -225,6 +227,9 @@
this._updateSearchMatchesCountAndCurrentMatchIndex(this._searchProvider.currentSearchMatches, currentMatchIndex);
},
+ /**
+ * @return {boolean}
+ */
isSearchVisible: function()
{
return this._searchIsVisible;
@@ -233,7 +238,8 @@
closeSearch: function()
{
this.cancelSearch();
- WebInspector.setCurrentFocusElement(WebInspector.previousFocusElement());
+ if (WebInspector.currentFocusElement().isDescendant(this._footerElementContainer))
+ WebInspector.setCurrentFocusElement(WebInspector.previousFocusElement());
},
_toggleSearchBar: function(toggled)
@@ -264,8 +270,8 @@
handleFindNextShortcut: function()
{
if (!this._searchIsVisible)
- return true;
- this._searchProvider.jumpToPreviousSearchResult();
+ return false;
+ this._searchProvider.jumpToNextSearchResult();
return true;
},
@@ -275,8 +281,8 @@
handleFindPreviousShortcut: function()
{
if (!this._searchIsVisible)
- return true;
- this._searchProvider.jumpToNextSearchResult();
+ return false;
+ this._searchProvider.jumpToPreviousSearchResult();
return true;
},
@@ -357,13 +363,8 @@
_updateReplaceVisibility: function()
{
- if (!this._searchIsVisible)
- return;
-
- if (this._canReplace)
- this._replaceElement.classList.remove("hidden");
- else {
- this._replaceElement.classList.add("hidden");
+ this._replaceElement.enableStyleClass("hidden", !this._replaceable);
+ if (!this._replaceable) {
this._replaceCheckboxElement.checked = false;
this._updateSecondRowVisibility();
}
@@ -461,8 +462,6 @@
_updateSecondRowVisibility: function()
{
- if (!this._searchIsVisible)
- return;
if (this._replaceCheckboxElement.checked) {
this._footerElement.classList.add("toolbar-search-replace");
this._secondRowElement.classList.remove("hidden");
@@ -483,14 +482,14 @@
_replace: function()
{
- this._searchProvider.replaceSelectionWith(this._replaceInputElement.value);
+ /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceSelectionWith(this._replaceInputElement.value);
delete this._currentQuery;
this._performSearch(true, true);
},
_replaceAll: function()
{
- this._searchProvider.replaceAllWith(this._searchInputElement.value, this._replaceInputElement.value);
+ /** @type {!WebInspector.Replaceable} */ (this._searchProvider).replaceAllWith(this._searchInputElement.value, this._replaceInputElement.value);
},
_onInput: function(event)
@@ -524,5 +523,25 @@
jumpToNextSearchResult: function() { },
- jumpToPreviousSearchResult: function() { },
+ jumpToPreviousSearchResult: function() { }
+}
+
+/**
+ * @interface
+ */
+WebInspector.Replaceable = function()
+{
+}
+
+WebInspector.Replaceable.prototype = {
+ /**
+ * @param {string} text
+ */
+ replaceSelectionWith: function(text) { },
+
+ /**
+ * @param {string} query
+ * @param {string} replacement
+ */
+ replaceAllWith: function(query, replacement) { }
}
diff --git a/Source/devtools/front_end/Settings.js b/Source/devtools/front_end/Settings.js
index 2b9b891..e495213 100644
--- a/Source/devtools/front_end/Settings.js
+++ b/Source/devtools/front_end/Settings.js
@@ -31,12 +31,9 @@
var Preferences = {
maxInlineTextChildLength: 80,
- minConsoleHeight: 75,
+ minDrawerHeight: 25,
minSidebarWidth: 100,
minSidebarHeight: 75,
- minElementsSidebarWidth: 200,
- minElementsSidebarHeight: 200,
- minScriptsSidebarWidth: 200,
applicationTitle: "Developer Tools - %s",
experimentsEnabled: false
}
@@ -82,7 +79,6 @@
this.emulateViewport = this.createSetting("emulateViewport", false);
this.emulateTouchEvents = this.createSetting("emulateTouchEvents", false);
this.showShadowDOM = this.createSetting("showShadowDOM", false);
- this.zoomLevel = this.createSetting("zoomLevel", 0);
this.savedURLs = this.createSetting("savedURLs", {});
this.javaScriptDisabled = this.createSetting("javaScriptDisabled", false);
this.overrideGeolocation = this.createSetting("overrideGeolocation", false);
@@ -96,7 +92,6 @@
this.textEditorAutoDetectIndent = this.createSetting("textEditorAutoIndentIndent", true);
this.textEditorAutocompletion = this.createSetting("textEditorAutocompletion", true);
this.textEditorBracketMatching = this.createSetting("textEditorBracketMatching", true);
- this.lastDockState = this.createSetting("lastDockState", "");
this.cssReloadEnabled = this.createSetting("cssReloadEnabled", false);
this.timelineCaptureStacks = this.createSetting("timelineCaptureStacks", true);
this.showMetricsRulers = this.createSetting("showMetricsRulers", false);
@@ -113,10 +108,10 @@
this.showWhitespacesInEditor = this.createSetting("showWhitespacesInEditor", false);
this.skipStackFramesSwitch = this.createSetting("skipStackFramesSwitch", false);
this.skipStackFramesPattern = this.createSetting("skipStackFramesPattern", "");
- this.screencastEnabled = this.createSetting("screencastEnabled", false);
- this.screencastSidebarWidth = this.createSetting("screencastSidebarWidth", 300);
this.showEmulationViewInDrawer = this.createSetting("showEmulationViewInDrawer", true);
this.showRenderingViewInDrawer = this.createSetting("showRenderingViewInDrawer", true);
+ this.pauseOnExceptionEnabled = this.createSetting("pauseOnExceptionEnabled", false);
+ this.pauseOnCaughtException = this.createSetting("pauseOnCaughtException", false);
this.enableAsyncStackTraces = this.createSetting("enableAsyncStackTraces", false);
}
@@ -144,15 +139,25 @@
if (!this._registry[key])
this._registry[key] = new WebInspector.BackendSetting(key, defaultValue, this._eventSupport, window.localStorage, setterCallback);
return this._registry[key];
+ },
+
+ initializeBackendSettings: function()
+ {
+ this.showPaintRects = WebInspector.settings.createBackendSetting("showPaintRects", false, PageAgent.setShowPaintRects.bind(PageAgent));
+ this.showDebugBorders = WebInspector.settings.createBackendSetting("showDebugBorders", false, PageAgent.setShowDebugBorders.bind(PageAgent));
+ this.continuousPainting = WebInspector.settings.createBackendSetting("continuousPainting", false, PageAgent.setContinuousPaintingEnabled.bind(PageAgent));
+ this.showFPSCounter = WebInspector.settings.createBackendSetting("showFPSCounter", false, PageAgent.setShowFPSCounter.bind(PageAgent));
+ this.showScrollBottleneckRects = WebInspector.settings.createBackendSetting("showScrollBottleneckRects", false, PageAgent.setShowScrollBottleneckRects.bind(PageAgent));
}
}
/**
* @constructor
* @param {string} name
- * @param {*} defaultValue
+ * @param {V} defaultValue
* @param {!WebInspector.Object} eventSupport
* @param {?Storage} storage
+ * @template V
*/
WebInspector.Setting = function(name, defaultValue, eventSupport, storage)
{
@@ -186,6 +191,9 @@
return this._name;
},
+ /**
+ * @return {V}
+ */
get: function()
{
if (typeof this._value !== "undefined")
@@ -237,6 +245,10 @@
WebInspector.BackendSetting.prototype = {
set: function(value)
{
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.BackendSetting}
+ */
function callback(error)
{
if (error) {
@@ -262,16 +274,20 @@
this._enabledForTest = {};
// Add currently running experiments here.
+ this.asyncStackTraces = this._createExperiment("asyncStackTraces", "Enable support for async stack traces");
this.fileSystemInspection = this._createExperiment("fileSystemInspection", "FileSystem inspection");
this.canvasInspection = this._createExperiment("canvasInspection ", "Canvas inspection");
- this.cssRegions = this._createExperiment("cssRegions", "CSS Regions Support");
this.frameworksDebuggingSupport = this._createExperiment("frameworksDebuggingSupport", "Enable frameworks debugging support");
this.layersPanel = this._createExperiment("layersPanel", "Show Layers panel");
this.stepIntoSelection = this._createExperiment("stepIntoSelection", "Show step-in candidates while debugging.");
- this.openConsoleWithCtrlTilde = this._createExperiment("openConsoleWithCtrlTilde", "Open console with Ctrl/Cmd+Tilde, not Esc");
+ this.doNotOpenDrawerOnEsc = this._createExperiment("doNotOpenDrawerWithEsc", "Do not open drawer on Esc");
this.showEditorInDrawer = this._createExperiment("showEditorInDrawer", "Show editor in drawer");
this.gpuTimeline = this._createExperiment("gpuTimeline", "Show GPU data on timeline");
this.applyCustomStylesheet = this._createExperiment("applyCustomStylesheet", "Allow custom UI themes");
+ this.workersInMainWindow = this._createExperiment("workersInMainWindow", "Show workers in main window");
+ this.dockToLeft = this._createExperiment("dockToLeft", "Enable dock to left mode");
+ this.allocationProfiler = this._createExperiment("allocationProfiler", "Enable JavaScript heap allocation profiler");
+ this.timelineFlameChart = this._createExperiment("timelineFlameChart", "Enable FlameChart mode in Timeline");
this._cleanUpSetting();
}
@@ -396,7 +412,7 @@
*/
setEnabled: function(enabled)
{
- return this._experimentsSettings.setEnabled(this._name, enabled);
+ this._experimentsSettings.setEnabled(this._name, enabled);
},
enableForTest: function()
diff --git a/Source/devtools/front_end/SettingsScreen.js b/Source/devtools/front_end/SettingsScreen.js
index 2a6bde3..beee61f 100644
--- a/Source/devtools/front_end/SettingsScreen.js
+++ b/Source/devtools/front_end/SettingsScreen.js
@@ -72,7 +72,7 @@
regex = new RegExp(text);
} catch (e) {
}
- return regex ? null : "Invalid pattern";
+ return regex ? null : WebInspector.UIString("Invalid pattern");
}
/**
@@ -85,9 +85,9 @@
{
var value = Number(text);
if (isNaN(value))
- return "Invalid number format";
+ return WebInspector.UIString("Invalid number format");
if (value < min || value > max)
- return "Value is out of range [" + min + ", " + max + "]";
+ return WebInspector.UIString("Value is out of range [%d, %d]", min, max);
return null;
}
@@ -127,6 +127,7 @@
/**
* @override
+ * @return {boolean}
*/
isClosingKey: function(keyCode)
{
@@ -157,7 +158,7 @@
WebInspector.SettingsTab = function(name, id)
{
WebInspector.View.call(this);
- this.element.className = "settings-tab-container";
+ this.element.classList.add("settings-tab-container");
if (id)
this.element.id = id;
var header = this.element.createChild("header");
@@ -165,72 +166,6 @@
this.containerElement = this.element.createChild("div", "help-container-wrapper").createChild("div", "settings-tab help-content help-container");
}
-/**
- * @param {string} name
- * @param {function(): *} getter
- * @param {function(*)} setter
- * @param {boolean=} omitParagraphElement
- * @param {!Element=} inputElement
- * @param {string=} tooltip
- * @return {!Element}
- */
-WebInspector.SettingsTab.createCheckbox = function(name, getter, setter, omitParagraphElement, inputElement, tooltip)
-{
- var input = inputElement || document.createElement("input");
- input.type = "checkbox";
- input.name = name;
- input.checked = getter();
-
- function listener()
- {
- setter(input.checked);
- }
- input.addEventListener("click", listener, false);
-
- var label = document.createElement("label");
- label.appendChild(input);
- label.appendChild(document.createTextNode(name));
- if (tooltip)
- label.title = tooltip;
-
- if (omitParagraphElement)
- return label;
-
- var p = document.createElement("p");
- p.appendChild(label);
- return p;
-}
-
-/**
- * @param {string} name
- * @param {!WebInspector.Setting} setting
- * @param {boolean=} omitParagraphElement
- * @param {!Element=} inputElement
- * @param {string=} tooltip
- * @return {!Element}
- */
-WebInspector.SettingsTab.createSettingCheckbox = function(name, setting, omitParagraphElement, inputElement, tooltip)
-{
- return WebInspector.SettingsTab.createCheckbox(name, setting.get.bind(setting), setting.set.bind(setting), omitParagraphElement, inputElement, tooltip);
-}
-
-/**
- * @param {!WebInspector.Setting} setting
- * @return {!Element}
- */
-WebInspector.SettingsTab.createSettingFieldset = function(setting)
-{
- var fieldset = document.createElement("fieldset");
- fieldset.disabled = !setting.get();
- setting.addChangeListener(settingChanged);
- return fieldset;
-
- function settingChanged()
- {
- fieldset.disabled = !setting.get();
- }
-}
-
WebInspector.SettingsTab.prototype = {
/**
* @param {string=} name
@@ -336,19 +271,22 @@
WebInspector.SettingsTab.call(this, WebInspector.UIString("General"), "general-tab-content");
var p = this._appendSection();
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Disable cache (while DevTools is open)"), WebInspector.settings.cacheDisabled));
- var disableJSElement = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Disable JavaScript"), WebInspector.settings.javaScriptDisabled);
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Disable cache (while DevTools is open)"), WebInspector.settings.cacheDisabled));
+ var disableJSElement = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Disable JavaScript"), WebInspector.settings.javaScriptDisabled);
p.appendChild(disableJSElement);
WebInspector.settings.javaScriptDisabled.addChangeListener(this._javaScriptDisabledChanged, this);
this._disableJSCheckbox = disableJSElement.getElementsByTagName("input")[0];
this._updateScriptDisabledCheckbox();
p = this._appendSection(WebInspector.UIString("Appearance"));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show 'Emulation' view in console drawer."), WebInspector.settings.showEmulationViewInDrawer));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show 'Emulation' view in console drawer."), WebInspector.settings.showEmulationViewInDrawer));
this._appendDrawerNote(p.lastElementChild);
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show 'Rendering' view in console drawer."), WebInspector.settings.showRenderingViewInDrawer));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show 'Rendering' view in console drawer."), WebInspector.settings.showRenderingViewInDrawer));
this._appendDrawerNote(p.lastElementChild);
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Split panels vertically when docked to right"), WebInspector.settings.splitVerticallyWhenDockedToRight));
+ var splitVerticallyTitle = WebInspector.UIString("Split panels vertically when docked to %s", WebInspector.experimentsSettings.dockToLeft.isEnabled() ? "left or right" : "right");
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(splitVerticallyTitle, WebInspector.settings.splitVerticallyWhenDockedToRight));
+ var panelShortcutTitle = WebInspector.UIString("Enable %s + 1-9 shortcut to switch panels", WebInspector.isMac() ? "Cmd" : "Ctrl");
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(panelShortcutTitle, WebInspector.settings.shortcutPanelSwitch));
p = this._appendSection(WebInspector.UIString("Elements"));
var colorFormatElement = this._createSelectSetting(WebInspector.UIString("Color format"), [
@@ -358,20 +296,20 @@
[ "HSL: hsl(300, 80%, 90%)", WebInspector.Color.Format.HSL ]
], WebInspector.settings.colorFormat);
p.appendChild(colorFormatElement);
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show user agent styles"), WebInspector.settings.showUserAgentStyles));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Word wrap"), WebInspector.settings.domWordWrap));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show Shadow DOM"), WebInspector.settings.showShadowDOM));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show rulers"), WebInspector.settings.showMetricsRulers));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show user agent styles"), WebInspector.settings.showUserAgentStyles));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Word wrap"), WebInspector.settings.domWordWrap));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show Shadow DOM"), WebInspector.settings.showShadowDOM));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show rulers"), WebInspector.settings.showMetricsRulers));
p = this._appendSection(WebInspector.UIString("Sources"));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Search in content scripts"), WebInspector.settings.searchInContentScripts));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Enable JS source maps"), WebInspector.settings.jsSourceMapsEnabled));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Search in content scripts"), WebInspector.settings.searchInContentScripts));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Enable JavaScript source maps"), WebInspector.settings.jsSourceMapsEnabled));
- var checkbox = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Enable CSS source maps"), WebInspector.settings.cssSourceMapsEnabled);
+ var checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Enable CSS source maps"), WebInspector.settings.cssSourceMapsEnabled);
p.appendChild(checkbox);
- var fieldset = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.cssSourceMapsEnabled);
+ var fieldset = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.cssSourceMapsEnabled);
var autoReloadCSSCheckbox = fieldset.createChild("input");
- fieldset.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Auto-reload generated CSS"), WebInspector.settings.cssReloadEnabled, false, autoReloadCSSCheckbox));
+ fieldset.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Auto-reload generated CSS"), WebInspector.settings.cssReloadEnabled, false, autoReloadCSSCheckbox));
checkbox.appendChild(fieldset);
var indentationElement = this._createSelectSetting(WebInspector.UIString("Default indentation"), [
@@ -381,13 +319,13 @@
[ WebInspector.UIString("Tab character"), WebInspector.TextUtils.Indent.TabCharacter ]
], WebInspector.settings.textEditorIndent);
p.appendChild(indentationElement);
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Detect indentation"), WebInspector.settings.textEditorAutoDetectIndent));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Autocompletion"), WebInspector.settings.textEditorAutocompletion));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Bracket matching"), WebInspector.settings.textEditorBracketMatching));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show whitespace characters"), WebInspector.settings.showWhitespacesInEditor));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Detect indentation"), WebInspector.settings.textEditorAutoDetectIndent));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Autocompletion"), WebInspector.settings.textEditorAutocompletion));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Bracket matching"), WebInspector.settings.textEditorBracketMatching));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show whitespace characters"), WebInspector.settings.showWhitespacesInEditor));
if (WebInspector.experimentsSettings.frameworksDebuggingSupport.isEnabled()) {
- checkbox = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Skip stepping through sources with particular names"), WebInspector.settings.skipStackFramesSwitch);
- fieldset = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.skipStackFramesSwitch);
+ checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Skip stepping through sources with particular names"), WebInspector.settings.skipStackFramesSwitch);
+ fieldset = WebInspector.SettingsUI.createSettingFieldset(WebInspector.settings.skipStackFramesSwitch);
fieldset.appendChild(this._createInputSetting(WebInspector.UIString("Pattern"), WebInspector.settings.skipStackFramesPattern, false, 1000, "100px", WebInspector.SettingsScreen.regexValidator));
checkbox.appendChild(fieldset);
p.appendChild(checkbox);
@@ -396,27 +334,42 @@
WebInspector.settings.skipStackFramesPattern.addChangeListener(this._skipStackFramesSwitchOrPatternChanged, this);
p = this._appendSection(WebInspector.UIString("Profiler"));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Show advanced heap snapshot properties"), WebInspector.settings.showAdvancedHeapSnapshotProperties));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("High resolution CPU profiling"), WebInspector.settings.highResolutionCpuProfiling));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Show advanced heap snapshot properties"), WebInspector.settings.showAdvancedHeapSnapshotProperties));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("High resolution CPU profiling"), WebInspector.settings.highResolutionCpuProfiling));
p = this._appendSection(WebInspector.UIString("Console"));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Log XMLHttpRequests"), WebInspector.settings.monitoringXHREnabled));
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Preserve log upon navigation"), WebInspector.settings.preserveConsoleLog));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Log XMLHttpRequests"), WebInspector.settings.monitoringXHREnabled));
+ p.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Preserve log upon navigation"), WebInspector.settings.preserveConsoleLog));
- if (WebInspector.extensionServer.hasExtensions()) {
+ if (WebInspector.openAnchorLocationRegistry.handlerNames.length > 0) {
var handlerSelector = new WebInspector.HandlerSelector(WebInspector.openAnchorLocationRegistry);
p = this._appendSection(WebInspector.UIString("Extensions"));
p.appendChild(this._createCustomSetting(WebInspector.UIString("Open links in"), handlerSelector.element));
}
p = this._appendSection();
- var panelShortcutTitle = WebInspector.UIString("Enable %s + 1-9 shortcut to switch panels", WebInspector.isMac() ? "Cmd" : "Ctrl");
- p.appendChild(WebInspector.SettingsTab.createSettingCheckbox(panelShortcutTitle, WebInspector.settings.shortcutPanelSwitch));
+
+ var restoreDefaults = p.createChild("input", "settings-tab-text-button");
+ restoreDefaults.type = "button";
+ restoreDefaults.value = WebInspector.UIString("Restore defaults and reload");
+ restoreDefaults.addEventListener("click", restoreAndReload);
+
+ function restoreAndReload()
+ {
+ if (window.localStorage)
+ window.localStorage.clear();
+ WebInspector.reload();
+ }
}
WebInspector.GenericSettingsTab.prototype = {
_updateScriptDisabledCheckbox: function()
{
+ /**
+ * @param {?Protocol.Error} error
+ * @param {string} status
+ * @this {WebInspector.GenericSettingsTab}
+ */
function executionStatusCallback(error, status)
{
if (error || !status)
@@ -568,7 +521,7 @@
*/
_editFileSystem: function(id)
{
- WebInspector.EditFileSystemDialog.show(document.body, id);
+ WebInspector.EditFileSystemDialog.show(WebInspector.inspectorView.devtoolsElement(), id);
},
/**
@@ -837,6 +790,10 @@
else
this._ids.push(itemId);
+ /**
+ * @param {?Event} event
+ * @this {WebInspector.SettingsList}
+ */
function removeItemClicked(event)
{
removeItemButton.disabled = true;
@@ -1002,6 +959,7 @@
this._addInputElements[columnId] = inputElement;
return;
}
+ var validItemId = itemId;
if (!this._editInputElements[itemId])
this._editInputElements[itemId] = {};
@@ -1023,16 +981,20 @@
columnElement.inputElement = inputElement;
this._editInputElements[itemId][columnId] = inputElement;
+ /**
+ * @param {?Event} event
+ * @this {WebInspector.EditableSettingsList}
+ */
function rowClicked(event)
{
if (itemId === this._editingId)
return;
event.consume();
console.assert(!this._editingId);
- this._editingId = itemId;
- var listItem = this.itemForId(itemId);
+ this._editingId = validItemId;
+ var listItem = this.itemForId(validItemId);
listItem.classList.add("item-editing");
- var inputElement = event.target.inputElement || this._editInputElements[itemId][this.columns()[0]];
+ var inputElement = event.target.inputElement || this._editInputElements[validItemId][this.columns()[0]];
inputElement.focus();
inputElement.select();
}
@@ -1155,3 +1117,6 @@
__proto__: WebInspector.SettingsList.prototype
}
+
+/** @type {!WebInspector.SettingsController} */
+WebInspector.settingsController;
diff --git a/Source/devtools/front_end/SettingsUI.js b/Source/devtools/front_end/SettingsUI.js
new file mode 100644
index 0000000..25a4f6b
--- /dev/null
+++ b/Source/devtools/front_end/SettingsUI.js
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+WebInspector.SettingsUI = {}
+
+/**
+ * @param {string} name
+ * @param {function(): *} getter
+ * @param {function(*)} setter
+ * @param {boolean=} omitParagraphElement
+ * @param {!Element=} inputElement
+ * @param {string=} tooltip
+ * @return {!Element}
+ */
+WebInspector.SettingsUI.createCheckbox = function(name, getter, setter, omitParagraphElement, inputElement, tooltip)
+{
+ var input = inputElement || document.createElement("input");
+ input.type = "checkbox";
+ input.name = name;
+ input.checked = getter();
+
+ function listener()
+ {
+ setter(input.checked);
+ }
+ input.addEventListener("change", listener, false);
+
+ var label = document.createElement("label");
+ label.appendChild(input);
+ label.createTextChild(name);
+ if (tooltip)
+ label.title = tooltip;
+
+ if (omitParagraphElement)
+ return label;
+
+ var p = document.createElement("p");
+ p.appendChild(label);
+ return p;
+}
+
+/**
+ * @param {string} name
+ * @param {!WebInspector.Setting} setting
+ * @param {boolean=} omitParagraphElement
+ * @param {!Element=} inputElement
+ * @param {string=} tooltip
+ * @return {!Element}
+ */
+WebInspector.SettingsUI.createSettingCheckbox = function(name, setting, omitParagraphElement, inputElement, tooltip)
+{
+ return WebInspector.SettingsUI.createCheckbox(name, setting.get.bind(setting), setting.set.bind(setting), omitParagraphElement, inputElement, tooltip);
+}
+
+/**
+ * @param {!WebInspector.Setting} setting
+ * @return {!Element}
+ */
+WebInspector.SettingsUI.createSettingFieldset = function(setting)
+{
+ var fieldset = document.createElement("fieldset");
+ fieldset.disabled = !setting.get();
+ setting.addChangeListener(settingChanged);
+ return fieldset;
+
+ function settingChanged()
+ {
+ fieldset.disabled = !setting.get();
+ }
+}
diff --git a/Source/devtools/front_end/ShortcutsScreen.js b/Source/devtools/front_end/ShortcutsScreen.js
index ff8f466..4624557 100644
--- a/Source/devtools/front_end/ShortcutsScreen.js
+++ b/Source/devtools/front_end/ShortcutsScreen.js
@@ -86,9 +86,9 @@
/**
* We cannot initialize it here as localized strings are not loaded yet.
- * @type {?WebInspector.ShortcutsScreen}
+ * @type {!WebInspector.ShortcutsScreen}
*/
-WebInspector.shortcutsScreen = null;
+WebInspector.shortcutsScreen;
/**
* @constructor
@@ -97,7 +97,7 @@
WebInspector.ShortcutsSection = function(name)
{
this.name = name;
- this._lines = /** @type {!Array.<{key: !Node, text: string}>} */ ([]);
+ this._lines = /** @type {!Array.<!{key: !Node, text: string}>} */ ([]);
this.order = ++WebInspector.ShortcutsSection._sequenceNumber;
};
@@ -211,3 +211,252 @@
return result;
}
}
+
+WebInspector.ShortcutsScreen.registerShortcuts = function()
+{
+ // Elements panel
+ var elementsSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Elements Panel"));
+
+ var navigate = WebInspector.ShortcutsScreen.ElementsPanelShortcuts.NavigateUp.concat(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.NavigateDown);
+ elementsSection.addRelatedKeys(navigate, WebInspector.UIString("Navigate elements"));
+
+ var expandCollapse = WebInspector.ShortcutsScreen.ElementsPanelShortcuts.Expand.concat(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.Collapse);
+ elementsSection.addRelatedKeys(expandCollapse, WebInspector.UIString("Expand/collapse"));
+
+ elementsSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.EditAttribute, WebInspector.UIString("Edit attribute"));
+ elementsSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.HideElement, WebInspector.UIString("Hide element"));
+ elementsSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.ToggleEditAsHTML, WebInspector.UIString("Toggle edit as HTML"));
+
+ var stylesPaneSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Styles Pane"));
+
+ var nextPreviousProperty = WebInspector.ShortcutsScreen.ElementsPanelShortcuts.NextProperty.concat(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.PreviousProperty);
+ stylesPaneSection.addRelatedKeys(nextPreviousProperty, WebInspector.UIString("Next/previous property"));
+
+ stylesPaneSection.addRelatedKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.IncrementValue, WebInspector.UIString("Increment value"));
+ stylesPaneSection.addRelatedKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.DecrementValue, WebInspector.UIString("Decrement value"));
+
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.IncrementBy10, WebInspector.UIString("Increment by %f", 10));
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.DecrementBy10, WebInspector.UIString("Decrement by %f", 10));
+
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.IncrementBy100, WebInspector.UIString("Increment by %f", 100));
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.DecrementBy100, WebInspector.UIString("Decrement by %f", 100));
+
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.IncrementBy01, WebInspector.UIString("Increment by %f", 0.1));
+ stylesPaneSection.addAlternateKeys(WebInspector.ShortcutsScreen.ElementsPanelShortcuts.DecrementBy01, WebInspector.UIString("Decrement by %f", 0.1));
+
+
+ // Sources panel
+ var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel"));
+
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PauseContinue, WebInspector.UIString("Pause/Continue"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepOver, WebInspector.UIString("Step over"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepInto, WebInspector.UIString("Step into"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepIntoSelection, WebInspector.UIString("Step into selection"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepOut, WebInspector.UIString("Step out"));
+
+ var nextAndPrevFrameKeys = WebInspector.ShortcutsScreen.SourcesPanelShortcuts.NextCallFrame.concat(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame);
+ section.addRelatedKeys(nextAndPrevFrameKeys, WebInspector.UIString("Next/previous call frame"));
+
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.EvaluateSelectionInConsole, WebInspector.UIString("Evaluate selection in console"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.AddSelectionToWatch, WebInspector.UIString("Add selection to watch"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.GoToMember, WebInspector.UIString("Go to member"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.ToggleBreakpoint, WebInspector.UIString("Toggle breakpoint"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.ToggleComment, WebInspector.UIString("Toggle comment"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.CloseEditorTab, WebInspector.UIString("Close editor tab"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.IncreaseCSSUnitByOne, WebInspector.UIString("Increment CSS unit by 1"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.DecreaseCSSUnitByOne, WebInspector.UIString("Decrement CSS unit by 1"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.IncreaseCSSUnitByTen, WebInspector.UIString("Increment CSS unit by 10"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.DecreaseCSSUnitByTen, WebInspector.UIString("Decrement CSS unit by 10"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToPreviousLocation, WebInspector.UIString("Jump to previous editing location"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToNextLocation, WebInspector.UIString("Jump to next editing location"));
+
+ // Timeline panel
+ section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Timeline Panel"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.StartStopRecording, WebInspector.UIString("Start/stop recording"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.SaveToFile, WebInspector.UIString("Save timeline data"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.LoadFromFile, WebInspector.UIString("Load timeline data"));
+
+
+ // Profiles panel
+ section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Profiles Panel"));
+ section.addAlternateKeys(WebInspector.ShortcutsScreen.ProfilesPanelShortcuts.StartStopRecording, WebInspector.UIString("Start/stop recording"));
+}
+
+WebInspector.ShortcutsScreen.ElementsPanelShortcuts = {
+ NavigateUp: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up)
+ ],
+
+ NavigateDown: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down)
+ ],
+
+ Expand: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Right)
+ ],
+
+ Collapse: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Left)
+ ],
+
+ EditAttribute: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Enter)
+ ],
+
+ HideElement: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.H)
+ ],
+
+ ToggleEditAsHTML: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F2)
+ ],
+
+ NextProperty: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Tab)
+ ],
+
+ PreviousProperty: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Tab, WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ IncrementValue: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up)
+ ],
+
+ DecrementValue: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down)
+ ],
+
+ IncrementBy10: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up, WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ DecrementBy10: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down, WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ IncrementBy100: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ DecrementBy100: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ IncrementBy01: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ DecrementBy01: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ]
+};
+
+WebInspector.ShortcutsScreen.SourcesPanelShortcuts = {
+ IncreaseCSSUnitByOne: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ DecreaseCSSUnitByOne: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ IncreaseCSSUnitByTen: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ DecreaseCSSUnitByTen: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ RunSnippet: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Enter, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ PauseContinue: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F8),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Backslash, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ StepOver: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F10),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.SingleQuote, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ StepInto: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Semicolon, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ StepIntoSelection: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ StepOut: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.Shift),
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Semicolon, WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ EvaluateSelectionInConsole: [
+ WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.Ctrl)
+ ],
+
+ AddSelectionToWatch: [
+ WebInspector.KeyboardShortcut.makeDescriptor("a", WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.Ctrl)
+ ],
+
+ GoToMember: [
+ WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta | WebInspector.KeyboardShortcut.Modifiers.Shift)
+ ],
+
+ ToggleBreakpoint: [
+ WebInspector.KeyboardShortcut.makeDescriptor("b", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ NextCallFrame: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Period, WebInspector.KeyboardShortcut.Modifiers.Ctrl)
+ ],
+
+ PrevCallFrame: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Comma, WebInspector.KeyboardShortcut.Modifiers.Ctrl)
+ ],
+
+ ToggleComment: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Slash, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ JumpToPreviousLocation: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Minus, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ JumpToNextLocation: [
+ WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Plus, WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+
+ CloseEditorTab: [
+ WebInspector.KeyboardShortcut.makeDescriptor("w", WebInspector.KeyboardShortcut.Modifiers.Alt)
+ ],
+};
+
+WebInspector.ShortcutsScreen.TimelinePanelShortcuts = {
+ StartStopRecording: [
+ WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ SaveToFile: [
+ WebInspector.KeyboardShortcut.makeDescriptor("s", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ],
+
+ LoadFromFile: [
+ WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ]
+};
+
+WebInspector.ShortcutsScreen.ProfilesPanelShortcuts = {
+ StartStopRecording: [
+ WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+ ]
+}
diff --git a/Source/devtools/front_end/SidebarPane.js b/Source/devtools/front_end/SidebarPane.js
index 4a07e2a..332f5cb 100644
--- a/Source/devtools/front_end/SidebarPane.js
+++ b/Source/devtools/front_end/SidebarPane.js
@@ -50,6 +50,9 @@
}
WebInspector.SidebarPane.prototype = {
+ /**
+ * @return {string}
+ */
title: function()
{
return this._title;
@@ -157,7 +160,7 @@
WebInspector.SidebarPaneStack = function()
{
WebInspector.View.call(this);
- this.element.className = "sidebar-pane-stack fill";
+ this.element.className = "sidebar-pane-stack";
this.registerRequiredCSS("sidebarPane.css");
}
@@ -180,7 +183,7 @@
WebInspector.SidebarTabbedPane = function()
{
WebInspector.TabbedPane.call(this);
- this.setRetainTabsOrder(true);
+ this.setRetainTabOrder(true);
this.element.classList.add("sidebar-tabbed-pane");
this.registerRequiredCSS("sidebarPane.css");
}
diff --git a/Source/devtools/front_end/SidebarTreeElement.js b/Source/devtools/front_end/SidebarTreeElement.js
index 10c5e36..c14db7f 100644
--- a/Source/devtools/front_end/SidebarTreeElement.js
+++ b/Source/devtools/front_end/SidebarTreeElement.js
@@ -91,24 +91,14 @@
this.disclosureButton.className = "disclosure-button";
}
- if (!this.iconElement) {
- this.iconElement = document.createElement("img");
- this.iconElement.className = "icon";
- }
+ this.iconElement = document.createElementWithClass("img", "icon");
+ this.statusElement = document.createElementWithClass("div", "status");
+ this.titlesElement = document.createElementWithClass("div", "titles");
- this.statusElement = document.createElement("div");
- this.statusElement.className = "status";
+ this.titleContainer = this.titlesElement.createChild("span", "title-container");
+ this.titleElement = this.titleContainer.createChild("span", "title");
- this.titlesElement = document.createElement("div");
- this.titlesElement.className = "titles";
-
- this.titleElement = document.createElement("span");
- this.titleElement.className = "title";
- this.titlesElement.appendChild(this.titleElement);
-
- this.subtitleElement = document.createElement("span");
- this.subtitleElement.className = "subtitle";
- this.titlesElement.appendChild(this.subtitleElement);
+ this.subtitleElement = this.titlesElement.createChild("span", "subtitle");
this.className = className;
this.mainTitle = title;
@@ -180,6 +170,9 @@
}
},
+ /**
+ * @return {boolean}
+ */
isEventWithinDisclosureTriangle: function(event)
{
return event.target === this.disclosureButton;
diff --git a/Source/devtools/front_end/SidebarView.js b/Source/devtools/front_end/SidebarView.js
deleted file mode 100644
index e6cdff1..0000000
--- a/Source/devtools/front_end/SidebarView.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2011 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.SplitView}
- * @param {string=} sidebarPosition
- * @param {string=} sidebarWidthSettingName
- * @param {number=} defaultSidebarWidth
- * @param {number=} defaultSidebarHeight
- */
-WebInspector.SidebarView = function(sidebarPosition, sidebarWidthSettingName, defaultSidebarWidth, defaultSidebarHeight)
-{
- WebInspector.SplitView.call(this, true, sidebarWidthSettingName, defaultSidebarWidth, defaultSidebarHeight);
-
- this.setSidebarElementConstraints(Preferences.minSidebarWidth, Preferences.minSidebarHeight);
- this.setMainElementConstraints(0.5, 0.5);
-
- this.setSecondIsSidebar(sidebarPosition === WebInspector.SidebarView.SidebarPosition.End);
-}
-
-WebInspector.SidebarView.EventTypes = {
- Resized: "Resized"
-}
-
-/**
- * @enum {string}
- */
-WebInspector.SidebarView.SidebarPosition = {
- Start: "Start",
- End: "End"
-}
-
-WebInspector.SidebarView.prototype = {
- /**
- * @param {number} width
- */
- setSidebarWidth: function(width)
- {
- this.setSidebarSize(width);
- },
-
- /**
- * @return {number}
- */
- sidebarWidth: function()
- {
- return this.sidebarSize();
- },
-
- onResize: function()
- {
- WebInspector.SplitView.prototype.onResize.call(this);
- this.dispatchEventToListeners(WebInspector.SidebarView.EventTypes.Resized, this.sidebarWidth());
- },
-
- hideMainElement: function()
- {
- if (this.isSidebarSecond())
- this.showOnlySecond();
- else
- this.showOnlyFirst();
- },
-
- showMainElement: function()
- {
- this.showBoth();
- },
-
- hideSidebarElement: function()
- {
- if (this.isSidebarSecond())
- this.showOnlyFirst();
- else
- this.showOnlySecond();
- },
-
- showSidebarElement: function()
- {
- this.showBoth();
- },
-
- /**
- * @return {!Array.<!Element>}
- */
- elementsToRestoreScrollPositionsFor: function()
- {
- return [ this.mainElement, this.sidebarElement ];
- },
-
- __proto__: WebInspector.SplitView.prototype
-}
diff --git a/Source/devtools/front_end/SimpleHistoryManager.js b/Source/devtools/front_end/SimpleHistoryManager.js
new file mode 100644
index 0000000..5771e7a
--- /dev/null
+++ b/Source/devtools/front_end/SimpleHistoryManager.js
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @interface
+ */
+WebInspector.HistoryEntry = function() { }
+
+WebInspector.HistoryEntry.prototype = {
+ /**
+ * @return {boolean}
+ */
+ valid: function() { },
+
+ reveal: function() { }
+};
+
+/**
+ * @constructor
+ * @param {number} historyDepth
+ */
+WebInspector.SimpleHistoryManager = function(historyDepth)
+{
+ this._entries = [];
+ this._activeEntryIndex = -1;
+ this._coalescingReadonly = 0;
+ this._historyDepth = historyDepth;
+}
+
+WebInspector.SimpleHistoryManager.prototype = {
+ readOnlyLock: function()
+ {
+ ++this._coalescingReadonly;
+ },
+
+ releaseReadOnlyLock: function()
+ {
+ --this._coalescingReadonly;
+ },
+
+ /**
+ * @return {boolean}
+ */
+ readOnly: function()
+ {
+ return !!this._coalescingReadonly;
+ },
+
+ /**
+ * @param {!function(!WebInspector.HistoryEntry):boolean} filterOutCallback
+ */
+ filterOut: function(filterOutCallback)
+ {
+ if (this.readOnly())
+ return;
+ var filteredEntries = [];
+ var removedBeforeActiveEntry = 0;
+ for (var i = 0; i < this._entries.length; ++i) {
+ if (!filterOutCallback(this._entries[i])) {
+ filteredEntries.push(this._entries[i]);
+ } else if (i <= this._activeEntryIndex)
+ ++removedBeforeActiveEntry;
+ }
+ this._entries = filteredEntries;
+ this._activeEntryIndex = Math.max(0, this._activeEntryIndex - removedBeforeActiveEntry);
+ },
+
+ /**
+ * @return {boolean}
+ */
+ empty: function()
+ {
+ return !this._entries.length;
+ },
+
+ /**
+ * @return {?WebInspector.HistoryEntry}
+ */
+ active: function()
+ {
+ return this.empty() ? null : this._entries[this._activeEntryIndex];
+ },
+
+ /**
+ * @param {!WebInspector.HistoryEntry} entry
+ */
+ push: function(entry)
+ {
+ if (this.readOnly())
+ return;
+ if (!this.empty())
+ this._entries.splice(this._activeEntryIndex + 1);
+ this._entries.push(entry);
+ if (this._entries.length > this._historyDepth)
+ this._entries.shift();
+ this._activeEntryIndex = this._entries.length - 1;
+ },
+
+ /**
+ * @return {boolean}
+ */
+ rollback: function()
+ {
+ if (this.empty())
+ return false;
+
+ var revealIndex = this._activeEntryIndex - 1;
+ while (revealIndex >= 0 && !this._entries[revealIndex].valid())
+ --revealIndex;
+ if (revealIndex < 0)
+ return false;
+
+ this.readOnlyLock();
+ this._entries[revealIndex].reveal();
+ this.releaseReadOnlyLock();
+
+ this._activeEntryIndex = revealIndex;
+ return true;
+ },
+
+ /**
+ * @return {boolean}
+ */
+ rollover: function()
+ {
+ var revealIndex = this._activeEntryIndex + 1;
+
+ while (revealIndex < this._entries.length && !this._entries[revealIndex].valid())
+ ++revealIndex;
+ if (revealIndex >= this._entries.length)
+ return false;
+
+ this.readOnlyLock();
+ this._entries[revealIndex].reveal();
+ this.releaseReadOnlyLock();
+
+ this._activeEntryIndex = revealIndex;
+ return true;
+ },
+};
diff --git a/Source/devtools/front_end/SourceFrame.js b/Source/devtools/front_end/SourceFrame.js
index a891398..8e0125a 100644
--- a/Source/devtools/front_end/SourceFrame.js
+++ b/Source/devtools/front_end/SourceFrame.js
@@ -31,20 +31,20 @@
/**
* @extends {WebInspector.View}
* @constructor
+ * @implements {WebInspector.Replaceable}
* @param {!WebInspector.ContentProvider} contentProvider
*/
WebInspector.SourceFrame = function(contentProvider)
{
WebInspector.View.call(this);
this.element.classList.add("script-view");
- this.element.classList.add("fill");
this._url = contentProvider.contentURL();
this._contentProvider = contentProvider;
var textEditorDelegate = new WebInspector.TextEditorDelegateForSourceFrame(this);
- loadScript("CodeMirrorTextEditor.js");
+ WebInspector.moduleManager.loadModule("codemirror");
this._textEditor = new WebInspector.CodeMirrorTextEditor(this._url, textEditorDelegate);
this._currentSearchResultIndex = -1;
@@ -57,7 +57,6 @@
this._textEditor.setReadOnly(!this.canEditSource());
this._shortcuts = {};
- this.addShortcut(WebInspector.KeyboardShortcut.makeKey("s", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta), this._commitEditing.bind(this));
this.element.addEventListener("keydown", this._handleKeyDown.bind(this), false);
this._sourcePosition = new WebInspector.StatusBarText("", "source-frame-cursor-position");
@@ -92,7 +91,8 @@
WebInspector.SourceFrame.Events = {
ScrollChanged: "ScrollChanged",
- SelectionChanged: "SelectionChanged"
+ SelectionChanged: "SelectionChanged",
+ JumpHappened: "JumpHappened"
}
WebInspector.SourceFrame.prototype = {
@@ -145,6 +145,9 @@
return [];
},
+ /**
+ * @return {!Element}
+ */
defaultFocusedElement: function()
{
return this._textEditor.defaultFocusedElement();
@@ -155,6 +158,9 @@
return this._loaded;
},
+ /**
+ * @return {boolean}
+ */
hasContent: function()
{
return true;
@@ -195,6 +201,7 @@
/**
* @override
+ * @return {boolean}
*/
canHighlightPosition: function()
{
@@ -410,6 +417,10 @@
*/
performSearch: function(query, shouldJump, callback, currentMatchChangedCallback, searchResultsChangedCallback)
{
+ /**
+ * @param {string} query
+ * @this {WebInspector.SourceFrame}
+ */
function doFindSearchMatches(query)
{
this._currentSearchResultIndex = -1;
@@ -480,6 +491,9 @@
this._textEditor.setSelection(range);
},
+ /**
+ * @return {boolean}
+ */
hasSearchResults: function()
{
return this._searchResults.length > 0;
@@ -508,11 +522,17 @@
this.jumpToSearchResult(currentIndex - 1);
},
+ /**
+ * @return {boolean}
+ */
showingFirstSearchResult: function()
{
return this._searchResults.length && this._currentSearchResultIndex === 0;
},
+ /**
+ * @return {boolean}
+ */
showingLastSearchResult: function()
{
return this._searchResults.length && this._currentSearchResultIndex === (this._searchResults.length - 1);
@@ -536,7 +556,7 @@
/**
* @param {string} text
*/
- replaceSearchMatchWith: function(text)
+ replaceSelectionWith: function(text)
{
var range = this._searchResults[this._currentSearchResultIndex];
if (!range)
@@ -713,6 +733,18 @@
{
},
+ /**
+ * @param {?WebInspector.TextRange} from
+ * @param {?WebInspector.TextRange} to
+ */
+ onJumpToPosition: function(from, to)
+ {
+ this.dispatchEventToListeners(WebInspector.SourceFrame.Events.JumpHappened, {
+ from: from,
+ to: to
+ });
+ },
+
inheritScrollPositions: function(sourceFrame)
{
this._textEditor.inheritScrollPositions(sourceFrame._textEditor);
@@ -727,13 +759,6 @@
},
/**
- * @param {string} text
- */
- commitEditing: function(text)
- {
- },
-
- /**
* @param {!WebInspector.TextRange} textRange
*/
selectionChanged: function(textRange)
@@ -780,16 +805,6 @@
e.consume(true);
},
- _commitEditing: function()
- {
- if (this._textEditor.readOnly())
- return false;
-
- var content = this._textEditor.text();
- this.commitEditing(content);
- return true;
- },
-
__proto__: WebInspector.View.prototype
}
@@ -851,5 +866,12 @@
return WebInspector.linkifyURLAsNode(targetLocation || hrefValue, hrefValue, undefined, isExternal);
},
- __proto__: WebInspector.TextEditorDelegate.prototype
+ /**
+ * @param {?WebInspector.TextRange} from
+ * @param {?WebInspector.TextRange} to
+ */
+ onJumpToPosition: function(from, to)
+ {
+ this._sourceFrame.onJumpToPosition(from, to);
+ }
}
diff --git a/Source/devtools/front_end/SourceMap.js b/Source/devtools/front_end/SourceMap.js
index f1613a4..64c9b90 100644
--- a/Source/devtools/front_end/SourceMap.js
+++ b/Source/devtools/front_end/SourceMap.js
@@ -29,6 +29,37 @@
*/
/**
+ * @constructor
+ */
+function SourceMapV3()
+{
+ /** @type {number} */ this.version;
+ /** @type {string|undefined} */ this.file;
+ /** @type {!Array.<string>} */ this.sources;
+ /** @type {!Array.<!SourceMapV3.Section>|undefined} */ this.sections;
+ /** @type {string} */ this.mappings;
+ /** @type {string|undefined} */ this.sourceRoot;
+}
+
+/**
+ * @constructor
+ */
+SourceMapV3.Section = function()
+{
+ /** @type {!SourceMapV3} */ this.map;
+ /** @type {!SourceMapV3.Offset} */ this.offset;
+}
+
+/**
+ * @constructor
+ */
+SourceMapV3.Offset = function()
+{
+ /** @type {number} */ this.line;
+ /** @type {number} */ this.column;
+}
+
+/**
* Implements Source Map V3 model. See http://code.google.com/p/closure-compiler/wiki/SourceMaps
* for format description.
* @constructor
@@ -64,6 +95,7 @@
* @param {string} sourceMapURL
* @param {string} compiledURL
* @param {function(?WebInspector.SourceMap)} callback
+ * @this {WebInspector.SourceMap}
*/
WebInspector.SourceMap.load = function(sourceMapURL, compiledURL, callback)
{
@@ -161,7 +193,7 @@
/**
* @param {number} lineNumber in compiled resource
* @param {number} columnNumber in compiled resource
- * @return {?Array.<*>}
+ * @return {?Array.<number|string>}
*/
findEntry: function(lineNumber, columnNumber)
{
diff --git a/Source/devtools/front_end/SourcesPanel.js b/Source/devtools/front_end/SourcesPanel.js
index e6023cc..a0910c5 100644
--- a/Source/devtools/front_end/SourcesPanel.js
+++ b/Source/devtools/front_end/SourcesPanel.js
@@ -26,12 +26,13 @@
importScript("BreakpointsSidebarPane.js");
importScript("CallStackSidebarPane.js");
+importScript("SimpleHistoryManager.js");
+importScript("EditingLocationHistoryManager.js");
importScript("FilePathScoreFunction.js");
importScript("FilteredItemSelectionDialog.js");
importScript("UISourceCodeFrame.js");
importScript("JavaScriptSourceFrame.js");
importScript("CSSSourceFrame.js");
-importScript("NavigatorOverlayController.js");
importScript("NavigatorView.js");
importScript("RevisionHistoryView.js");
importScript("ScopeChainSidebarPane.js");
@@ -41,12 +42,14 @@
importScript("TabbedEditorContainer.js");
importScript("WatchExpressionsSidebarPane.js");
importScript("WorkersSidebarPane.js");
+importScript("ThreadsToolbar.js");
/**
* @constructor
* @implements {WebInspector.TabbedEditorContainerDelegate}
* @implements {WebInspector.ContextMenu.Provider}
* @implements {WebInspector.Searchable}
+ * @implements {WebInspector.Replaceable}
* @extends {WebInspector.Panel}
* @param {!WebInspector.Workspace=} workspaceForTest
*/
@@ -56,47 +59,54 @@
this.registerRequiredCSS("sourcesPanel.css");
this.registerRequiredCSS("textPrompt.css"); // Watch Expressions autocomplete.
- WebInspector.settings.navigatorWasOnceHidden = WebInspector.settings.createSetting("navigatorWasOnceHidden", false);
+ WebInspector.settings.navigatorHidden = WebInspector.settings.createSetting("navigatorHidden", false);
WebInspector.settings.debuggerSidebarHidden = WebInspector.settings.createSetting("debuggerSidebarHidden", false);
WebInspector.settings.showEditorInDrawer = WebInspector.settings.createSetting("showEditorInDrawer", true);
this._workspace = workspaceForTest || WebInspector.workspace;
+ /**
+ * @return {!WebInspector.View}
+ * @this {WebInspector.SourcesPanel}
+ */
function viewGetter()
{
- return this.visibleView;
+ return this;
}
WebInspector.GoToLineDialog.install(this, viewGetter.bind(this));
var helpSection = WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel"));
this.debugToolbar = this._createDebugToolbar();
+ this._debugToolbarDrawer = this._createDebugToolbarDrawer();
+ this.threadsToolbar = new WebInspector.ThreadsToolbar();
const initialDebugSidebarWidth = 225;
- const minimumDebugSidebarWidthPercent = 0.5;
- this.createSidebarView(this.element, WebInspector.SidebarView.SidebarPosition.End, initialDebugSidebarWidth);
- this.splitView.element.id = "scripts-split-view";
- this.splitView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);
- this.splitView.setMainElementConstraints(minimumDebugSidebarWidthPercent);
+ this._splitView = new WebInspector.SplitView(true, true, "sourcesSidebarWidth", initialDebugSidebarWidth);
+ this._splitView.setMainElementConstraints(200, 25);
+ this._splitView.setSidebarElementConstraints(200, 25);
+
+ this._splitView.show(this.element);
+ if (WebInspector.settings.debuggerSidebarHidden.get())
+ this._splitView.hideSidebar();
// Create scripts navigator
const initialNavigatorWidth = 225;
const minimumViewsContainerWidthPercent = 0.5;
- this.editorView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);
+ this.editorView = new WebInspector.SplitView(true, false, "scriptsPanelNavigatorSidebarWidth", initialNavigatorWidth);
+ if (WebInspector.settings.navigatorHidden.get())
+ this.editorView.hideSidebar();
this.editorView.element.id = "scripts-editor-split-view";
this.editorView.element.tabIndex = 0;
- this.editorView.setSidebarElementConstraints(Preferences.minScriptsSidebarWidth);
+ this.editorView.setSidebarElementConstraints(Preferences.minSidebarWidth);
this.editorView.setMainElementConstraints(minimumViewsContainerWidthPercent);
- this.editorView.show(this.splitView.mainElement);
+ this.editorView.show(this._splitView.mainElement());
this._navigator = new WebInspector.SourcesNavigator();
- this._navigator.view.show(this.editorView.sidebarElement);
+ this._navigator.view.show(this.editorView.sidebarElement());
var tabbedEditorPlaceholderText = WebInspector.isMac() ? WebInspector.UIString("Hit Cmd+O to open a file") : WebInspector.UIString("Hit Ctrl+O to open a file");
- this.editorView.mainElement.classList.add("vbox");
- this.editorView.sidebarElement.classList.add("vbox");
-
this.sourcesView = new WebInspector.SourcesView();
this._searchableView = new WebInspector.SearchableView(this);
@@ -106,8 +116,6 @@
this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previouslyViewedFiles", tabbedEditorPlaceholderText);
this._editorContainer.show(this._searchableView.element);
- this._navigatorController = new WebInspector.NavigatorOverlayController(this.editorView, this._navigator.view, this._editorContainer.view);
-
this._navigator.addEventListener(WebInspector.SourcesNavigator.Events.SourceSelected, this._sourceSelected, this);
this._navigator.addEventListener(WebInspector.SourcesNavigator.Events.ItemSearchStarted, this._itemSearchStarted, this);
this._navigator.addEventListener(WebInspector.SourcesNavigator.Events.ItemCreationRequested, this._itemCreationRequested, this);
@@ -118,7 +126,7 @@
this._debugSidebarResizeWidgetElement = document.createElementWithClass("div", "resizer-widget");
this._debugSidebarResizeWidgetElement.id = "scripts-debug-sidebar-resizer-widget";
- this.splitView.installResizer(this._debugSidebarResizeWidgetElement);
+ this._splitView.installResizer(this._debugSidebarResizeWidgetElement);
this.sidebarPanes = {};
this.sidebarPanes.watchExpressions = new WebInspector.WatchExpressionsSidebarPane();
@@ -127,19 +135,33 @@
this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameRestarted, this._callFrameRestartedInSidebar.bind(this));
this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane();
- this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(/** @type {!WebInspector.BreakpointManager} */ (WebInspector.breakpointManager), this._showSourceLocation.bind(this));
+ this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.debuggerModel, WebInspector.breakpointManager, this._showSourceLocation.bind(this));
this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.createProxy(this);
this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane();
this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
- if (Capabilities.canInspectWorkers && !WebInspector.WorkerManager.isWorkerFrontend()) {
- WorkerAgent.enable();
- this.sidebarPanes.workerList = new WebInspector.WorkersSidebarPane(WebInspector.workerManager);
+ if (Capabilities.canInspectWorkers && !WebInspector.isWorkerFrontend())
+ this.sidebarPanes.workerList = new WebInspector.WorkersSidebarPane();
+
+ /**
+ * @this {WebInspector.SourcesPanel}
+ */
+ function currentSourceFrame()
+ {
+ var uiSourceCode = this.currentUISourceCode();
+ if (!uiSourceCode)
+ return null;
+ return this._sourceFramesByUISourceCode.get(uiSourceCode);
}
+ this._historyManager = new WebInspector.EditingLocationHistoryManager(this, currentSourceFrame.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToPreviousLocation, this._onJumpToPreviousLocation.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToNextLocation, this._onJumpToNextLocation.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.CloseEditorTab, this._onCloseEditorTab.bind(this));
+
this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));
- this.registerShortcuts(WebInspector.SourcesPanelDescriptor.ShortcutKeys.GoToMember, this._showOutlineDialog.bind(this));
- this.registerShortcuts(WebInspector.SourcesPanelDescriptor.ShortcutKeys.ToggleBreakpoint, this._toggleBreakpoint.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.GoToMember, this._showOutlineDialog.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.ToggleBreakpoint, this._toggleBreakpoint.bind(this));
this._extensionSidebarPanes = [];
@@ -151,7 +173,7 @@
this._scriptViewStatusBarItemsContainer.className = "inline-block";
this._scriptViewStatusBarTextContainer = document.createElement("div");
- this._scriptViewStatusBarTextContainer.className = "inline-block";
+ this._scriptViewStatusBarTextContainer.className = "hbox";
this._statusBarContainerElement = this.sourcesView.element.createChild("div", "sources-status-bar");
this._statusBarContainerElement.appendChild(this._toggleFormatSourceButton.element);
@@ -167,11 +189,11 @@
/** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.SourceFrame>} */
this._sourceFramesByUISourceCode = new Map();
this._updateDebuggerButtons();
- this._pauseOnExceptionStateChanged();
+ this._pauseOnExceptionEnabledChanged();
if (WebInspector.debuggerModel.isPaused())
this._showDebuggerPausedDetails();
- WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged, this);
+ WebInspector.settings.pauseOnExceptionEnabled.addChangeListener(this._pauseOnExceptionEnabledChanged, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasDisabled, this._debuggerWasDisabled, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
@@ -189,8 +211,6 @@
this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset, this._projectWillReset.bind(this), this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
- WebInspector.advancedSearchController.registerSearchScope(new WebInspector.SourcesSearchScope(this._workspace));
-
this._boundOnKeyUp = this._onKeyUp.bind(this);
this._boundOnKeyDown = this._onKeyDown.bind(this);
@@ -211,6 +231,39 @@
}
WebInspector.SourcesPanel.prototype = {
+ /**
+ * @param {?Event=} event
+ */
+ _onCloseEditorTab: function(event)
+ {
+ var uiSourceCode = this.currentUISourceCode();
+ if (!uiSourceCode)
+ return false;
+ this._editorContainer.closeFile(uiSourceCode);
+ return true;
+ },
+
+ /**
+ * @param {?Event=} event
+ */
+ _onJumpToPreviousLocation: function(event)
+ {
+ this._historyManager.rollback();
+ return true;
+ },
+
+ /**
+ * @param {?Event=} event
+ */
+ _onJumpToNextLocation: function(event)
+ {
+ this._historyManager.rollover();
+ return true;
+ },
+
+ /**
+ * @return {!Element}
+ */
defaultFocusedElement: function()
{
return this._editorContainer.view.defaultFocusedElement() || this._navigator.view.defaultFocusedElement();
@@ -224,9 +277,8 @@
wasShown: function()
{
WebInspector.inspectorView.closeViewInDrawer("editor");
- this.sourcesView.show(this.editorView.mainElement);
+ this.sourcesView.show(this.editorView.mainElement());
WebInspector.Panel.prototype.wasShown.call(this);
- this._navigatorController.wasShown();
this.element.addEventListener("keydown", this._boundOnKeyDown, false);
this.element.addEventListener("keyup", this._boundOnKeyUp, false);
@@ -290,6 +342,7 @@
for (var i = 0; i < uiSourceCodes.length; ++i) {
this._navigator.removeUISourceCode(uiSourceCodes[i]);
this._removeSourceFrame(uiSourceCodes[i]);
+ this._historyManager.removeHistoryForSourceCode(uiSourceCodes[i]);
}
this._editorContainer.removeUISourceCodes(uiSourceCodes);
},
@@ -311,20 +364,27 @@
this._paused = true;
this._waitingToPause = false;
- this._stepping = false;
this._updateDebuggerButtons();
this.sidebarPanes.callstack.update(details.callFrames, details.asyncStackTrace);
+ /**
+ * @param {!Element} element
+ * @this {WebInspector.SourcesPanel}
+ */
function didCreateBreakpointHitStatusMessage(element)
{
this.sidebarPanes.callstack.setStatus(element);
}
+ /**
+ * @param {!WebInspector.UILocation} uiLocation
+ * @this {WebInspector.SourcesPanel}
+ */
function didGetUILocation(uiLocation)
{
- var breakpoint = WebInspector.breakpointManager.findBreakpoint(uiLocation.uiSourceCode, uiLocation.lineNumber);
+ var breakpoint = WebInspector.breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber);
if (!breakpoint)
return;
this.sidebarPanes.jsBreakpoints.highlightBreakpoint(breakpoint);
@@ -367,7 +427,6 @@
{
this._paused = false;
this._waitingToPause = false;
- this._stepping = false;
this._clearInterface();
this._toggleDebuggerSidebarButton.setEnabled(true);
@@ -421,24 +480,6 @@
},
/**
- * @param {!Element} anchor
- * @return {boolean}
- */
- showAnchorLocation: function(anchor)
- {
- if (!anchor.uiSourceCode) {
- var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(anchor.href);
- if (uiSourceCode)
- anchor.uiSourceCode = uiSourceCode;
- }
- if (!anchor.uiSourceCode)
- return false;
-
- this._showSourceLocation(anchor.uiSourceCode, anchor.lineNumber, anchor.columnNumber);
- return true;
- },
-
- /**
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {number=} lineNumber
* @param {number=} columnNumber
@@ -499,11 +540,12 @@
_showSourceLocation: function(uiSourceCode, lineNumber, columnNumber, forceShowInPanel)
{
this._showEditor(forceShowInPanel);
+ this._historyManager.updateCurrentState();
var sourceFrame = this._showFile(uiSourceCode);
if (typeof lineNumber === "number")
sourceFrame.highlightPosition(lineNumber, columnNumber);
+ this._historyManager.pushNewState();
sourceFrame.focus();
-
WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
action: WebInspector.UserMetrics.UserActionNames.OpenSourceLink,
url: uiSourceCode.originURL(),
@@ -520,9 +562,11 @@
var sourceFrame = this._getOrCreateSourceFrame(uiSourceCode);
if (this._currentUISourceCode === uiSourceCode)
return sourceFrame;
+
this._currentUISourceCode = uiSourceCode;
if (!uiSourceCode.project().isServiceProject())
this._navigator.revealUISourceCode(uiSourceCode, true);
+
this._editorContainer.showFile(uiSourceCode);
this._updateScriptViewStatusBarItems();
@@ -557,6 +601,7 @@
}
sourceFrame.setHighlighterType(uiSourceCode.highlighterType());
this._sourceFramesByUISourceCode.put(uiSourceCode, sourceFrame);
+ this._historyManager.trackSourceFrameCursorJumps(sourceFrame);
return sourceFrame;
},
@@ -641,6 +686,7 @@
_executionLineChanged: function(uiLocation)
{
+ this._historyManager.updateCurrentState();
this._clearCurrentExecutionLine();
this._setExecutionLine(uiLocation);
@@ -649,8 +695,11 @@
if (this._skipExecutionLineRevealing)
return;
this._skipExecutionLineRevealing = true;
+
var sourceFrame = this._showFile(uiSourceCode);
sourceFrame.revealLine(uiLocation.lineNumber);
+ this._historyManager.pushNewState();
+
if (sourceFrame.canEditSource())
sourceFrame.setSelection(WebInspector.TextRange.createFromLocation(uiLocation.lineNumber, 0));
sourceFrame.focus();
@@ -671,8 +720,8 @@
_editorClosed: function(event)
{
- this._navigatorController.hideNavigatorOverlay();
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
+ this._historyManager.removeHistoryForSourceCode(uiSourceCode);
if (this._currentUISourceCode === uiSourceCode)
delete this._currentUISourceCode;
@@ -684,45 +733,46 @@
_editorSelected: function(event)
{
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
+ var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.currentFile);
+ var shouldUseHistoryManager = uiSourceCode !== this._currentUISourceCode && event.data.userGesture;
+ if (shouldUseHistoryManager)
+ this._historyManager.updateCurrentState();
var sourceFrame = this._showFile(uiSourceCode);
- this._navigatorController.hideNavigatorOverlay();
- if (!this._navigatorController.isNavigatorPinned())
- sourceFrame.focus();
- this._searchableView.setCanReplace(!!sourceFrame && sourceFrame.canEditSource());
+ if (shouldUseHistoryManager)
+ this._historyManager.pushNewState();
+
+ this._searchableView.setReplaceable(!!sourceFrame && sourceFrame.canEditSource());
this._searchableView.resetSearch();
},
_sourceSelected: function(event)
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.uiSourceCode);
+
+ var shouldUseHistoryManager = uiSourceCode !== this._currentUISourceCode;
+
+ if (shouldUseHistoryManager)
+ this._historyManager.updateCurrentState();
var sourceFrame = this._showFile(uiSourceCode);
- this._navigatorController.hideNavigatorOverlay();
- if (sourceFrame && (!this._navigatorController.isNavigatorPinned() || event.data.focusSource))
+ if (shouldUseHistoryManager)
+ this._historyManager.pushNewState();
+
+ if (sourceFrame && event.data.focusSource)
sourceFrame.focus();
},
_itemSearchStarted: function(event)
{
var searchText = /** @type {string} */ (event.data);
- WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement, searchText);
+ WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement(), searchText);
},
- _pauseOnExceptionStateChanged: function()
+ _pauseOnExceptionEnabledChanged: function()
{
- var pauseOnExceptionsState = WebInspector.settings.pauseOnExceptionStateString.get();
- switch (pauseOnExceptionsState) {
- case WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions:
- this._pauseOnExceptionButton.title = WebInspector.UIString("Don't pause on exceptions.\nClick to Pause on all exceptions.");
- break;
- case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions:
- this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on all exceptions.\nClick to Pause on uncaught exceptions.");
- break;
- case WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions:
- this._pauseOnExceptionButton.title = WebInspector.UIString("Pause on uncaught exceptions.\nClick to Not pause on exceptions.");
- break;
- }
- this._pauseOnExceptionButton.state = pauseOnExceptionsState;
+ var enabled = WebInspector.settings.pauseOnExceptionEnabled.get();
+ this._pauseOnExceptionButton.toggled = enabled;
+ this._pauseOnExceptionButton.title = WebInspector.UIString(enabled ? "Don't pause on exceptions." : "Pause on exceptions.");
+ this._debugToolbarDrawer.enableStyleClass("expanded", enabled);
},
_updateDebuggerButtons: function()
@@ -763,12 +813,7 @@
_togglePauseOnExceptions: function()
{
- var nextStateMap = {};
- var stateEnum = WebInspector.DebuggerModel.PauseOnExceptionsState;
- nextStateMap[stateEnum.DontPauseOnExceptions] = stateEnum.PauseOnAllExceptions;
- nextStateMap[stateEnum.PauseOnAllExceptions] = stateEnum.PauseOnUncaughtExceptions;
- nextStateMap[stateEnum.PauseOnUncaughtExceptions] = stateEnum.DontPauseOnExceptions;
- WebInspector.settings.pauseOnExceptionStateString.set(nextStateMap[this._pauseOnExceptionButton.state]);
+ WebInspector.settings.pauseOnExceptionEnabled.set(!this._pauseOnExceptionButton.toggled);
},
/**
@@ -793,7 +838,6 @@
this._waitingToPause = false;
WebInspector.debuggerModel.resume();
} else {
- this._stepping = false;
this._waitingToPause = true;
// Make sure pauses didn't stick skipped.
WebInspector.debuggerModel.skipAllPauses(false);
@@ -831,7 +875,6 @@
delete this._skipExecutionLineRevealing;
this._paused = false;
- this._stepping = true;
this._clearInterface();
@@ -849,7 +892,6 @@
delete this._skipExecutionLineRevealing;
this._paused = false;
- this._stepping = true;
this._clearInterface();
@@ -881,7 +923,6 @@
delete this._skipExecutionLineRevealing;
this._paused = false;
- this._stepping = true;
this._clearInterface();
WebInspector.debuggerModel.stepIntoSelection(rawLocation);
},
@@ -896,7 +937,6 @@
delete this._skipExecutionLineRevealing;
this._paused = false;
- this._stepping = true;
this._clearInterface();
@@ -926,7 +966,6 @@
delete this._skipExecutionLineRevealing;
this._paused = false;
- this._stepping = true;
this._clearInterface();
WebInspector.debuggerModel.continueToLocation(rawLocation);
},
@@ -942,11 +981,11 @@
this._toggleBreakpointsButton.toggled = !active;
if (active) {
this._toggleBreakpointsButton.title = WebInspector.UIString("Deactivate breakpoints.");
- WebInspector.inspectorView.element.classList.remove("breakpoints-deactivated");
+ this._editorContainer.view.element.classList.remove("breakpoints-deactivated");
this.sidebarPanes.jsBreakpoints.listElement.classList.remove("breakpoints-list-deactivated");
} else {
this._toggleBreakpointsButton.title = WebInspector.UIString("Activate breakpoints.");
- WebInspector.inspectorView.element.classList.add("breakpoints-deactivated");
+ this._editorContainer.view.element.classList.add("breakpoints-deactivated");
this.sidebarPanes.jsBreakpoints.listElement.classList.add("breakpoints-list-deactivated");
}
},
@@ -954,8 +993,7 @@
_createDebugToolbar: function()
{
var debugToolbar = document.createElement("div");
- debugToolbar.className = "status-bar";
- debugToolbar.id = "scripts-debug-toolbar";
+ debugToolbar.className = "scripts-debug-toolbar";
var title, handler;
var platformSpecificModifier = WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta;
@@ -963,13 +1001,13 @@
// Run snippet.
title = WebInspector.UIString("Run snippet (%s).");
handler = this._runSnippet.bind(this);
- this._runSnippetButton = this._createButtonAndRegisterShortcuts("scripts-run-snippet", title, handler, WebInspector.SourcesPanelDescriptor.ShortcutKeys.RunSnippet);
+ this._runSnippetButton = this._createButtonAndRegisterShortcuts("scripts-run-snippet", title, handler, WebInspector.ShortcutsScreen.SourcesPanelShortcuts.RunSnippet);
debugToolbar.appendChild(this._runSnippetButton.element);
this._runSnippetButton.element.classList.add("hidden");
// Continue.
handler = this._togglePause.bind(this);
- this._pauseButton = this._createButtonAndRegisterShortcuts("scripts-pause", "", handler, WebInspector.SourcesPanelDescriptor.ShortcutKeys.PauseContinue);
+ this._pauseButton = this._createButtonAndRegisterShortcuts("scripts-pause", "", handler, WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PauseContinue);
debugToolbar.appendChild(this._pauseButton.element);
// Long resume.
@@ -980,22 +1018,22 @@
// Step over.
title = WebInspector.UIString("Step over next function call (%s).");
handler = this._stepOverClicked.bind(this);
- this._stepOverButton = this._createButtonAndRegisterShortcuts("scripts-step-over", title, handler, WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepOver);
+ this._stepOverButton = this._createButtonAndRegisterShortcuts("scripts-step-over", title, handler, WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepOver);
debugToolbar.appendChild(this._stepOverButton.element);
// Step into.
title = WebInspector.UIString("Step into next function call (%s).");
handler = this._stepIntoClicked.bind(this);
- this._stepIntoButton = this._createButtonAndRegisterShortcuts("scripts-step-into", title, handler, WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepInto);
+ this._stepIntoButton = this._createButtonAndRegisterShortcuts("scripts-step-into", title, handler, WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepInto);
debugToolbar.appendChild(this._stepIntoButton.element);
// Step into selection (keyboard shortcut only).
- this.registerShortcuts(WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepIntoSelection, this._stepIntoSelectionClicked.bind(this))
+ this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepIntoSelection, this._stepIntoSelectionClicked.bind(this))
// Step out.
title = WebInspector.UIString("Step out of current function (%s).");
handler = this._stepOutClicked.bind(this);
- this._stepOutButton = this._createButtonAndRegisterShortcuts("scripts-step-out", title, handler, WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepOut);
+ this._stepOutButton = this._createButtonAndRegisterShortcuts("scripts-step-out", title, handler, WebInspector.ShortcutsScreen.SourcesPanelShortcuts.StepOut);
debugToolbar.appendChild(this._stepOutButton.element);
// Toggle Breakpoints
@@ -1005,13 +1043,25 @@
debugToolbar.appendChild(this._toggleBreakpointsButton.element);
// Pause on Exception
- this._pauseOnExceptionButton = new WebInspector.StatusBarButton("", "scripts-pause-on-exceptions-status-bar-item", 3);
+ this._pauseOnExceptionButton = new WebInspector.StatusBarButton("", "scripts-pause-on-exceptions-status-bar-item");
this._pauseOnExceptionButton.addEventListener("click", this._togglePauseOnExceptions, this);
debugToolbar.appendChild(this._pauseOnExceptionButton.element);
return debugToolbar;
},
+ _createDebugToolbarDrawer: function()
+ {
+ var debugToolbarDrawer = document.createElement("div");
+ debugToolbarDrawer.className = "scripts-debug-toolbar-drawer";
+
+ var label = WebInspector.UIString("Pause On Caught Exceptions");
+ var setting = WebInspector.settings.pauseOnCaughtException;
+ debugToolbarDrawer.appendChild(WebInspector.SettingsUI.createSettingCheckbox(label, setting, true));
+
+ return debugToolbarDrawer;
+ },
+
/**
* @param {!WebInspector.StatusBarButton} button
* @param {string} buttonTitle
@@ -1065,6 +1115,11 @@
this._searchView = this.visibleView;
this._searchQuery = query;
+ /**
+ * @param {!WebInspector.View} view
+ * @param {number} searchMatches
+ * @this {WebInspector.SourcesPanel}
+ */
function finishedCallback(view, searchMatches)
{
if (!searchMatches)
@@ -1073,11 +1128,18 @@
this._searchableView.updateSearchMatchesCount(searchMatches);
}
+ /**
+ * @param {number} currentMatchIndex
+ * @this {WebInspector.SourcesPanel}
+ */
function currentMatchChanged(currentMatchIndex)
{
this._searchableView.updateCurrentMatchIndex(currentMatchIndex);
}
+ /**
+ * @this {WebInspector.SourcesPanel}
+ */
function searchResultsChanged()
{
this._searchableView.cancelSearch();
@@ -1097,7 +1159,6 @@
}
this._searchView.jumpToNextSearchResult();
- return true;
},
jumpToPreviousSearchResult: function()
@@ -1120,8 +1181,8 @@
*/
replaceSelectionWith: function(text)
{
- var view = /** @type {!WebInspector.SourceFrame} */ (this.visibleView);
- view.replaceSearchMatchWith(text);
+ var view = /** @type {!WebInspector.Replaceable} */ (this.visibleView);
+ view.replaceSelectionWith(text);
},
/**
@@ -1130,7 +1191,7 @@
*/
replaceAllWith: function(query, text)
{
- var view = /** @type {!WebInspector.SourceFrame} */ (this.visibleView);
+ var view = /** @type {!WebInspector.Replaceable} */ (this.visibleView);
view.replaceAllWith(query, text);
},
@@ -1226,12 +1287,17 @@
_installDebuggerSidebarController: function()
{
- this._toggleDebuggerSidebarButton = new WebInspector.StatusBarButton("", "right-sidebar-show-hide-button scripts-debugger-show-hide-button", 3);
- this._toggleDebuggerSidebarButton.addEventListener("click", clickHandler, this);
+ this._toggleNavigatorSidebarButton = new WebInspector.StatusBarButton("", "left-sidebar-show-hide-button", 3);
+ this._toggleNavigatorSidebarButton.addEventListener("click", navigatorHandler, this);
+ this.sourcesView.element.appendChild(this._toggleNavigatorSidebarButton.element);
+ this._enableNavigatorSidebar(!WebInspector.settings.navigatorHidden.get());
- if (this.splitView.isVertical()) {
+ this._toggleDebuggerSidebarButton = new WebInspector.StatusBarButton("", "right-sidebar-show-hide-button scripts-debugger-show-hide-button", 3);
+ this._toggleDebuggerSidebarButton.addEventListener("click", debuggerHandler, this);
+
+ if (this._splitView.isVertical()) {
this.editorView.element.appendChild(this._toggleDebuggerSidebarButton.element);
- this.splitView.mainElement.appendChild(this._debugSidebarResizeWidgetElement);
+ this._splitView.mainElement().appendChild(this._debugSidebarResizeWidgetElement);
} else {
this._statusBarContainerElement.appendChild(this._debugSidebarResizeWidgetElement);
this._statusBarContainerElement.appendChild(this._toggleDebuggerSidebarButton.element);
@@ -1239,7 +1305,18 @@
this._enableDebuggerSidebar(!WebInspector.settings.debuggerSidebarHidden.get());
- function clickHandler()
+ /**
+ * @this {WebInspector.SourcesPanel}
+ */
+ function navigatorHandler()
+ {
+ this._enableNavigatorSidebar(this._toggleNavigatorSidebarButton.state === "right");
+ }
+
+ /**
+ * @this {WebInspector.SourcesPanel}
+ */
+ function debuggerHandler()
{
this._enableDebuggerSidebar(this._toggleDebuggerSidebarButton.state === "left");
}
@@ -1248,14 +1325,28 @@
/**
* @param {boolean} show
*/
+ _enableNavigatorSidebar: function(show)
+ {
+ this._toggleNavigatorSidebarButton.state = show ? "left" : "right";
+ this._toggleNavigatorSidebarButton.title = show ? WebInspector.UIString("Hide navigator") : WebInspector.UIString("Show navigator");
+ if (show)
+ this.editorView.showBoth(true);
+ else
+ this.editorView.hideSidebar(true);
+ WebInspector.settings.navigatorHidden.set(!show);
+ },
+
+ /**
+ * @param {boolean} show
+ */
_enableDebuggerSidebar: function(show)
{
this._toggleDebuggerSidebarButton.state = show ? "right" : "left";
this._toggleDebuggerSidebarButton.title = show ? WebInspector.UIString("Hide debugger") : WebInspector.UIString("Show debugger");
if (show)
- this.splitView.showSidebarElement();
+ this._splitView.showBoth(true);
else
- this.splitView.hideSidebarElement();
+ this._splitView.hideSidebar(true);
this._debugSidebarResizeWidgetElement.enableStyleClass("hidden", !show);
WebInspector.settings.debuggerSidebarHidden.set(!show);
},
@@ -1269,11 +1360,11 @@
var path = event.data.path;
var uiSourceCodeToCopy = event.data.uiSourceCode;
var filePath;
- var shouldHideNavigator;
var uiSourceCode;
/**
* @param {?string} content
+ * @this {WebInspector.SourcesPanel}
*/
function contentLoaded(content)
{
@@ -1287,6 +1378,7 @@
/**
* @param {string=} content
+ * @this {WebInspector.SourcesPanel}
*/
function createFile(content)
{
@@ -1295,6 +1387,7 @@
/**
* @param {?string} path
+ * @this {WebInspector.SourcesPanel}
*/
function fileCreated(path)
{
@@ -1303,21 +1396,15 @@
filePath = path;
uiSourceCode = project.uiSourceCode(filePath);
this._showSourceLocation(uiSourceCode);
-
- shouldHideNavigator = !this._navigatorController.isNavigatorPinned();
- if (this._navigatorController.isNavigatorHidden())
- this._navigatorController.showNavigatorOverlay();
this._navigator.rename(uiSourceCode, callback.bind(this));
}
/**
* @param {boolean} committed
+ * @this {WebInspector.SourcesPanel}
*/
function callback(committed)
{
- if (shouldHideNavigator)
- this._navigatorController.hideNavigatorOverlay();
-
if (!committed) {
project.deleteFile(uiSourceCode);
return;
@@ -1335,19 +1422,14 @@
_itemRenamingRequested: function(event)
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
-
- var shouldHideNavigator = !this._navigatorController.isNavigatorPinned();
- if (this._navigatorController.isNavigatorHidden())
- this._navigatorController.showNavigatorOverlay();
this._navigator.rename(uiSourceCode, callback.bind(this));
/**
* @param {boolean} committed
+ * @this {WebInspector.SourcesPanel}
*/
function callback(committed)
{
- if (shouldHideNavigator && committed)
- this._navigatorController.hideNavigatorOverlay();
this._recreateSourceFrameIfNeeded(uiSourceCode);
this._navigator.updateIcon(uiSourceCode);
this._showSourceLocation(uiSourceCode);
@@ -1377,10 +1459,11 @@
*/
_mapFileSystemToNetwork: function(uiSourceCode)
{
- WebInspector.SelectUISourceCodeForProjectTypeDialog.show(uiSourceCode.name(), WebInspector.projectTypes.Network, mapFileSystemToNetwork.bind(this), this.editorView.mainElement)
+ WebInspector.SelectUISourceCodeForProjectTypeDialog.show(uiSourceCode.name(), WebInspector.projectTypes.Network, mapFileSystemToNetwork.bind(this), this.editorView.mainElement())
/**
* @param {!WebInspector.UISourceCode} networkUISourceCode
+ * @this {WebInspector.SourcesPanel}
*/
function mapFileSystemToNetwork(networkUISourceCode)
{
@@ -1402,10 +1485,11 @@
*/
_mapNetworkToFileSystem: function(networkUISourceCode)
{
- WebInspector.SelectUISourceCodeForProjectTypeDialog.show(networkUISourceCode.name(), WebInspector.projectTypes.FileSystem, mapNetworkToFileSystem.bind(this), this.editorView.mainElement)
+ WebInspector.SelectUISourceCodeForProjectTypeDialog.show(networkUISourceCode.name(), WebInspector.projectTypes.FileSystem, mapNetworkToFileSystem.bind(this), this.editorView.mainElement())
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
+ * @this {WebInspector.SourcesPanel}
*/
function mapNetworkToFileSystem(uiSourceCode)
{
@@ -1454,9 +1538,7 @@
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (target);
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Local modifications\u2026" : "Local Modifications\u2026"), this._showLocalHistory.bind(this, uiSourceCode));
-
- if (WebInspector.isolatedFileSystemManager.supportsFileSystems())
- this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode);
+ this._appendUISourceCodeMappingItems(contextMenu, uiSourceCode);
},
/**
@@ -1474,6 +1556,7 @@
/**
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.FunctionDetails} response
+ * @this {WebInspector.SourcesPanel}
*/
function didGetDetails(error, response)
{
@@ -1489,6 +1572,9 @@
this.showUILocation(uiLocation, true);
}
+ /**
+ * @this {WebInspector.SourcesPanel}
+ */
function revealFunction()
{
DebuggerAgent.getFunctionDetails(remoteObject.objectId, didGetDetails.bind(this));
@@ -1504,13 +1590,12 @@
var defaultScores = new Map();
for (var i = 1; i < uiSourceCodes.length; ++i) // Skip current element
defaultScores.put(uiSourceCodes[i], uiSourceCodes.length - i);
- WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement, undefined, defaultScores);
+ WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement(), undefined, defaultScores);
},
_dockSideChanged: function()
{
- var dockSide = WebInspector.dockController.dockSide();
- var vertically = dockSide === WebInspector.DockController.State.DockedToRight && WebInspector.settings.splitVerticallyWhenDockedToRight.get();
+ var vertically = WebInspector.dockController.isVertical() && WebInspector.settings.splitVerticallyWhenDockedToRight.get();
this._splitVertically(vertically);
},
@@ -1519,52 +1604,66 @@
*/
_splitVertically: function(vertically)
{
- if (this.sidebarPaneView && vertically === !this.splitView.isVertical())
+ if (this.sidebarPaneView && vertically === !this._splitView.isVertical())
return;
if (this.sidebarPaneView)
this.sidebarPaneView.detach();
- this.splitView.setVertical(!vertically);
+ this._splitView.setVertical(!vertically);
+ // Update resizer widgets.
if (!vertically) {
- this.splitView.uninstallResizer(this._statusBarContainerElement);
- this.sidebarPaneView = new WebInspector.SidebarPaneStack();
- for (var pane in this.sidebarPanes)
- this.sidebarPaneView.addPane(this.sidebarPanes[pane]);
- this._extensionSidebarPanesContainer = this.sidebarPaneView;
- this.sidebarElement.appendChild(this.debugToolbar);
+ this._splitView.uninstallResizer(this._statusBarContainerElement);
this.editorView.element.appendChild(this._toggleDebuggerSidebarButton.element);
- this.splitView.mainElement.appendChild(this._debugSidebarResizeWidgetElement);
+ this._splitView.mainElement().appendChild(this._debugSidebarResizeWidgetElement);
} else {
- this.splitView.installResizer(this._statusBarContainerElement);
- this.sidebarPaneView = new WebInspector.SplitView(true, this.name + "PanelSplitSidebarRatio", 0.5);
-
- var group1 = new WebInspector.SidebarPaneStack();
- group1.show(this.sidebarPaneView.firstElement());
- group1.element.id = "scripts-sidebar-stack-pane";
- group1.addPane(this.sidebarPanes.callstack);
- group1.addPane(this.sidebarPanes.jsBreakpoints);
- group1.addPane(this.sidebarPanes.domBreakpoints);
- group1.addPane(this.sidebarPanes.xhrBreakpoints);
- group1.addPane(this.sidebarPanes.eventListenerBreakpoints);
- if (this.sidebarPanes.workerList)
- group1.addPane(this.sidebarPanes.workerList);
-
- var group2 = new WebInspector.SidebarTabbedPane();
- group2.show(this.sidebarPaneView.secondElement());
- group2.addPane(this.sidebarPanes.scopechain);
- group2.addPane(this.sidebarPanes.watchExpressions);
- this._extensionSidebarPanesContainer = group2;
- this.sidebarPaneView.firstElement().appendChild(this.debugToolbar);
+ this._splitView.installResizer(this._statusBarContainerElement);
this._statusBarContainerElement.appendChild(this._debugSidebarResizeWidgetElement);
this._statusBarContainerElement.appendChild(this._toggleDebuggerSidebarButton.element)
}
+
+ // Create vertical box with stack.
+ var vbox = new WebInspector.View();
+ vbox.element.appendChild(this._debugToolbarDrawer);
+ vbox.element.appendChild(this.debugToolbar);
+ vbox.element.appendChild(this.threadsToolbar.element);
+ var sidebarPaneStack = new WebInspector.SidebarPaneStack();
+ sidebarPaneStack.element.classList.add("flex-auto");
+ sidebarPaneStack.show(vbox.element);
+
+ if (!vertically) {
+ // Populate the only stack.
+ for (var pane in this.sidebarPanes)
+ sidebarPaneStack.addPane(this.sidebarPanes[pane]);
+ this._extensionSidebarPanesContainer = sidebarPaneStack;
+
+ this.sidebarPaneView = vbox;
+ } else {
+ var splitView = new WebInspector.SplitView(true, true, this.name + "PanelSplitSidebarRatio", 0.5);
+ vbox.show(splitView.mainElement());
+
+ // Populate the left stack.
+ sidebarPaneStack.addPane(this.sidebarPanes.callstack);
+ sidebarPaneStack.addPane(this.sidebarPanes.jsBreakpoints);
+ sidebarPaneStack.addPane(this.sidebarPanes.domBreakpoints);
+ sidebarPaneStack.addPane(this.sidebarPanes.xhrBreakpoints);
+ sidebarPaneStack.addPane(this.sidebarPanes.eventListenerBreakpoints);
+ if (this.sidebarPanes.workerList)
+ sidebarPaneStack.addPane(this.sidebarPanes.workerList);
+
+ var tabbedPane = new WebInspector.SidebarTabbedPane();
+ tabbedPane.show(splitView.sidebarElement());
+ tabbedPane.addPane(this.sidebarPanes.scopechain);
+ tabbedPane.addPane(this.sidebarPanes.watchExpressions);
+ this._extensionSidebarPanesContainer = tabbedPane;
+
+ this.sidebarPaneView = splitView;
+ }
for (var i = 0; i < this._extensionSidebarPanes.length; ++i)
this._extensionSidebarPanesContainer.addPane(this._extensionSidebarPanes[i]);
- this.sidebarPaneView.element.id = "scripts-debug-sidebar-contents";
- this.sidebarPaneView.show(this.splitView.sidebarElement);
+ this.sidebarPaneView.show(this._splitView.sidebarElement());
this.sidebarPanes.scopechain.expand();
this.sidebarPanes.jsBreakpoints.expand();
@@ -1574,6 +1673,9 @@
this.sidebarPanes.watchExpressions.expand();
},
+ /**
+ * @return {boolean}
+ */
canHighlightPosition: function()
{
return this.visibleView && this.visibleView.canHighlightPosition();
@@ -1587,7 +1689,9 @@
{
if (!this.canHighlightPosition())
return;
+ this._historyManager.updateCurrentState();
this.visibleView.highlightPosition(line, column);
+ this._historyManager.pushNewState();
},
/**
@@ -1621,7 +1725,6 @@
WebInspector.View.call(this);
this.registerRequiredCSS("sourcesView.css");
this.element.id = "sources-panel-sources-view";
- this.element.classList.add("vbox");
this.element.addEventListener("dragenter", this._onDragEnter.bind(this), true);
this.element.addEventListener("dragover", this._onDragOver.bind(this), true);
}
@@ -1684,9 +1787,46 @@
{
WebInspector.View.call(this);
this.element.id = "drawer-editor-view";
- this.element.classList.add("vbox");
}
WebInspector.DrawerEditorView.prototype = {
__proto__: WebInspector.View.prototype
}
+
+/**
+ * @constructor
+ * @implements {WebInspector.ContextMenu.Provider}
+ */
+WebInspector.SourcesPanel.ContextMenuProvider = function()
+{
+}
+
+WebInspector.SourcesPanel.ContextMenuProvider.prototype = {
+ /**
+ * @param {!WebInspector.ContextMenu} contextMenu
+ * @param {!Object} target
+ */
+ appendApplicableItems: function(event, contextMenu, target)
+ {
+ WebInspector.panel("sources").appendApplicableItems(event, contextMenu, target);
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.Revealer}
+ */
+WebInspector.SourcesPanel.UILocationRevealer = function()
+{
+}
+
+WebInspector.SourcesPanel.UILocationRevealer.prototype = {
+ /**
+ * @param {!Object} uiLocation
+ */
+ reveal: function(uiLocation)
+ {
+ if (uiLocation instanceof WebInspector.UILocation)
+ /** @type {!WebInspector.SourcesPanel} */ (WebInspector.panel("sources")).showUILocation(uiLocation);
+ }
+}
diff --git a/Source/devtools/front_end/SourcesPanelDescriptor.js b/Source/devtools/front_end/SourcesPanelDescriptor.js
deleted file mode 100644
index b1bd0dc..0000000
--- a/Source/devtools/front_end/SourcesPanelDescriptor.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
- * @implements {WebInspector.ContextMenu.Provider}
- */
-WebInspector.SourcesPanelDescriptor = function()
-{
- WebInspector.PanelDescriptor.call(this, "sources", WebInspector.UIString("Sources"), "SourcesPanel", "SourcesPanel.js");
- WebInspector.ContextMenu.registerProvider(this);
-}
-
-WebInspector.SourcesPanelDescriptor.prototype = {
- /**
- * @param {!WebInspector.ContextMenu} contextMenu
- * @param {!Object} target
- */
- appendApplicableItems: function(event, contextMenu, target)
- {
- var hasApplicableItems = target instanceof WebInspector.UISourceCode;
-
- if (!hasApplicableItems && target instanceof WebInspector.RemoteObject) {
- var remoteObject = /** @type {!WebInspector.RemoteObject} */ (target);
- if (remoteObject.type !== "function")
- return;
- }
-
- this.panel().appendApplicableItems(event, contextMenu, target);
- },
-
- registerShortcuts: function()
- {
- var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Sources Panel"));
-
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.PauseContinue, WebInspector.UIString("Pause/Continue"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepOver, WebInspector.UIString("Step over"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepInto, WebInspector.UIString("Step into"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepIntoSelection, WebInspector.UIString("Step into selection"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.StepOut, WebInspector.UIString("Step out"));
-
- var nextAndPrevFrameKeys = WebInspector.SourcesPanelDescriptor.ShortcutKeys.NextCallFrame.concat(WebInspector.SourcesPanelDescriptor.ShortcutKeys.PrevCallFrame);
- section.addRelatedKeys(nextAndPrevFrameKeys, WebInspector.UIString("Next/previous call frame"));
-
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.EvaluateSelectionInConsole, WebInspector.UIString("Evaluate selection in console"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.AddSelectionToWatch, WebInspector.UIString("Add selection to watch"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.GoToMember, WebInspector.UIString("Go to member"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.ToggleBreakpoint, WebInspector.UIString("Toggle breakpoint"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.ToggleComment, WebInspector.UIString("Toggle comment"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.IncreaseCSSUnitByOne, WebInspector.UIString("Increment CSS unit by 1"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.DecreaseCSSUnitByOne, WebInspector.UIString("Decrement CSS unit by 1"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.IncreaseCSSUnitByTen, WebInspector.UIString("Increment CSS unit by 10"));
- section.addAlternateKeys(WebInspector.SourcesPanelDescriptor.ShortcutKeys.DecreaseCSSUnitByTen, WebInspector.UIString("Decrement CSS unit by 10"));
- },
-
- __proto__: WebInspector.PanelDescriptor.prototype
-}
-
-WebInspector.SourcesPanelDescriptor.ShortcutKeys = {
- IncreaseCSSUnitByOne: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Up, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ],
-
- DecreaseCSSUnitByOne: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Down, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ],
-
- IncreaseCSSUnitByTen: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageUp, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ],
-
- DecreaseCSSUnitByTen: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.PageDown, WebInspector.KeyboardShortcut.Modifiers.Alt)
- ],
-
- RunSnippet: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Enter, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- PauseContinue: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F8),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Backslash, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- StepOver: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F10),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.SingleQuote, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- StepInto: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Semicolon, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- StepIntoSelection: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- StepOut: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F11, WebInspector.KeyboardShortcut.Modifiers.Shift),
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Semicolon, WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- EvaluateSelectionInConsole: [
- WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.Ctrl)
- ],
-
- AddSelectionToWatch: [
- WebInspector.KeyboardShortcut.makeDescriptor("a", WebInspector.KeyboardShortcut.Modifiers.Shift | WebInspector.KeyboardShortcut.Modifiers.Ctrl)
- ],
-
- GoToMember: [
- WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta | WebInspector.KeyboardShortcut.Modifiers.Shift)
- ],
-
- ToggleBreakpoint: [
- WebInspector.KeyboardShortcut.makeDescriptor("b", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- NextCallFrame: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Period, WebInspector.KeyboardShortcut.Modifiers.Ctrl)
- ],
-
- PrevCallFrame: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Comma, WebInspector.KeyboardShortcut.Modifiers.Ctrl)
- ],
-
- ToggleComment: [
- WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Slash, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
-
- ]
-};
diff --git a/Source/devtools/front_end/SourcesSearchScope.js b/Source/devtools/front_end/SourcesSearchScope.js
index e4a2026..41b6fc1 100644
--- a/Source/devtools/front_end/SourcesSearchScope.js
+++ b/Source/devtools/front_end/SourcesSearchScope.js
@@ -29,14 +29,12 @@
/**
* @constructor
* @implements {WebInspector.SearchScope}
- * @param {!WebInspector.Workspace} workspace
*/
-WebInspector.SourcesSearchScope = function(workspace)
+WebInspector.SourcesSearchScope = function()
{
// FIXME: Add title once it is used by search controller.
- WebInspector.SearchScope.call(this)
this._searchId = 0;
- this._workspace = workspace;
+ this._workspace = WebInspector.workspace;
}
WebInspector.SourcesSearchScope.prototype = {
@@ -139,6 +137,7 @@
/**
* @param {!string} path
+ * @this {WebInspector.SourcesSearchScope}
*/
function searchInNextFile(path)
{
@@ -152,6 +151,9 @@
uiSourceCode.requestContent(contentLoaded.bind(this, path));
}
+ /**
+ * @this {WebInspector.SourcesSearchScope}
+ */
function scheduleSearchInNextFileOrFinish()
{
if (fileIndex >= files.length) {
@@ -171,6 +173,7 @@
/**
* @param {!string} path
* @param {?string} content
+ * @this {WebInspector.SourcesSearchScope}
*/
function contentLoaded(path, content)
{
@@ -210,11 +213,10 @@
/**
* @param {!WebInspector.SearchConfig} searchConfig
+ * @return {!WebInspector.FileBasedSearchResultsPane}
*/
createSearchResultsPane: function(searchConfig)
{
return new WebInspector.FileBasedSearchResultsPane(searchConfig);
- },
-
- __proto__: WebInspector.SearchScope.prototype
+ }
}
diff --git a/Source/devtools/front_end/Spectrum.js b/Source/devtools/front_end/Spectrum.js
index ce000d8..97c7f50 100644
--- a/Source/devtools/front_end/Spectrum.js
+++ b/Source/devtools/front_end/Spectrum.js
@@ -35,7 +35,7 @@
WebInspector.View.call(this);
this.registerRequiredCSS("spectrum.css");
- this.element.className = "spectrum-container";
+ this.element.classList.add("spectrum-container");
this.element.tabIndex = 0;
var topElement = this.element.createChild("div", "spectrum-top");
@@ -56,6 +56,7 @@
this._alphaElement.setAttribute("type", "range");
this._alphaElement.setAttribute("min", "0");
this._alphaElement.setAttribute("max", "100");
+ this._alphaElement.addEventListener("input", alphaDrag.bind(this), false);
this._alphaElement.addEventListener("change", alphaDrag.bind(this), false);
var swatchElement = document.createElement("span");
@@ -69,6 +70,12 @@
WebInspector.Spectrum.draggable(this._sliderElement, hueDrag.bind(this));
WebInspector.Spectrum.draggable(this._draggerElement, colorDrag.bind(this), colorDragStart.bind(this));
+ /**
+ * @param {!Element} element
+ * @param {number} dragX
+ * @param {number} dragY
+ * @this {WebInspector.Spectrum}
+ */
function hueDrag(element, dragX, dragY)
{
this._hsv[0] = (this.slideHeight - dragY) / this.slideHeight;
@@ -78,11 +85,21 @@
var initialHelperOffset;
- function colorDragStart(element, dragX, dragY)
+ /**
+ * @this {WebInspector.Spectrum}
+ */
+ function colorDragStart()
{
initialHelperOffset = { x: this._dragHelperElement.offsetLeft, y: this._dragHelperElement.offsetTop };
}
+ /**
+ * @param {!Element} element
+ * @param {number} dragX
+ * @param {number} dragY
+ * @param {!MouseEvent} event
+ * @this {WebInspector.Spectrum}
+ */
function colorDrag(element, dragX, dragY, event)
{
if (event.shiftKey) {
@@ -98,6 +115,9 @@
this._onchange();
}
+ /**
+ * @this {WebInspector.Spectrum}
+ */
function alphaDrag()
{
this._hsv[3] = this._alphaElement.value / 100;
@@ -111,9 +131,9 @@
};
/**
- * @param {!Function=} onmove
- * @param {!Function=} onstart
- * @param {!Function=} onstop
+ * @param {function(!Element, number, number, !MouseEvent)=} onmove
+ * @param {function(!Element, !MouseEvent)=} onstart
+ * @param {function(!Element, !MouseEvent)=} onstop
*/
WebInspector.Spectrum.draggable = function(element, onmove, onstart, onstop) {
@@ -124,11 +144,17 @@
var maxHeight;
var maxWidth;
+ /**
+ * @param {?Event} e
+ */
function consume(e)
{
e.consume(true);
}
+ /**
+ * @param {?Event} e
+ */
function move(e)
{
if (dragging) {
@@ -136,18 +162,22 @@
var dragY = Math.max(0, Math.min(e.pageY - offset.top + scrollOffset.top, maxHeight));
if (onmove)
- onmove(element, dragX, dragY, e);
+ onmove(element, dragX, dragY, /** @type {!MouseEvent} */ (e));
}
}
+ /**
+ * @param {?Event} e
+ */
function start(e)
{
- var rightClick = e.which ? (e.which === 3) : (e.button === 2);
+ var mouseEvent = /** @type {!MouseEvent} */ (e);
+ var rightClick = mouseEvent.which ? (mouseEvent.which === 3) : (mouseEvent.button === 2);
if (!rightClick && !dragging) {
if (onstart)
- onstart(element, e)
+ onstart(element, mouseEvent);
dragging = true;
maxHeight = element.clientHeight;
@@ -161,11 +191,14 @@
doc.addEventListener("mousemove", move, false);
doc.addEventListener("mouseup", stop, false);
- move(e);
- consume(e);
+ move(mouseEvent);
+ consume(mouseEvent);
}
}
+ /**
+ * @param {?Event} e
+ */
function stop(e)
{
if (dragging) {
@@ -175,7 +208,7 @@
doc.removeEventListener("mouseup", stop, false);
if (onstop)
- onstop(element, e);
+ onstop(element, /** @type {!MouseEvent} */ (e));
}
dragging = false;
@@ -312,6 +345,9 @@
return this._spectrum;
},
+ /**
+ * @return {boolean}
+ */
toggle: function(element, color, format)
{
if (this._popover.isShowing())
@@ -322,6 +358,9 @@
return this._popover.isShowing();
},
+ /**
+ * @return {boolean}
+ */
show: function(element, color, format)
{
if (this._popover.isShowing()) {
@@ -389,12 +428,14 @@
/**
* @constructor
+ * @param {boolean=} readOnly
*/
-WebInspector.ColorSwatch = function()
+WebInspector.ColorSwatch = function(readOnly)
{
this.element = document.createElement("span");
this._swatchInnerElement = this.element.createChild("span", "swatch-inner");
- this.element.title = WebInspector.UIString("Click to open a colorpicker. Shift-click to change color format");
+ var shiftClickMessage = WebInspector.UIString("Shift-click to change color format.");
+ this.element.title = readOnly ? shiftClickMessage : String.sprintf("%s\n%s", WebInspector.UIString("Click to open a colorpicker."), shiftClickMessage);
this.element.className = "swatch";
this.element.addEventListener("mousedown", consumeEvent, false);
this.element.addEventListener("dblclick", consumeEvent, false);
diff --git a/Source/devtools/front_end/SplitView.js b/Source/devtools/front_end/SplitView.js
index f81d98d..096416f 100644
--- a/Source/devtools/front_end/SplitView.js
+++ b/Source/devtools/front_end/SplitView.js
@@ -30,23 +30,37 @@
* @constructor
* @extends {WebInspector.View}
* @param {boolean} isVertical
+ * @param {boolean} secondIsSidebar
* @param {string=} sidebarSizeSettingName
* @param {number=} defaultSidebarWidth
* @param {number=} defaultSidebarHeight
*/
-WebInspector.SplitView = function(isVertical, sidebarSizeSettingName, defaultSidebarWidth, defaultSidebarHeight)
+WebInspector.SplitView = function(isVertical, secondIsSidebar, sidebarSizeSettingName, defaultSidebarWidth, defaultSidebarHeight)
{
WebInspector.View.call(this);
this.registerRequiredCSS("splitView.css");
-
this.element.classList.add("split-view");
- this.element.classList.add("fill");
- this._firstElement = this.element.createChild("div", "split-view-contents scroll-target split-view-contents-first");
- this._secondElement = this.element.createChild("div", "split-view-contents scroll-target split-view-contents-second");
+ this._mainView = new WebInspector.View();
+ this._mainView.makeLayoutBoundary();
+ this._mainElement = this._mainView.element;
+ this._mainElement.className = "split-view-contents scroll-target split-view-main vbox"; // Override
+
+ this._sidebarView = new WebInspector.View();
+ this._sidebarView.makeLayoutBoundary();
+ this._sidebarElement = this._sidebarView.element;
+ this._sidebarElement.className = "split-view-contents scroll-target split-view-sidebar vbox"; // Override
this._resizerElement = this.element.createChild("div", "split-view-resizer");
+ if (secondIsSidebar) {
+ this._mainView.show(this.element);
+ this._sidebarView.show(this.element);
+ } else {
+ this._sidebarView.show(this.element);
+ this._mainView.show(this.element);
+ }
+
this._onDragStartBound = this._onDragStart.bind(this);
this._resizerElements = [];
@@ -58,10 +72,10 @@
if (0 < this._savedSidebarWidth && this._savedSidebarWidth < 1 &&
0 < this._savedSidebarHeight && this._savedSidebarHeight < 1)
this._useFraction = true;
-
+
this._sidebarSizeSettingName = sidebarSizeSettingName;
- this.setSecondIsSidebar(true);
+ this.setSecondIsSidebar(secondIsSidebar);
this._innerSetVertical(isVertical);
@@ -69,6 +83,10 @@
this.installResizer(this._resizerElement);
}
+WebInspector.SplitView.Events = {
+ SidebarSizeChanged: "SidebarSizeChanged"
+}
+
WebInspector.SplitView.prototype = {
/**
* @return {boolean}
@@ -106,43 +124,30 @@
delete this._resizerElementSize;
this._sidebarSize = -1;
},
-
- _updateLayout: function()
+
+ /**
+ * @param {boolean=} animate
+ */
+ _updateLayout: function(animate)
{
delete this._totalSize; // Lazy update.
- this._innerSetSidebarSize(this._lastSidebarSize());
+ this._innerSetSidebarSize(this._lastSidebarSize(), false, animate);
},
/**
* @return {!Element}
*/
- firstElement: function()
+ mainElement: function()
{
- return this._firstElement;
+ return this._mainElement;
},
/**
* @return {!Element}
*/
- secondElement: function()
+ sidebarElement: function()
{
- return this._secondElement;
- },
-
- /**
- * @return {!Element}
- */
- get mainElement()
- {
- return this.isSidebarSecond() ? this.firstElement() : this.secondElement();
- },
-
- /**
- * @return {!Element}
- */
- get sidebarElement()
- {
- return this.isSidebarSecond() ? this.secondElement() : this.firstElement();
+ return this._sidebarElement;
},
/**
@@ -158,11 +163,39 @@
*/
setSecondIsSidebar: function(secondIsSidebar)
{
- this.sidebarElement.classList.remove("split-view-sidebar");
- this.mainElement.classList.remove("split-view-main");
+ this._mainElement.classList.toggle("split-view-contents-first", secondIsSidebar);
+ this._mainElement.classList.toggle("split-view-contents-second", !secondIsSidebar);
+ this._sidebarElement.classList.toggle("split-view-contents-first", !secondIsSidebar);
+ this._sidebarElement.classList.toggle("split-view-contents-second", secondIsSidebar);
+
+ // Make sure second is last in the children array.
+ if (secondIsSidebar) {
+ if (this._sidebarElement.parentElement && this._sidebarElement.nextSibling)
+ this.element.appendChild(this._sidebarElement);
+ } else {
+ if (this._mainElement.parentElement && this._mainElement.nextSibling)
+ this.element.appendChild(this._mainElement);
+ }
+
this._secondIsSidebar = secondIsSidebar;
- this.sidebarElement.classList.add("split-view-sidebar");
- this.mainElement.classList.add("split-view-main");
+ },
+
+ /**
+ * @return {string}
+ */
+ sidebarSide: function()
+ {
+ return this._isVertical ?
+ (this._secondIsSidebar ? "right" : "left") :
+ (this._secondIsSidebar ? "bottom" : "top");
+ },
+
+ /**
+ * @return {number}
+ */
+ desiredSidebarSize: function()
+ {
+ return this._lastSidebarSize();
},
/**
@@ -173,37 +206,58 @@
return this._resizerElement;
},
- showOnlyFirst: function()
+ /**
+ * @param {boolean=} animate
+ */
+ hideMain: function(animate)
{
- this._showOnly(this._firstElement, this._secondElement);
- },
-
- showOnlySecond: function()
- {
- this._showOnly(this._secondElement, this._firstElement);
+ this._showOnly(this._sidebarView, this._mainView, animate);
},
/**
- * @param {!Element} sideA
- * @param {!Element} sideB
+ * @param {boolean=} animate
*/
- _showOnly: function(sideA, sideB)
+ hideSidebar: function(animate)
{
- sideA.classList.remove("hidden");
- sideA.classList.add("maximized");
- sideB.classList.add("hidden");
- sideB.classList.remove("maximized");
- this._removeAllLayoutProperties();
+ this._showOnly(this._mainView, this._sidebarView, animate);
+ },
+
+ /**
+ * @param {!WebInspector.View} sideToShow
+ * @param {!WebInspector.View} sideToHide
+ * @param {boolean=} animate
+ */
+ _showOnly: function(sideToShow, sideToHide, animate)
+ {
+ this._cancelAnimation();
+
+ /**
+ * @this {WebInspector.SplitView}
+ */
+ function callback()
+ {
+ sideToShow.show(this.element);
+ sideToHide.detach();
+ sideToShow.element.classList.add("maximized");
+ sideToHide.element.classList.remove("maximized");
+ this._removeAllLayoutProperties();
+ }
+
+ if (animate) {
+ this._animate(true, callback.bind(this));
+ } else {
+ callback.call(this);
+ this.doResize();
+ }
this._isShowingOne = true;
this._sidebarSize = -1;
this.setResizable(false);
- this.doResize();
},
_removeAllLayoutProperties: function()
{
- this.sidebarElement.style.removeProperty("flexBasis");
+ this._sidebarElement.style.removeProperty("flexBasis");
this._resizerElement.style.removeProperty("left");
this._resizerElement.style.removeProperty("right");
@@ -216,17 +270,27 @@
this._resizerElement.style.removeProperty("margin-bottom");
},
- showBoth: function()
+ /**
+ * @param {boolean=} animate
+ */
+ showBoth: function(animate)
{
- this._firstElement.classList.remove("hidden");
- this._firstElement.classList.remove("maximized");
- this._secondElement.classList.remove("hidden");
- this._secondElement.classList.remove("maximized");
+ if (!this._isShowingOne)
+ animate = false;
+
+ this._cancelAnimation();
+ this._mainElement.classList.remove("maximized");
+ this._sidebarElement.classList.remove("maximized");
+
+ this._mainView.show(this.element);
+ this._sidebarView.show(this.element);
+ // Order views in DOM properly.
+ this.setSecondIsSidebar(this._secondIsSidebar);
this._isShowingOne = false;
this._sidebarSize = -1;
this.setResizable(true);
- this.doResize();
+ this._updateLayout(animate);
},
/**
@@ -240,10 +304,11 @@
/**
* @param {number} size
+ * @param {boolean=} ignoreConstraints
*/
- setSidebarSize: function(size)
+ setSidebarSize: function(size, ignoreConstraints)
{
- this._innerSetSidebarSize(size);
+ this._innerSetSidebarSize(size, ignoreConstraints);
this._saveSidebarSize();
},
@@ -267,15 +332,18 @@
/**
* @param {number} size
+ * @param {boolean=} ignoreConstraints
+ * @param {boolean=} animate
*/
- _innerSetSidebarSize: function(size)
+ _innerSetSidebarSize: function(size, ignoreConstraints, animate)
{
if (this._isShowingOne) {
this._sidebarSize = size;
return;
}
- size = this._applyConstraints(size);
+ if (!ignoreConstraints)
+ size = this._applyConstraints(size);
if (this._sidebarSize === size)
return;
@@ -292,10 +360,12 @@
else
sizeValue = size + "px";
+ this.sidebarElement().style.flexBasis = sizeValue;
+
if (!this._resizerElementSize)
this._resizerElementSize = this._isVertical ? this._resizerElement.offsetWidth : this._resizerElement.offsetHeight;
- this.sidebarElement.style.flexBasis = sizeValue;
+ // Position resizer.
if (this._isVertical) {
if (this._secondIsSidebar) {
this._resizerElement.style.right = sizeValue;
@@ -316,10 +386,93 @@
this._sidebarSize = size;
- // No need to recalculate this._sidebarSize and this._totalSize again.
- this._muteOnResize = true;
- this.doResize();
- delete this._muteOnResize;
+ if (animate) {
+ this._animate(false);
+ } else {
+ // No need to recalculate this._sidebarSize and this._totalSize again.
+ this.doResize();
+ this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged, this.sidebarSize());
+ }
+ },
+
+ /**
+ * @param {boolean} reverse
+ * @param {function()=} callback
+ */
+ _animate: function(reverse, callback)
+ {
+ var animationTime = 50;
+ this._animationCallback = callback;
+
+ var animatedMarginPropertyName;
+ if (this._isVertical)
+ animatedMarginPropertyName = this._secondIsSidebar ? "margin-right" : "margin-left";
+ else
+ animatedMarginPropertyName = this._secondIsSidebar ? "margin-bottom" : "margin-top";
+
+ var marginFrom = reverse ? "0" : "-" + this._sidebarSize + "px";
+ var marginTo = reverse ? "-" + this._sidebarSize + "px" : "0";
+
+ // This order of things is important.
+ // 1. Resize main element early and force layout.
+ this.element.style.setProperty(animatedMarginPropertyName, marginFrom);
+ if (!reverse) {
+ suppressUnused(this._mainElement.offsetWidth);
+ suppressUnused(this._sidebarElement.offsetWidth);
+ }
+
+ // 2. Issue onresize to the sidebar element, its size won't change.
+ if (!reverse)
+ this._sidebarView.doResize();
+
+ // 3. Configure and run animation
+ this.element.style.setProperty("transition", animatedMarginPropertyName + " " + animationTime + "ms linear");
+
+ var boundAnimationFrame;
+ var startTime;
+ /**
+ * @this {WebInspector.SplitView}
+ */
+ function animationFrame()
+ {
+ delete this._animationFrameHandle;
+
+ if (!startTime) {
+ // Kick animation on first frame.
+ this.element.style.setProperty(animatedMarginPropertyName, marginTo);
+ startTime = window.performance.now();
+ } else if (window.performance.now() < startTime + animationTime) {
+ // Process regular animation frame.
+ this._mainView.doResize();
+ } else {
+ // Complete animation.
+ this._cancelAnimation();
+ this._mainView.doResize();
+ this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged, this.sidebarSize());
+ return;
+ }
+ this._animationFrameHandle = window.requestAnimationFrame(boundAnimationFrame);
+ }
+ boundAnimationFrame = animationFrame.bind(this);
+ this._animationFrameHandle = window.requestAnimationFrame(boundAnimationFrame);
+ },
+
+ _cancelAnimation: function()
+ {
+ this.element.style.removeProperty("margin-top");
+ this.element.style.removeProperty("margin-right");
+ this.element.style.removeProperty("margin-bottom");
+ this.element.style.removeProperty("margin-left");
+ this.element.style.removeProperty("transition");
+
+ if (this._animationFrameHandle) {
+ window.cancelAnimationFrame(this._animationFrameHandle);
+ delete this._animationFrameHandle;
+ }
+ if (this._animationCallback) {
+ this._animationCallback();
+ delete this._animationCallback;
+ }
},
/**
@@ -354,21 +507,25 @@
{
const minPadding = 20;
var totalSize = this.totalSize();
- var from = (this.isVertical() ? this._minimumSidebarWidth : this._minimumSidebarHeight) || 0;
+ var minimumSiderbarSizeContraint = this.isVertical() ? this._minimumSidebarWidth : this._minimumSidebarHeight;
+ var from = minimumSiderbarSizeContraint || 0;
var fromInPercents = false;
if (from && from < 1) {
fromInPercents = true;
from = Math.round(totalSize * from);
}
- from = Math.max(from, minPadding);
+ if (typeof minimumSiderbarSizeContraint !== "number")
+ from = Math.max(from, minPadding);
- var minMainSize = (this.isVertical() ? this._minimumMainWidth : this._minimumMainHeight) || 0;
+ var minimumMainSizeConstraint = this.isVertical() ? this._minimumMainWidth : this._minimumMainHeight;
+ var minMainSize = minimumMainSizeConstraint || 0;
var toInPercents = false;
if (minMainSize && minMainSize < 1) {
toInPercents = true;
minMainSize = Math.round(totalSize * minMainSize);
}
- minMainSize = Math.max(minMainSize, minPadding);
+ if (typeof minimumMainSizeConstraint !== "number")
+ minMainSize = Math.max(minMainSize, minPadding);
var to = totalSize - minMainSize;
if (from <= to)
@@ -393,8 +550,6 @@
onResize: function()
{
- if (this._muteOnResize)
- return;
this._updateLayout();
},
@@ -407,7 +562,7 @@
if (!this._resizable)
return false;
- this._saveSidebarSizeRecursively();
+ this._saveSidebarSize();
this._dragOffset = (this._secondIsSidebar ? this.totalSize() - this._sidebarSize : this._sidebarSize) - (this._isVertical ? event.pageX : event.pageY);
return true;
},
@@ -429,20 +584,12 @@
_endResizerDragging: function(event)
{
delete this._dragOffset;
- this._saveSidebarSizeRecursively();
+ this._saveSidebarSize();
},
- _saveSidebarSizeRecursively: function()
+ hideDefaultResizer: function()
{
- /** @this {WebInspector.View} */
- function doSaveSidebarSizeRecursively()
- {
- if (this._saveSidebarSize)
- this._saveSidebarSize();
- this._callOnVisibleChildren(doSaveSidebarSizeRecursively);
- }
- this._saveSidebarSize();
- this._callOnVisibleChildren(doSaveSidebarSizeRecursively);
+ this.element.classList.add("split-view-no-resizer");
},
/**
@@ -452,7 +599,8 @@
{
resizerElement.addEventListener("mousedown", this._onDragStartBound, false);
resizerElement.style.setProperty("cursor", this._isVertical ? "ew-resize" : "ns-resize");
- this._resizerElements.push(resizerElement);
+ if (this._resizerElements.indexOf(resizerElement) === -1)
+ this._resizerElements.push(resizerElement);
},
/**
@@ -470,6 +618,9 @@
*/
_onDragStart: function(event)
{
+ // Only handle drags of the nodes specified.
+ if (this._resizerElements.indexOf(event.target) === -1)
+ return;
WebInspector.elementDragStart(this._startResizerDragging.bind(this), this._resizerDragging.bind(this), this._endResizerDragging.bind(this), this._isVertical ? "ew-resize" : "ns-resize", event);
},
diff --git a/Source/devtools/front_end/StackView.js b/Source/devtools/front_end/StackView.js
new file mode 100644
index 0000000..a4c8fa2
--- /dev/null
+++ b/Source/devtools/front_end/StackView.js
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2014 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
+ * "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 GOOGLE INC.
+ * OR ITS 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.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.View}
+ * @param {boolean} isVertical
+ */
+WebInspector.StackView = function(isVertical)
+{
+ WebInspector.View.call(this);
+ this._isVertical = isVertical;
+ this._currentSplitView = null;
+}
+
+WebInspector.StackView.prototype = {
+ /**
+ * @param {!WebInspector.View} view
+ * @param {string=} sidebarSizeSettingName
+ * @param {number=} defaultSidebarWidth
+ * @param {number=} defaultSidebarHeight
+ * @return {!WebInspector.SplitView}
+ */
+ appendView: function(view, sidebarSizeSettingName, defaultSidebarWidth, defaultSidebarHeight)
+ {
+ var splitView = new WebInspector.SplitView(this._isVertical, true, sidebarSizeSettingName, defaultSidebarWidth, defaultSidebarHeight);
+ view.show(splitView.mainElement());
+ splitView.hideSidebar();
+
+ if (!this._currentSplitView) {
+ splitView.show(this.element);
+ } else {
+ splitView.show(this._currentSplitView.sidebarElement());
+ this._currentSplitView.showBoth();
+ }
+
+ this._currentSplitView = splitView;
+ return splitView;
+ },
+
+ detachChildViews: function()
+ {
+ WebInspector.View.prototype.detachChildViews.call(this);
+ this._currentSplitView = null;
+ },
+
+ __proto__: WebInspector.View.prototype
+}
diff --git a/Source/devtools/front_end/StatusBarButton.js b/Source/devtools/front_end/StatusBarButton.js
index 9653a40..35675dd 100644
--- a/Source/devtools/front_end/StatusBarButton.js
+++ b/Source/devtools/front_end/StatusBarButton.js
@@ -31,12 +31,13 @@
/**
* @constructor
* @extends {WebInspector.Object}
- * @param {!Element} element
+ * @param {string} elementType
*/
-WebInspector.StatusBarItem = function(element)
+WebInspector.StatusBarItem = function(elementType)
{
- this.element = element;
+ this.element = document.createElement(elementType);
this._enabled = true;
+ this._visible = true;
}
WebInspector.StatusBarItem.prototype = {
@@ -59,6 +60,19 @@
this.element.disabled = !this._enabled;
},
+ get visible()
+ {
+ return this._visible;
+ },
+
+ set visible(x)
+ {
+ if (this._visible === x)
+ return;
+ this.element.enableStyleClass("hidden", !x);
+ this._visible = x;
+ },
+
__proto__: WebInspector.Object.prototype
}
@@ -70,7 +84,7 @@
*/
WebInspector.StatusBarText = function(text, className)
{
- WebInspector.StatusBarItem.call(this, document.createElement("span"));
+ WebInspector.StatusBarItem.call(this, "span");
this.element.className = "status-bar-item status-bar-text";
if (className)
this.element.classList.add(className);
@@ -89,6 +103,39 @@
__proto__: WebInspector.StatusBarItem.prototype
}
+/**
+ * @constructor
+ * @extends {WebInspector.StatusBarItem}
+ * @param {string=} placeholder
+ * @param {number=} width
+ */
+WebInspector.StatusBarInput = function(placeholder, width)
+{
+ WebInspector.StatusBarItem.call(this, "input");
+ this.element.className = "status-bar-item";
+ this.element.addEventListener("input", this._onChangeCallback.bind(this), false);
+ if (width)
+ this.element.style.width = width + "px";
+ if (placeholder)
+ this.element.setAttribute("placeholder", placeholder);
+}
+
+WebInspector.StatusBarInput.prototype = {
+ /**
+ * @param {?function(string)} handler
+ */
+ setOnChangeHandler: function(handler)
+ {
+ this._onChangeHandler = handler;
+ },
+
+ _onChangeCallback: function()
+ {
+ this._onChangeHandler && this._onChangeHandler(this.element.value);
+ },
+
+ __proto__: WebInspector.StatusBarItem.prototype
+}
/**
* @constructor
@@ -99,7 +146,7 @@
*/
WebInspector.StatusBarButton = function(title, className, states)
{
- WebInspector.StatusBarItem.call(this, document.createElement("button"));
+ WebInspector.StatusBarItem.call(this, "button");
this.element.className = className + " status-bar-item";
this.element.addEventListener("click", this._clicked.bind(this), false);
@@ -122,7 +169,6 @@
this.title = title;
this.className = className;
- this._visible = true;
}
WebInspector.StatusBarButton.prototype = {
@@ -202,20 +248,6 @@
this.state = x;
},
- get visible()
- {
- return this._visible;
- },
-
- set visible(x)
- {
- if (this._visible === x)
- return;
-
- this.element.enableStyleClass("hidden", !x);
- this._visible = x;
- },
-
makeLongClickEnabled: function()
{
var boundMouseDown = mouseDown.bind(this);
@@ -229,6 +261,10 @@
this._longClickData = { mouseUp: boundMouseUp, mouseDown: boundMouseDown };
+ /**
+ * @param {?Event} e
+ * @this {WebInspector.StatusBarButton}
+ */
function mouseDown(e)
{
if (e.which !== 1)
@@ -237,6 +273,10 @@
this._longClickInterval = setInterval(longClicked.bind(this), 200);
}
+ /**
+ * @param {?Event} e
+ * @this {WebInspector.StatusBarButton}
+ */
function mouseUp(e)
{
if (e.which !== 1)
@@ -247,6 +287,9 @@
}
}
+ /**
+ * @this {WebInspector.StatusBarButton}
+ */
function longClicked()
{
++longClicks;
@@ -321,7 +364,7 @@
var hostButtonPosition = this.element.totalOffset();
- var topNotBottom = hostButtonPosition.top < document.documentElement.offsetHeight / 2;
+ var topNotBottom = hostButtonPosition.top + buttonHeight * buttons.length < document.documentElement.offsetHeight;
if (topNotBottom)
buttons = buttons.reverse();
@@ -387,7 +430,7 @@
*/
WebInspector.StatusBarComboBox = function(changeHandler, className)
{
- WebInspector.StatusBarItem.call(this, document.createElement("span"));
+ WebInspector.StatusBarItem.call(this, "span");
this.element.className = "status-bar-select-container";
this._selectElement = this.element.createChild("select", "status-bar-item");
@@ -505,7 +548,7 @@
*/
WebInspector.StatusBarCheckbox = function(title)
{
- WebInspector.StatusBarItem.call(this, document.createElement("label"));
+ WebInspector.StatusBarItem.call(this, "label");
this.element.classList.add("status-bar-item", "checkbox");
this._checkbox = this.element.createChild("input");
this._checkbox.type = "checkbox";
@@ -523,3 +566,103 @@
__proto__: WebInspector.StatusBarItem.prototype
}
+
+/**
+ * @constructor
+ * @extends {WebInspector.StatusBarButton}
+ * @param {string} className
+ * @param {!Array.<string>} states
+ * @param {!Array.<string>} titles
+ * @param {!WebInspector.Setting} currentStateSetting
+ * @param {!WebInspector.Setting} lastStateSetting
+ * @param {?function(string)} stateChangedCallback
+ */
+WebInspector.StatusBarStatesSettingButton = function(className, states, titles, currentStateSetting, lastStateSetting, stateChangedCallback)
+{
+ WebInspector.StatusBarButton.call(this, "", className, states.length);
+
+ var onClickBound = this._onClick.bind(this);
+ this.addEventListener("click", onClickBound, this);
+
+ this._states = states;
+ this._buttons = [];
+ for (var index = 0; index < states.length; index++) {
+ var button = new WebInspector.StatusBarButton(titles[index], className, states.length);
+ button.state = this._states[index];
+ button.addEventListener("click", onClickBound, this);
+ this._buttons.push(button);
+ }
+
+ this._currentStateSetting = currentStateSetting;
+ this._lastStateSetting = lastStateSetting;
+ this._stateChangedCallback = stateChangedCallback;
+ this.setLongClickOptionsEnabled(this._createOptions.bind(this));
+
+ this._currentState = null;
+ this.toggleState(this._defaultState());
+}
+
+WebInspector.StatusBarStatesSettingButton.prototype = {
+ /**
+ * @param {!WebInspector.Event} e
+ */
+ _onClick: function(e)
+ {
+ this.toggleState(e.target.state);
+ },
+
+ /**
+ * @param {string} state
+ */
+ toggleState: function(state)
+ {
+ if (this._currentState === state)
+ return;
+
+ if (this._currentState)
+ this._lastStateSetting.set(this._currentState);
+ this._currentState = state;
+ this._currentStateSetting.set(this._currentState);
+
+ if (this._stateChangedCallback)
+ this._stateChangedCallback(state);
+
+ var defaultState = this._defaultState();
+ this.state = defaultState;
+ this.title = this._buttons[this._states.indexOf(defaultState)].title;
+ },
+
+ /**
+ * @return {string}
+ */
+ _defaultState: function()
+ {
+ // Not yet initialized - load from setting.
+ if (!this._currentState) {
+ var state = this._currentStateSetting.get();
+ return this._states.indexOf(state) >= 0 ? state : this._states[0];
+ }
+
+ var lastState = this._lastStateSetting.get();
+ if (lastState && this._states.indexOf(lastState) >= 0 && lastState != this._currentState)
+ return lastState;
+ if (this._states.length > 1 && this._currentState === this._states[0])
+ return this._states[1];
+ return this._states[0];
+ },
+
+ /**
+ * @return {!Array.<!WebInspector.StatusBarButton>}
+ */
+ _createOptions: function()
+ {
+ var options = [];
+ for (var index = 0; index < this._states.length; index++) {
+ if (this._states[index] !== this.state && this._states[index] !== this._currentState)
+ options.push(this._buttons[index]);
+ }
+ return options;
+ },
+
+ __proto__: WebInspector.StatusBarButton.prototype
+}
diff --git a/Source/devtools/front_end/StyleSheetOutlineDialog.js b/Source/devtools/front_end/StyleSheetOutlineDialog.js
index cfb0ec3..978ddb3 100644
--- a/Source/devtools/front_end/StyleSheetOutlineDialog.js
+++ b/Source/devtools/front_end/StyleSheetOutlineDialog.js
@@ -29,18 +29,17 @@
/**
* @constructor
* @extends {WebInspector.SelectionDialogContentProvider}
- * @param {!WebInspector.View} view
* @param {!WebInspector.UISourceCode} uiSourceCode
* @param {function(number, number)} selectItemCallback
*/
-WebInspector.StyleSheetOutlineDialog = function(view, uiSourceCode, selectItemCallback)
+WebInspector.StyleSheetOutlineDialog = function(uiSourceCode, selectItemCallback)
{
WebInspector.SelectionDialogContentProvider.call(this);
this._selectItemCallback = selectItemCallback;
this._rules = [];
- this._view = view;
- this._uiSourceCode = uiSourceCode;
- this._requestItems();
+ this._outlineWorker = new Worker("ScriptFormatterWorker.js");
+ this._outlineWorker.onmessage = this._didBuildOutlineChunk.bind(this);
+ this._outlineWorker.postMessage({ method: "cssOutline", params: { content: uiSourceCode.workingCopy() } });
}
/**
@@ -52,13 +51,29 @@
{
if (WebInspector.Dialog.currentInstance())
return null;
- var delegate = new WebInspector.StyleSheetOutlineDialog(view, uiSourceCode, selectItemCallback);
+ var delegate = new WebInspector.StyleSheetOutlineDialog(uiSourceCode, selectItemCallback);
var filteredItemSelectionDialog = new WebInspector.FilteredItemSelectionDialog(delegate);
WebInspector.Dialog.show(view.element, filteredItemSelectionDialog);
}
WebInspector.StyleSheetOutlineDialog.prototype = {
/**
+ * @param {!MessageEvent} event
+ */
+ _didBuildOutlineChunk: function(event)
+ {
+ var data = /** @type {!WebInspector.StyleSheetOutlineDialog.MessageEventData} */ (event.data);
+ var chunk = data.chunk;
+ for (var i = 0; i < chunk.length; ++i)
+ this._rules.push(chunk[i]);
+
+ if (data.total === data.index)
+ this.dispose();
+
+ this.refresh();
+ },
+
+ /**
* @return {number}
*/
itemCount: function()
@@ -72,7 +87,8 @@
*/
itemKeyAt: function(itemIndex)
{
- return this._rules[itemIndex].selectorText;
+ var rule = this._rules[itemIndex];
+ return rule.selectorText || rule.atRule;
},
/**
@@ -83,7 +99,7 @@
itemScoreAt: function(itemIndex, query)
{
var rule = this._rules[itemIndex];
- return -rule.rawLocation.lineNumber;
+ return -rule.lineNumber;
},
/**
@@ -95,40 +111,9 @@
renderItem: function(itemIndex, query, titleElement, subtitleElement)
{
var rule = this._rules[itemIndex];
- titleElement.textContent = rule.selectorText;
+ titleElement.textContent = rule.selectorText || rule.atRule;
this.highlightRanges(titleElement, query);
- subtitleElement.textContent = ":" + (rule.rawLocation.lineNumber + 1);
- },
-
- _requestItems: function()
- {
- function didGetAllStyleSheets(error, infos)
- {
- if (error)
- return;
-
- for (var i = 0; i < infos.length; ++i) {
- var info = infos[i];
- if (info.sourceURL === this._uiSourceCode.url) {
- WebInspector.CSSStyleSheet.createForId(info.styleSheetId, didGetStyleSheet.bind(this));
- return;
- }
- }
- }
-
- CSSAgent.getAllStyleSheets(didGetAllStyleSheets.bind(this));
-
- /**
- * @param {?WebInspector.CSSStyleSheet} styleSheet
- */
- function didGetStyleSheet(styleSheet)
- {
- if (!styleSheet)
- return;
-
- this._rules = styleSheet.rules;
- this.refresh();
- }
+ subtitleElement.textContent = ":" + (rule.lineNumber + 1);
},
/**
@@ -138,10 +123,23 @@
selectItem: function(itemIndex, promptValue)
{
var rule = this._rules[itemIndex];
- var lineNumber = rule.rawLocation.lineNumber;
+ var lineNumber = rule.lineNumber;
if (!isNaN(lineNumber) && lineNumber >= 0)
- this._selectItemCallback(lineNumber, rule.rawLocation.columnNumber);
+ this._selectItemCallback(lineNumber, rule.columnNumber);
+ },
+
+ dispose: function()
+ {
+ if (this._outlineWorker) {
+ this._outlineWorker.terminate();
+ delete this._outlineWorker;
+ }
},
__proto__: WebInspector.SelectionDialogContentProvider.prototype
}
+
+/**
+ * @typedef {{index: number, total: number, chunk: !Array.<!{selectorText: ?string, atRule: ?string, lineNumber: number, columnNumber: number}>}}
+ */
+WebInspector.StyleSheetOutlineDialog.MessageEventData;
diff --git a/Source/devtools/front_end/StylesSidebarPane.js b/Source/devtools/front_end/StylesSidebarPane.js
index 997d27e..794093e 100644
--- a/Source/devtools/front_end/StylesSidebarPane.js
+++ b/Source/devtools/front_end/StylesSidebarPane.js
@@ -37,38 +37,6 @@
{
WebInspector.SidebarPane.call(this, WebInspector.UIString("Styles"));
- this.settingsSelectElement = document.createElement("select");
- this.settingsSelectElement.className = "select-settings";
-
- var option = document.createElement("option");
- option.value = WebInspector.Color.Format.Original;
- option.label = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "As authored" : "As Authored");
- this.settingsSelectElement.appendChild(option);
-
- option = document.createElement("option");
- option.value = WebInspector.Color.Format.HEX;
- option.label = WebInspector.UIString("Hex Colors");
- this.settingsSelectElement.appendChild(option);
-
- option = document.createElement("option");
- option.value = WebInspector.Color.Format.RGB;
- option.label = WebInspector.UIString("RGB Colors");
- this.settingsSelectElement.appendChild(option);
-
- option = document.createElement("option");
- option.value = WebInspector.Color.Format.HSL;
- option.label = WebInspector.UIString("HSL Colors");
- this.settingsSelectElement.appendChild(option);
-
- // Prevent section from collapsing.
- var muteEventListener = function(event) { event.consume(true); };
-
- this.settingsSelectElement.addEventListener("click", muteEventListener, true);
- this.settingsSelectElement.addEventListener("change", this._changeSetting.bind(this), false);
- this._updateColorFormatFilter();
-
- this.titleElement.appendChild(this.settingsSelectElement);
-
this._elementStateButton = document.createElement("button");
this._elementStateButton.className = "pane-title-button element-state";
this._elementStateButton.title = WebInspector.UIString("Toggle Element State");
@@ -102,7 +70,6 @@
WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.MediaQueryResultChanged, this._styleSheetOrMediaQueryResultChanged, this);
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModified, this._attributeChanged, this);
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemoved, this._attributeChanged, this);
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.PseudoStateChanged, this._pseudoStateChanged, this);
WebInspector.settings.showUserAgentStyles.addChangeListener(this._showUserAgentStylesSettingChanged.bind(this));
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameResized, this._frameResized, this);
this.element.classList.add("styles-pane");
@@ -123,8 +90,7 @@
"-webkit-media-controls-play-button", "-webkit-media-controls-mute-button", "-webkit-media-controls-timeline",
"-webkit-media-controls-timeline-container", "-webkit-media-controls-volume-slider",
"-webkit-media-controls-volume-slider-container", "-webkit-media-controls-current-time-display",
- "-webkit-media-controls-time-remaining-display", "-webkit-media-controls-seek-back-button", "-webkit-media-controls-seek-forward-button",
- "-webkit-media-controls-fullscreen-button", "-webkit-media-controls-rewind-button", "-webkit-media-controls-return-to-realtime-button",
+ "-webkit-media-controls-time-remaining-display", "-webkit-media-controls-fullscreen-button",
"-webkit-media-controls-toggle-closed-captions-button", "-webkit-media-controls-status-display", "-webkit-scrollbar-thumb",
"-webkit-scrollbar-button", "-webkit-scrollbar-track", "-webkit-scrollbar-track-piece", "-webkit-scrollbar-corner",
"-webkit-resizer", "-webkit-inner-spin-button", "-webkit-outer-spin-button"
@@ -289,6 +255,10 @@
if (!node)
return;
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} computedStyle
+ * @this {WebInspector.StylesSidebarPane}
+ */
function computedStyleCallback(computedStyle)
{
delete this._refreshUpdateInProgress;
@@ -331,6 +301,10 @@
var resultStyles = {};
+ /**
+ * @param {?*} matchedResult
+ * @this {WebInspector.StylesSidebarPane}
+ */
function stylesCallback(matchedResult)
{
delete this._rebuildUpdateInProgress;
@@ -358,12 +332,19 @@
}
}
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} inlineStyle
+ * @param {?WebInspector.CSSStyleDeclaration} attributesStyle
+ */
function inlineCallback(inlineStyle, attributesStyle)
{
resultStyles.inlineStyle = inlineStyle;
resultStyles.attributesStyle = attributesStyle;
}
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} computedStyle
+ */
function computedCallback(computedStyle)
{
resultStyles.computedStyle = computedStyle;
@@ -401,6 +382,9 @@
_frameResized: function()
{
+ /**
+ * @this {WebInspector.StylesSidebarPane}
+ */
function refreshContents()
{
this._rebuildUpdate();
@@ -426,18 +410,6 @@
this._rebuildUpdate();
},
- _pseudoStateChanged: function(event)
- {
- // Do not update edited element styles under our feet.
- if (this._isEditingStyle || this._userOperation)
- return;
-
- if (!this._canAffectCurrentStyles(event.data))
- return;
-
- this._rebuildUpdate();
- },
-
_canAffectCurrentStyles: function(node)
{
return this.node && (this.node === node || node.parentNode === this.node.parentNode || node.isAncestor(this.node));
@@ -742,7 +714,6 @@
_colorFormatSettingChanged: function(event)
{
- this._updateColorFormatFilter();
for (var pseudoId in this.sections) {
var sections = this.sections[pseudoId];
for (var i = 0; i < sections.length; ++i)
@@ -750,28 +721,6 @@
}
},
- _updateColorFormatFilter: function()
- {
- // Select the correct color format setting again, since it needs to be selected.
- var selectedIndex = 0;
- var value = WebInspector.settings.colorFormat.get();
- var options = this.settingsSelectElement.options;
- for (var i = 0; i < options.length; ++i) {
- if (options[i].value === value) {
- selectedIndex = i;
- break;
- }
- }
- this.settingsSelectElement.selectedIndex = selectedIndex;
- },
-
- _changeSetting: function(event)
- {
- var options = this.settingsSelectElement.options;
- var selectedOption = options[this.settingsSelectElement.selectedIndex];
- WebInspector.settings.colorFormat.set(selectedOption.value);
- },
-
_createNewRule: function(event)
{
event.consume();
@@ -779,9 +728,12 @@
this.addBlankSection().startEditingSelector();
},
+ /**
+ * @return {!WebInspector.BlankStylePropertiesSection}
+ */
addBlankSection: function()
{
- var blankSection = new WebInspector.BlankStylePropertiesSection(this, this.node ? WebInspector.DOMPresentationUtils.appropriateSelectorFor(this.node, true) : "");
+ var blankSection = new WebInspector.BlankStylePropertiesSection(this, this.node ? WebInspector.DOMPresentationUtils.fullQualifiedSelector(this.node, true) : "");
var elementStyleSection = this.sections[0][1];
this._sectionsContainer.insertBefore(blankSection.element, elementStyleSection.element.nextSibling);
@@ -823,6 +775,10 @@
var inputs = [];
this._elementStatePane.inputs = inputs;
+ /**
+ * @param {?Event} event
+ * @this {WebInspector.StylesSidebarPane}
+ */
function clickListener(event)
{
var node = this._validateNode();
@@ -831,6 +787,11 @@
this._setPseudoClassCallback(node.id, event.target.state, event.target.checked);
}
+ /**
+ * @param {string} state
+ * @return {!Element}
+ * @this {WebInspector.StylesSidebarPane}
+ */
function createCheckbox(state)
{
var td = document.createElement("td");
@@ -917,24 +878,6 @@
WebInspector.ComputedStyleSidebarPane = function()
{
WebInspector.SidebarPane.call(this, WebInspector.UIString("Computed Style"));
- var showInheritedCheckbox = new WebInspector.Checkbox(WebInspector.UIString("Show inherited"), "sidebar-pane-subtitle");
- this.titleElement.appendChild(showInheritedCheckbox.element);
-
- if (WebInspector.settings.showInheritedComputedStyleProperties.get()) {
- this.bodyElement.classList.add("show-inherited");
- showInheritedCheckbox.checked = true;
- }
-
- function showInheritedToggleFunction()
- {
- WebInspector.settings.showInheritedComputedStyleProperties.set(showInheritedCheckbox.checked);
- if (WebInspector.settings.showInheritedComputedStyleProperties.get())
- this.bodyElement.classList.add("show-inherited");
- else
- this.bodyElement.classList.remove("show-inherited");
- }
-
- showInheritedCheckbox.addEventListener(showInheritedToggleFunction.bind(this));
}
WebInspector.ComputedStyleSidebarPane.prototype = {
@@ -950,6 +893,9 @@
*/
prepareContent: function(callback)
{
+ /**
+ * @this {WebInspector.ComputedStyleSidebarPane}
+ */
function wrappedCallback() {
this._hasFreshContent = true;
if (callback)
@@ -1024,7 +970,6 @@
// The "linkedStylesheet" case.
anchor = WebInspector.linkifyResourceAsNode(media.sourceURL, undefined, "subtitle", media.sourceURL);
}
- anchor.preferredPanel = "sources";
anchor.style.float = "right";
refElement.appendChild(anchor);
}
@@ -1076,7 +1021,7 @@
this._selectorContainer = selectorContainer;
if (isInherited)
- this.element.classList.add("show-inherited"); // This one is related to inherited rules, not computed style.
+ this.element.classList.add("styles-show-inherited"); // This one is related to inherited rules, not computed style.
if (this.navigable)
this.element.classList.add("navigable");
@@ -1096,6 +1041,15 @@
// Overriding with empty body.
},
+ handleClick: function()
+ {
+ // Avoid consuming events.
+ },
+
+ /**
+ * @param {string} propertyName
+ * @return {boolean}
+ */
isPropertyInherited: function(propertyName)
{
if (this.isInherited) {
@@ -1109,6 +1063,7 @@
/**
* @param {string} propertyName
* @param {boolean=} isShorthand
+ * @return {boolean}
*/
isPropertyOverloaded: function(propertyName, isShorthand)
{
@@ -1137,6 +1092,9 @@
return true;
},
+ /**
+ * @return {?WebInspector.StylePropertiesSection}
+ */
nextEditableSibling: function()
{
var curSection = this;
@@ -1153,6 +1111,9 @@
return (curSection && curSection.editable) ? curSection : null;
},
+ /**
+ * @return {?WebInspector.StylePropertiesSection}
+ */
previousEditableSibling: function()
{
var curSection = this;
@@ -1315,6 +1276,7 @@
/**
* @param {number=} index
+ * @return {!WebInspector.StylePropertyTreeElement}
*/
addNewBlankProperty: function(index)
{
@@ -1338,7 +1300,6 @@
function linkifyUncopyable(url, line)
{
var link = WebInspector.linkifyResourceAsNode(url, line, "", url + ":" + (line + 1));
- link.preferredPanel = "sources";
link.classList.add("webkit-html-resource-link");
link.setAttribute("data-uncopyable", link.textContent);
link.textContent = "";
@@ -1393,8 +1354,7 @@
var index = event.target._selectorIndex;
var styleSheetHeader = WebInspector.cssModel.styleSheetHeaderForId(this.rule.id.styleSheetId);
var uiLocation = styleSheetHeader.rawLocationToUILocation(this.rule.lineNumberInSource(index), this.rule.columnNumberInSource(index));
- if (uiLocation)
- WebInspector.panel("sources").showUILocation(uiLocation);
+ WebInspector.Revealer.reveal(uiLocation);
return;
}
this._startEditingOnMouseEvent();
@@ -1427,8 +1387,8 @@
element.scrollIntoViewIfNeeded(false);
element.textContent = element.textContent; // Reset selector marks in group.
- var config = new WebInspector.EditingConfig(this.editingSelectorCommitted.bind(this), this.editingSelectorCancelled.bind(this));
- WebInspector.startEditing(this._selectorElement, config);
+ var config = new WebInspector.InplaceEditor.Config(this.editingSelectorCommitted.bind(this), this.editingSelectorCancelled.bind(this));
+ WebInspector.InplaceEditor.startEditing(this._selectorElement, config);
window.getSelection().setBaseAndExtent(element, 0, element, 1);
this._parentPane._isEditingStyle = true;
@@ -1468,11 +1428,16 @@
if (newContent === oldContent) {
// Revert to a trimmed version of the selector if need be.
this._selectorElement.textContent = newContent;
- return this._moveEditorFromSelector(moveDirection);
+ this._moveEditorFromSelector(moveDirection);
+ return;
}
var selectedNode = this._parentPane.node;
+ /**
+ * @param {!WebInspector.CSSRule} newRule
+ * @this {WebInspector.StylePropertiesSection}
+ */
function successCallback(newRule)
{
var doesAffectSelectedNode = newRule.matchingSelectors.length > 0;
@@ -1493,6 +1458,9 @@
finishOperationAndMoveEditor.call(this, moveDirection);
}
+ /**
+ * @this {WebInspector.StylePropertiesSection}
+ */
function finishOperationAndMoveEditor(direction)
{
delete this._parentPane._userOperation;
@@ -1537,8 +1505,32 @@
WebInspector.ComputedStylePropertiesSection = function(stylesPane, styleRule, usedProperties)
{
WebInspector.PropertiesSection.call(this, "");
- this.headerElement.classList.add("hidden");
+
+ var showInheritedCheckbox = new WebInspector.Checkbox(WebInspector.UIString("Show inherited properties"), "sidebar-pane-subtitle");
+ this.headerElement.appendChild(showInheritedCheckbox.element);
+ this._hasFreshContent = false;
+
+ /**
+ * @this {WebInspector.ComputedStylePropertiesSection}
+ */
+ function showInheritedToggleFunction()
+ {
+ var showInherited = showInheritedCheckbox.checked;
+ WebInspector.settings.showInheritedComputedStyleProperties.set(showInherited);
+ if (showInherited)
+ this.element.classList.add("styles-show-inherited");
+ else
+ this.element.classList.remove("styles-show-inherited");
+ }
+
+ showInheritedCheckbox.addEventListener(showInheritedToggleFunction.bind(this));
+
this.element.className = "styles-section monospace read-only computed-style";
+ if (WebInspector.settings.showInheritedComputedStyleProperties.get()) {
+ this.element.classList.add("styles-show-inherited");
+ showInheritedCheckbox.checked = true;
+ }
+
this._stylesPane = stylesPane;
this.styleRule = styleRule;
this._usedProperties = usedProperties;
@@ -1678,6 +1670,10 @@
return;
}
+ /**
+ * @param {!WebInspector.CSSRule} newRule
+ * @this {WebInspector.StylePropertiesSection}
+ */
function successCallback(newRule)
{
var doesSelectorAffectSelectedNode = newRule.matchingSelectors.length > 0;
@@ -1776,6 +1772,9 @@
return this._inherited;
},
+ /**
+ * @return {boolean}
+ */
hasIgnorableError: function()
{
return !this.parsedOk && WebInspector.StylesSidebarPane._ignoreErrorsForProperty(this.property);
@@ -1904,6 +1903,7 @@
/**
* @param {string} url
* @return {!Node}
+ * @this {WebInspector.StylePropertyTreeElementBase}
*/
function linkifyURL(url)
{
@@ -1917,9 +1917,9 @@
hrefUrl = WebInspector.ParsedURL.completeURL(this._styleRule.sourceURL, hrefUrl);
else if (this.node())
hrefUrl = this.node().resolveURL(hrefUrl);
- var hasResource = !!WebInspector.resourceForURL(hrefUrl);
+ var hasResource = hrefUrl && !!WebInspector.resourceForURL(hrefUrl);
// FIXME: WebInspector.linkifyURLAsNode() should really use baseURI.
- container.appendChild(WebInspector.linkifyURLAsNode(hrefUrl, url, undefined, !hasResource));
+ container.appendChild(WebInspector.linkifyURLAsNode(hrefUrl || url, url, undefined, !hasResource));
container.appendChild(document.createTextNode(")"));
return container;
}
@@ -1975,7 +1975,8 @@
var spectrumHelper = this.editablePane() && this.editablePane()._spectrumHelper;
var spectrum = spectrumHelper ? spectrumHelper.spectrum() : null;
- var colorSwatch = new WebInspector.ColorSwatch();
+ var isEditable = !!(this._styleRule && this._styleRule.editable !== false); // |editable| is true by default.
+ var colorSwatch = new WebInspector.ColorSwatch(!isEditable);
colorSwatch.setColorString(text);
colorSwatch.element.addEventListener("click", swatchClick.bind(this), false);
@@ -1983,6 +1984,10 @@
var boundSpectrumChanged = spectrumChanged.bind(this);
var boundSpectrumHidden = spectrumHidden.bind(this);
+ /**
+ * @param {!WebInspector.Event} e
+ * @this {WebInspector.StylePropertyTreeElementBase}
+ */
function spectrumChanged(e)
{
var colorString = /** @type {string} */ (e.data);
@@ -1992,6 +1997,10 @@
this.applyStyleText(nameElement.textContent + ": " + valueElement.textContent, false, false, false);
}
+ /**
+ * @param {!WebInspector.Event} event
+ * @this {WebInspector.StylePropertyTreeElementBase}
+ */
function spectrumHidden(event)
{
if (scrollerElement)
@@ -2011,35 +2020,46 @@
spectrumHelper.reposition(colorSwatch.element);
}
+ /**
+ * @param {?Event} e
+ * @this {WebInspector.StylePropertyTreeElementBase}
+ */
function swatchClick(e)
{
+ e.consume(true);
+
// Shift + click toggles color formats.
// Click opens colorpicker, only if the element is not in computed styles section.
if (!spectrumHelper || e.shiftKey) {
- changeColorDisplay(e);
- } else {
- var visible = spectrumHelper.toggle(colorSwatch.element, color, format);
-
- if (visible) {
- spectrum.displayText = color.toString(format);
- this.originalPropertyText = this.property.propertyText;
- this.editablePane()._isEditingStyle = true;
- spectrum.addEventListener(WebInspector.Spectrum.Events.ColorChanged, boundSpectrumChanged);
- spectrumHelper.addEventListener(WebInspector.SpectrumPopupHelper.Events.Hidden, boundSpectrumHidden);
-
- scrollerElement = colorSwatch.element.enclosingNodeOrSelfWithClass("scroll-target");
- if (scrollerElement)
- scrollerElement.addEventListener("scroll", repositionSpectrum, false);
- else
- console.error("Unable to handle color picker scrolling");
- }
+ changeColorDisplay();
+ return;
}
- e.consume(true);
+
+ if (!isEditable)
+ return;
+
+ var visible = spectrumHelper.toggle(colorSwatch.element, color, format);
+ if (visible) {
+ spectrum.displayText = color.toString(format);
+ this.originalPropertyText = this.property.propertyText;
+ this.editablePane()._isEditingStyle = true;
+ spectrum.addEventListener(WebInspector.Spectrum.Events.ColorChanged, boundSpectrumChanged);
+ spectrumHelper.addEventListener(WebInspector.SpectrumPopupHelper.Events.Hidden, boundSpectrumHidden);
+
+ scrollerElement = colorSwatch.element.enclosingNodeOrSelfWithClass("scroll-target");
+ if (scrollerElement)
+ scrollerElement.addEventListener("scroll", repositionSpectrum, false);
+ else
+ console.error("Unable to handle color picker scrolling");
+ }
}
var colorValueElement = document.createElement("span");
colorValueElement.textContent = color.toString(format);
+ /**
+ * @param {string} curFormat
+ */
function nextFormat(curFormat)
{
// The format loop is as follows:
@@ -2086,7 +2106,7 @@
}
}
- function changeColorDisplay(event)
+ function changeColorDisplay()
{
do {
format = nextFormat(format);
@@ -2213,6 +2233,9 @@
return this.treeOutline && this.treeOutline.section;
},
+ /**
+ * @param {function()=} userCallback
+ */
_updatePane: function(userCallback)
{
var section = this.section();
@@ -2231,6 +2254,10 @@
{
var disabled = !event.target.checked;
+ /**
+ * @param {?WebInspector.CSSStyleDeclaration} newStyle
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function callback(newStyle)
{
if (!newStyle)
@@ -2263,11 +2290,13 @@
var longhandProperties = this.style.longhandProperties(this.name);
for (var i = 0; i < longhandProperties.length; ++i) {
var name = longhandProperties[i].name;
+ var inherited = false;
+ var overloaded = false;
var section = this.section();
if (section) {
- var inherited = section.isPropertyInherited(name);
- var overloaded = section.isPropertyOverloaded(name);
+ inherited = section.isPropertyInherited(name);
+ overloaded = section.isPropertyOverloaded(name);
}
var liveProperty = this.style.getLiveProperty(name);
@@ -2353,11 +2382,7 @@
{
console.assert(this.section().navigable);
var propertyNameClicked = element === this.nameElement;
- var uiLocation = this.property.uiLocation(propertyNameClicked);
- if (!uiLocation)
- return;
-
- WebInspector.panel("sources").showUILocation(uiLocation);
+ WebInspector.Revealer.reveal(this.property.uiLocation(propertyNameClicked));
},
/**
@@ -2438,6 +2463,9 @@
selectElement.parentElement.classList.add("child-editing");
selectElement.textContent = selectElement.textContent; // remove color swatch and the like
+ /**
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function pasteHandler(context, event)
{
var data = event.clipboardData.getData("Text");
@@ -2465,6 +2493,9 @@
this.editingCommitted(event.target.textContent, context, "forward");
}
+ /**
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function blurListener(context, event)
{
var treeElement = this._parentPane._mouseDownTreeElement;
@@ -2494,7 +2525,7 @@
proxyElement.addEventListener("keydown", this.editingNameValueKeyDown.bind(this, context), false);
if (isEditingName)
- proxyElement.addEventListener("paste", pasteHandler.bind(this, context));
+ proxyElement.addEventListener("paste", pasteHandler.bind(this, context), false);
window.getSelection().setBaseAndExtent(selectElement, 0, selectElement, 1);
},
@@ -2568,6 +2599,9 @@
if (this._applyFreeFlowStyleTextEditTimer)
clearTimeout(this._applyFreeFlowStyleTextEditTimer);
+ /**
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function apply()
{
var valueText = this.valueElement.textContent;
@@ -2689,7 +2723,10 @@
moveToNextCallback.call(this, this._newProperty, false, section);
}
- // The Callback to start editing the next/previous property/selector.
+ /**
+ * The Callback to start editing the next/previous property/selector.
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function moveToNextCallback(alreadyNew, valueChanged, section)
{
if (!moveDirection)
@@ -2800,6 +2837,12 @@
if (updateInterface)
this._parentPane._userOperation = true;
+ /**
+ * @param {function()} userCallback
+ * @param {string} originalPropertyText
+ * @param {?WebInspector.CSSStyleDeclaration} newStyle
+ * @this {WebInspector.StylePropertyTreeElement}
+ */
function callback(userCallback, originalPropertyText, newStyle)
{
if (!newStyle) {
@@ -2837,11 +2880,18 @@
this.property.setText(styleText, majorChange, overwriteProperty, callback.bind(this, userOperationFinishedCallback.bind(null, this._parentPane, updateInterface), this.originalPropertyText));
},
+ /**
+ * @return {boolean}
+ */
ondblclick: function()
{
return true; // handled
},
+ /**
+ * @param {?Event} event
+ * @return {boolean}
+ */
isEventWithinDisclosureTriangle: function(event)
{
return event.target === this._expandElement;
@@ -2871,6 +2921,10 @@
}
WebInspector.StylesSidebarPane.CSSPropertyPrompt.prototype = {
+ /**
+ * @param {?Event} event
+ * @return {boolean}
+ */
onKeyDown: function(event)
{
switch (event.keyIdentifier) {
@@ -2880,18 +2934,18 @@
case "PageDown":
if (this._handleNameOrValueUpDown(event)) {
event.preventDefault();
- return;
+ return true;
}
break;
case "Enter":
if (this.autoCompleteElement && !this.autoCompleteElement.textContent.length) {
this.tabKeyPressed();
- return;
+ return true;
}
break;
}
- WebInspector.TextPrompt.prototype.onKeyDown.call(this, event);
+ return WebInspector.TextPrompt.prototype.onKeyDown.call(this, event);
},
onMouseWheel: function(event)
@@ -2903,7 +2957,10 @@
WebInspector.TextPrompt.prototype.onMouseWheel.call(this, event);
},
- /** @override */
+ /**
+ * @override
+ * @return {boolean}
+ */
tabKeyPressed: function()
{
this.acceptAutoComplete();
@@ -2914,9 +2971,15 @@
/**
* @param {?Event} event
+ * @return {boolean}
*/
_handleNameOrValueUpDown: function(event)
{
+ /**
+ * @param {string} originalValue
+ * @param {string} replacementString
+ * @this {WebInspector.StylesSidebarPane.CSSPropertyPrompt}
+ */
function finishHandler(originalValue, replacementString)
{
// Synthesize property text disregarding any comments, custom whitespace etc.
diff --git a/Source/devtools/front_end/StylesSourceMapping.js b/Source/devtools/front_end/StylesSourceMapping.js
index 0b39267..3417068 100644
--- a/Source/devtools/front_end/StylesSourceMapping.js
+++ b/Source/devtools/front_end/StylesSourceMapping.js
@@ -221,6 +221,11 @@
}
this._isSettingContent = true;
+
+ /**
+ * @param {?Protocol.Error} error
+ * @this {WebInspector.StylesSourceMapping}
+ */
function callback(error)
{
userCallback(error);
@@ -266,39 +271,28 @@
delete this._updateStyleSheetTextTimer;
}
- CSSAgent.getStyleSheetText(styleSheetId, callback.bind(this));
-
- /**
- * @param {?string} error
- * @param {string} content
- */
- function callback(error, content)
- {
- if (!error)
- this._innerStyleSheetChanged(styleSheetId, content);
- }
- },
-
- /**
- * @param {!CSSAgent.StyleSheetId} styleSheetId
- * @param {string} content
- */
- _innerStyleSheetChanged: function(styleSheetId, content)
- {
var header = this._cssModel.styleSheetHeaderForId(styleSheetId);
if (!header)
return;
var styleSheetURL = header.resourceURL();
if (!styleSheetURL)
return;
-
var uiSourceCode = this._workspace.uiSourceCodeForURL(styleSheetURL)
if (!uiSourceCode)
return;
+ header.requestContent(callback.bind(this, uiSourceCode));
- var styleFile = this._styleFiles.get(uiSourceCode);
- if (styleFile)
- styleFile.addRevision(content);
+ /**
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ * @param {?string} content
+ * @this {WebInspector.StylesSourceMapping}
+ */
+ function callback(uiSourceCode, content)
+ {
+ var styleFile = this._styleFiles.get(uiSourceCode);
+ if (styleFile)
+ styleFile.addRevision(content || "");
+ }
}
}
@@ -317,8 +311,6 @@
WebInspector.StyleFile.updateTimeout = 200;
-WebInspector.StyleFile.sourceURLRegex = /\n[\040\t]*\/\*#[\040\t]sourceURL=[\040\t]*([^\s]*)[\040\t]*\*\/[\040\t]*$/m;
-
WebInspector.StyleFile.prototype = {
_workingCopyCommitted: function(event)
{
@@ -372,8 +364,6 @@
addRevision: function(content)
{
this._isAddingRevision = true;
- if (this._uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem)
- content = content.replace(WebInspector.StyleFile.sourceURLRegex, "");
this._uiSourceCode.addRevision(content);
delete this._isAddingRevision;
},
diff --git a/Source/devtools/front_end/SuggestBox.js b/Source/devtools/front_end/SuggestBox.js
index a9f3c60..567bb54 100644
--- a/Source/devtools/front_end/SuggestBox.js
+++ b/Source/devtools/front_end/SuggestBox.js
@@ -112,6 +112,12 @@
this._anchorBox = anchorBox;
anchorBox = anchorBox || this._anchorElement.boxInWindow(window);
+ // Position relative to main DevTools element.
+ var container = WebInspector.inspectorView.devtoolsElement();
+ anchorBox = anchorBox.relativeToElement(container);
+ var totalWidth = container.offsetWidth;
+ var totalHeight = container.offsetHeight;
+
// Measure the content element box.
this.contentElement.style.display = "inline-block";
document.body.appendChild(this.contentElement);
@@ -125,20 +131,20 @@
const suggestBoxPaddingX = 21;
const suggestBoxPaddingY = 2;
- var maxWidth = document.body.offsetWidth - anchorBox.x - spacer;
+ var maxWidth = totalWidth - anchorBox.x - spacer;
var width = Math.min(contentWidth, maxWidth - suggestBoxPaddingX) + suggestBoxPaddingX;
var paddedWidth = contentWidth + suggestBoxPaddingX;
var boxX = anchorBox.x;
if (width < paddedWidth) {
- // Shift the suggest box to the left to accommodate the content without trimming to the BODY edge.
- maxWidth = document.body.offsetWidth - spacer;
+ // Shift the suggest box to the left to accommodate the content without trimming to the container edge.
+ maxWidth = totalWidth - spacer;
width = Math.min(contentWidth, maxWidth - suggestBoxPaddingX) + suggestBoxPaddingX;
- boxX = document.body.offsetWidth - width;
+ boxX = totalWidth - width;
}
var boxY;
var aboveHeight = anchorBox.y;
- var underHeight = document.body.offsetHeight - anchorBox.y - anchorBox.height;
+ var underHeight = totalHeight - anchorBox.y - anchorBox.height;
var maxHeight = this._maxItemsHeight ? contentHeight * this._maxItemsHeight / this._length : Math.max(underHeight, aboveHeight) - spacer;
var height = Math.min(contentHeight, maxHeight - suggestBoxPaddingY) + suggestBoxPaddingY;
@@ -154,7 +160,7 @@
this._element.classList.add("above-anchor");
}
- this._element.positionAt(boxX, boxY);
+ this._element.positionAt(boxX, boxY, container);
this._element.style.width = width + "px";
this._element.style.height = height + "px";
},
diff --git a/Source/devtools/front_end/TabbedEditorContainer.js b/Source/devtools/front_end/TabbedEditorContainer.js
index ac1393c..8969db7 100644
--- a/Source/devtools/front_end/TabbedEditorContainer.js
+++ b/Source/devtools/front_end/TabbedEditorContainer.js
@@ -111,6 +111,17 @@
},
/**
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ */
+ closeFile: function(uiSourceCode)
+ {
+ var tabId = this._tabIds.get(uiSourceCode);
+ if (!tabId)
+ return;
+ this._closeTabs([tabId]);
+ },
+
+ /**
* @return {!Array.<!WebInspector.UISourceCode>}
*/
historyUISourceCodes: function()
@@ -183,7 +194,8 @@
this._currentView = this.visibleView;
this._addScrollAndSelectionListeners();
- this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorSelected, this._currentFile);
+ var eventData = { currentFile: this._currentFile, userGesture: userGesture };
+ this.dispatchEventToListeners(WebInspector.TabbedEditorContainer.Events.EditorSelected, eventData);
},
/**
@@ -316,7 +328,11 @@
_updateHistory: function()
{
var tabIds = this._tabbedPane.lastOpenedTabIds(WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount);
-
+
+ /**
+ * @param {string} tabId
+ * @this {WebInspector.TabbedEditorContainer}
+ */
function tabIdToURI(tabId)
{
return this._files[tabId].uri();
@@ -535,9 +551,7 @@
serializedHistoryItem.selectionRange = this.selectionRange;
serializedHistoryItem.scrollLineNumber = this.scrollLineNumber;
return serializedHistoryItem;
- },
-
- __proto__: WebInspector.Object.prototype
+ }
}
/**
@@ -694,9 +708,7 @@
for (var i = 0; i < this._items.length; ++i)
result.push(this._items[i].url);
return result;
- },
-
- __proto__: WebInspector.Object.prototype
+ }
}
/**
diff --git a/Source/devtools/front_end/TabbedPane.js b/Source/devtools/front_end/TabbedPane.js
index e27c481..177ed48 100644
--- a/Source/devtools/front_end/TabbedPane.js
+++ b/Source/devtools/front_end/TabbedPane.js
@@ -94,11 +94,13 @@
},
/**
- * @param {boolean} retainTabsOrder
+ * @param {boolean} retainTabOrder
+ * @param {function(string, string):number=} tabOrderComparator
*/
- setRetainTabsOrder: function(retainTabsOrder)
+ setRetainTabOrder: function(retainTabOrder, tabOrderComparator)
{
- this._retainTabsOrder = retainTabsOrder;
+ this._retainTabOrder = retainTabOrder;
+ this._tabOrderComparator = tabOrderComparator;
},
/**
@@ -109,6 +111,14 @@
return this.visibleView ? this.visibleView.defaultFocusedElement() : null;
},
+ focus: function()
+ {
+ if (this.visibleView)
+ this.visibleView.focus();
+ else
+ WebInspector.View.prototype.focus.call(this);
+ },
+
/**
* @return {!Element}
*/
@@ -153,10 +163,25 @@
tab.setDelegate(this._delegate);
this._tabsById[id] = tab;
- this._tabs.push(tab);
+ /**
+ * @param {!WebInspector.TabbedPaneTab} tab1
+ * @param {!WebInspector.TabbedPaneTab} tab2
+ * @this {WebInspector.TabbedPane}
+ * @return {number}
+ */
+ function comparator(tab1, tab2)
+ {
+ return this._tabOrderComparator(tab1.id, tab2.id);
+ }
+
+ if (this._retainTabOrder && this._tabOrderComparator)
+ this._tabs.splice(insertionIndexForObjectInListSortedByFunction(tab, this._tabs, comparator.bind(this)), 0, tab);
+ else
+ this._tabs.push(tab);
+
this._tabsHistory.push(tab);
- if (this._tabsHistory[0] === tab)
+ if (this._tabsHistory[0] === tab && this.isShowing())
this.selectTab(tab.id, userGesture);
this._updateTabElements();
@@ -269,7 +294,6 @@
var eventData = { tabId: id, view: tab.view, isUserGesture: userGesture };
this.dispatchEventToListeners(WebInspector.TabbedPane.EventTypes.TabSelected, eventData);
- return true;
},
/**
@@ -341,6 +365,18 @@
this._updateTabElements();
},
+ headerResized: function()
+ {
+ this._updateTabElements();
+ },
+
+ wasShown: function()
+ {
+ var effectiveTab = this._currentTab || this._tabsHistory[0];
+ if (effectiveTab)
+ this.selectTab(effectiveTab.id);
+ },
+
_updateTabElements: function()
{
WebInspector.invokeOnceAfterBatchUpdate(this, this._innerUpdateTabElements);
@@ -410,6 +446,7 @@
dropDownButton.appendChild(document.createTextNode("\u00bb"));
this._tabsSelect = dropDownButton.createChild("select", "tabbed-pane-header-tabs-drop-down-select");
this._tabsSelect.addEventListener("change", this._tabsSelectChanged.bind(this), false);
+ this._tabsSelect.addEventListener("mousedown", consumeEvent, false);
return dropDownContainer;
},
@@ -452,7 +489,7 @@
{
return tab1.title.localeCompare(tab2.title);
}
- if (!this._retainTabsOrder)
+ if (!this._retainTabOrder)
tabsToShow.sort(compareFunction);
var selectedIndex = -1;
@@ -573,7 +610,7 @@
var totalTabsWidth = 0;
var tabCount = tabsOrdered.length;
for (var i = 0; i < tabCount; ++i) {
- var tab = this._retainTabsOrder ? tabsOrdered[i] : tabsHistory[i];
+ var tab = this._retainTabOrder ? tabsOrdered[i] : tabsHistory[i];
totalTabsWidth += tab.width();
var minimalRequiredWidth = totalTabsWidth;
if (i !== tabCount - 1)
@@ -617,10 +654,11 @@
/**
* @override
+ * @return {boolean}
*/
canHighlightPosition: function()
{
- return this._currentTab && this._currentTab.view && this._currentTab.view.canHighlightPosition();
+ return !!(this._currentTab && this._currentTab.view && this._currentTab.view.canHighlightPosition());
},
/**
@@ -904,19 +942,28 @@
_tabContextMenu: function(event)
{
+ /**
+ * @this {WebInspector.TabbedPaneTab}
+ */
function close()
{
this._closeTabs([this.id]);
}
+ /**
+ * @this {WebInspector.TabbedPaneTab}
+ */
function closeOthers()
{
this._closeTabs(this._tabbedPane.otherTabs(this.id));
}
+ /**
+ * @this {WebInspector.TabbedPaneTab}
+ */
function closeAll()
{
- this._closeTabs(this._tabbedPane.allTabs(this.id));
+ this._closeTabs(this._tabbedPane.allTabs());
}
var contextMenu = new WebInspector.ContextMenu(event);
diff --git a/Source/devtools/front_end/TempFile.js b/Source/devtools/front_end/TempFile.js
index 42b0583..2c2bcd4 100644
--- a/Source/devtools/front_end/TempFile.js
+++ b/Source/devtools/front_end/TempFile.js
@@ -41,24 +41,43 @@
this._fileEntry = null;
this._writer = null;
+ /**
+ * @param {!FileSystem} fs
+ * @this {WebInspector.TempFile}
+ */
function didInitFs(fs)
{
fs.root.getDirectory(dirPath, { create: true }, didGetDir.bind(this), boundErrorHandler);
}
+ /**
+ * @param {!DirectoryEntry} dir
+ * @this {WebInspector.TempFile}
+ */
function didGetDir(dir)
{
dir.getFile(name, { create: true }, didCreateFile.bind(this), boundErrorHandler);
}
+ /**
+ * @param {!FileEntry} fileEntry
+ * @this {WebInspector.TempFile}
+ */
function didCreateFile(fileEntry)
{
this._fileEntry = fileEntry;
fileEntry.createWriter(didCreateWriter.bind(this), boundErrorHandler);
}
+ /**
+ * @param {!FileWriter} writer
+ * @this {WebInspector.TempFile}
+ */
function didCreateWriter(writer)
{
+ /**
+ * @this {WebInspector.TempFile}
+ */
function didTruncate(e)
{
this._writer = writer;
@@ -88,43 +107,68 @@
WebInspector.ConsoleMessage.MessageLevel.Error);
callback(null);
}
+
var boundErrorHandler = errorHandler.bind(this)
- window.requestFileSystem(window.TEMPORARY, 10, didInitFs.bind(this), errorHandler.bind(this));
+ /**
+ * @this {WebInspector.TempFile}
+ */
+ function didClearTempStorage()
+ {
+ window.requestFileSystem(window.TEMPORARY, 10, didInitFs.bind(this), boundErrorHandler);
+ }
+ WebInspector.TempFile._ensureTempStorageCleared(didClearTempStorage.bind(this));
}
WebInspector.TempFile.prototype = {
/**
* @param {!string} data
+ * @param {!function(boolean)} callback
*/
- write: function(data)
+ write: function(data, callback)
{
var blob = new Blob([data], {type: 'text/plain'});
this._writer.onerror = function(e)
{
WebInspector.log("Failed to write into a temp file: " + e.message,
WebInspector.ConsoleMessage.MessageLevel.Error);
+ callback(false);
+ }
+ this._writer.onwrite = function(e)
+ {
+ callback(true);
}
this._writer.write(blob);
+ },
+
+ finishWriting: function()
+ {
this._writer = null;
},
/**
- * @param {!function(?string)} callback
+ * @param {function(?string)} callback
*/
read: function(callback)
{
+ /**
+ * @param {!File} file
+ * @this {WebInspector.TempFile}
+ */
function didGetFile(file)
{
var reader = new FileReader();
+
+ /**
+ * @this {FileReader}
+ */
reader.onloadend = function(e)
{
- callback(this.result);
+ callback(/** @type {?string} */ (this.result));
}
reader.onerror = function(error)
{
WebInspector.log("Failed to read from temp file: " + error.message,
WebInspector.ConsoleMessage.MessageLevel.Error);
- callback(null);
}
reader.readAsText(file);
}
@@ -132,7 +176,190 @@
{
WebInspector.log("Failed to load temp file: " + error.message,
WebInspector.ConsoleMessage.MessageLevel.Error);
+ callback(null);
}
this._fileEntry.file(didGetFile.bind(this), didFailToGetFile.bind(this));
+ },
+
+ /**
+ * @param {!WebInspector.OutputStream} outputStream
+ * @param {!WebInspector.OutputStreamDelegate} delegate
+ */
+ writeToOutputSteam: function(outputStream, delegate)
+ {
+ /**
+ * @param {!File} file
+ * @this {WebInspector.TempFile}
+ */
+ function didGetFile(file)
+ {
+ var reader = new WebInspector.ChunkedFileReader(file, 10*1000*1000, delegate);
+ reader.start(outputStream);
+ }
+ function didFailToGetFile(error)
+ {
+ WebInspector.log("Failed to load temp file: " + error.message,
+ WebInspector.ConsoleMessage.MessageLevel.Error);
+ outputStream.close();
+ }
+ this._fileEntry.file(didGetFile.bind(this), didFailToGetFile.bind(this));
+ },
+
+ remove: function()
+ {
+ if (this._fileEntry)
+ this._fileEntry.remove(function() {});
}
}
+
+/**
+ * @constructor
+ * @param {!string} dirPath
+ * @param {!string} name
+ */
+WebInspector.BufferedTempFileWriter = function(dirPath, name)
+{
+ this._chunks = [];
+ this._tempFile = null;
+ this._isWriting = false;
+ this._finishCallback = null;
+ this._isFinished = false;
+ new WebInspector.TempFile(dirPath, name, this._didCreateTempFile.bind(this));
+}
+
+WebInspector.BufferedTempFileWriter.prototype = {
+ /**
+ * @param {!string} data
+ */
+ write: function(data)
+ {
+ if (!this._chunks)
+ return;
+ if (this._finishCallback)
+ throw new Error("Now writes are allowed after close.");
+ this._chunks.push(data);
+ if (this._tempFile && !this._isWriting)
+ this._writeNextChunk();
+ },
+
+ /**
+ * @param {!function(?WebInspector.TempFile)} callback
+ */
+ close: function(callback)
+ {
+ this._finishCallback = callback;
+ if (this._isFinished)
+ callback(this._tempFile);
+ else if (!this._isWriting && !this._chunks.length)
+ this._notifyFinished();
+ },
+
+ _didCreateTempFile: function(tempFile)
+ {
+ this._tempFile = tempFile;
+ if (!tempFile) {
+ this._chunks = null;
+ this._notifyFinished();
+ return;
+ }
+ if (this._chunks.length)
+ this._writeNextChunk();
+ },
+
+ _writeNextChunk: function()
+ {
+ var chunkSize = 0;
+ var endIndex = 0;
+ for (; endIndex < this._chunks.length; endIndex++) {
+ chunkSize += this._chunks[endIndex].length;
+ if (chunkSize > 10 * 1000 * 1000)
+ break;
+ }
+ var chunk = this._chunks.slice(0, endIndex + 1).join("");
+ this._chunks.splice(0, endIndex + 1);
+ this._isWriting = true;
+ this._tempFile.write(chunk, this._didWriteChunk.bind(this));
+ },
+
+ _didWriteChunk: function(success)
+ {
+ this._isWriting = false;
+ if (!success) {
+ this._tempFile = null;
+ this._chunks = null;
+ this._notifyFinished();
+ return;
+ }
+ if (this._chunks.length)
+ this._writeNextChunk();
+ else if (this._finishCallback)
+ this._notifyFinished();
+ },
+
+ _notifyFinished: function()
+ {
+ this._isFinished = true;
+ if (this._tempFile)
+ this._tempFile.finishWriting();
+ if (this._finishCallback)
+ this._finishCallback(this._tempFile);
+ }
+}
+
+/**
+ * @constructor
+ */
+WebInspector.TempStorageCleaner = function()
+{
+ this._worker = new SharedWorker("TempStorageSharedWorker.js", "TempStorage");
+ this._callbacks = [];
+ this._worker.port.onmessage = this._handleMessage.bind(this);
+ this._worker.port.onerror = this._handleError.bind(this);
+}
+
+WebInspector.TempStorageCleaner.prototype = {
+ /**
+ * @param {!function()} callback
+ */
+ ensureStorageCleared: function(callback)
+ {
+ if (this._callbacks)
+ this._callbacks.push(callback);
+ else
+ callback();
+ },
+
+ _handleMessage: function(event)
+ {
+ if (event.data.type === "tempStorageCleared") {
+ if (event.data.error)
+ WebInspector.log(event.data.error, WebInspector.ConsoleMessage.MessageLevel.Error);
+ this._notifyCallbacks();
+ }
+ },
+
+ _handleError: function(event)
+ {
+ WebInspector.log(WebInspector.UIString("Failed to clear temp storage: %s", event.data),
+ WebInspector.ConsoleMessage.MessageLevel.Error);
+ this._notifyCallbacks();
+ },
+
+ _notifyCallbacks: function()
+ {
+ var callbacks = this._callbacks;
+ this._callbacks = null;
+ for (var i = 0; i < callbacks.length; i++)
+ callbacks[i]();
+ }
+}
+
+/**
+ * @param {!function()} callback
+ */
+WebInspector.TempFile._ensureTempStorageCleared = function(callback)
+{
+ if (!WebInspector.TempFile._storageCleaner)
+ WebInspector.TempFile._storageCleaner = new WebInspector.TempStorageCleaner();
+ WebInspector.TempFile._storageCleaner.ensureStorageCleared(callback);
+}
diff --git a/Source/devtools/front_end/TempStorageSharedWorker.js b/Source/devtools/front_end/TempStorageSharedWorker.js
new file mode 100644
index 0000000..beda631
--- /dev/null
+++ b/Source/devtools/front_end/TempStorageSharedWorker.js
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+var ports = [];
+var isTempStorageCleared = false;
+/**
+ * @type {string}
+ */
+var tempStorageError;
+
+/**
+ * @param {!MessageEvent} event
+ */
+self.onconnect = function(event)
+{
+ var newPort = /** @type {!MessagePort} */ (event.ports[0]);
+ if (isTempStorageCleared) {
+ notifyTempStorageCleared(newPort);
+ return;
+ }
+
+ newPort.onmessage = handleMessage;
+ newPort.onerror = handleError;
+ ports.push(newPort);
+
+ if (ports.length === 1)
+ clearTempStorage();
+}
+
+function clearTempStorage()
+{
+ function didFail(e)
+ {
+ tempStorageError = "Failed to clear temp storage: " + e.message + " " + e.name;
+ console.error(tempStorageError);
+ didClearTempStorage();
+ }
+ /**
+ * @param {!FileSystem} fs
+ */
+ function didGetFS(fs)
+ {
+ fs.root.createReader().readEntries(didReadEntries, didFail);
+ }
+ /**
+ * @param {!Array.<!Entry>} entries
+ */
+ function didReadEntries(entries)
+ {
+ var remainingEntries = entries.length;
+ if (!remainingEntries) {
+ didClearTempStorage();
+ return;
+ }
+ function didDeleteEntry()
+ {
+ if (!--remainingEntries)
+ didClearTempStorage();
+ }
+ function failedToDeleteEntry(e)
+ {
+ tempStorageError = "Failed to delete entry: " + e.message + " " + e.name;
+ console.error(tempStorageError);
+ didDeleteEntry();
+ }
+ for (var i = 0; i < entries.length; i++) {
+ var entry = entries[i];
+ if (entry.isFile)
+ entry.remove(didDeleteEntry, failedToDeleteEntry);
+ else
+ entry.removeRecursively(didDeleteEntry, failedToDeleteEntry);
+ }
+ }
+ self.webkitRequestFileSystem(self.TEMPORARY, 10, didGetFS, didFail);
+}
+
+function didClearTempStorage()
+{
+ isTempStorageCleared = true;
+ for (var i = 0; i < ports.length; i++)
+ notifyTempStorageCleared(ports[i]);
+ ports = null;
+}
+
+/**
+ * @param {!MessagePort} port
+ */
+function notifyTempStorageCleared(port)
+{
+ port.postMessage({
+ type: "tempStorageCleared",
+ error: tempStorageError
+ });
+}
+
+function handleMessage(event)
+{
+ if (event.data.type === "disconnect")
+ removePort(event.target);
+}
+
+function handleError(event)
+{
+ console.error("Error: " + event.data);
+ removePort(event.target);
+}
+
+function removePort(port)
+{
+ if (!ports)
+ return;
+ var index = ports.indexOf(port);
+ ports.splice(index, 1);
+}
diff --git a/Source/devtools/front_end/Tests.js b/Source/devtools/front_end/Tests.js
index 745c6cc..fd7c873 100644
--- a/Source/devtools/front_end/Tests.js
+++ b/Source/devtools/front_end/Tests.js
@@ -611,6 +611,7 @@
TestSuite.prototype.testPageOverlayUpdate = function()
{
var test = this;
+ WebInspector.panel("elements");
function populatePage()
{
@@ -628,12 +629,12 @@
{
test.evaluateInConsole_(populatePage.toString() + "; populatePage();" +
"inspect(document.getElementById('div1'))", function() {});
- WebInspector.notifications.addEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, step2);
+ WebInspector.notifications.addEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, step2);
}
function step2()
{
- WebInspector.notifications.removeEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, step2);
+ WebInspector.notifications.removeEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, step2);
test.recordTimeline(onTimelineRecorded);
setTimeout(step3, 500);
}
@@ -641,12 +642,12 @@
function step3()
{
test.evaluateInConsole_("inspect(document.getElementById('div2'))", function() {});
- WebInspector.notifications.addEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, step4);
+ WebInspector.notifications.addEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, step4);
}
function step4()
{
- WebInspector.notifications.removeEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, step4);
+ WebInspector.notifications.removeEventListener(WebInspector.NotificationService.Events.SelectedNodeChanged, step4);
test.stopTimeline();
}
diff --git a/Source/devtools/front_end/TextEditor.js b/Source/devtools/front_end/TextEditor.js
index 756e5c5..7771e8a 100644
--- a/Source/devtools/front_end/TextEditor.js
+++ b/Source/devtools/front_end/TextEditor.js
@@ -275,6 +275,33 @@
* @param {?WebInspector.CompletionDictionary} dictionary
*/
setCompletionDictionary: function(dictionary) { },
+
+ /**
+ * @param {number} lineNumber
+ * @param {number} columnNumber
+ * @return {?WebInspector.TextEditorPositionHandle}
+ */
+ textEditorPositionHandle: function(lineNumber, columnNumber) { }
+}
+
+/**
+ * @interface
+ */
+WebInspector.TextEditorPositionHandle = function()
+{
+}
+
+WebInspector.TextEditorPositionHandle.prototype = {
+ /**
+ * @return {?{lineNumber: number, columnNumber: number}}
+ */
+ resolve: function() { },
+
+ /**
+ * @param {!WebInspector.TextEditorPositionHandle} positionHandle
+ * @return {boolean}
+ */
+ equal: function(positionHandle) { }
}
/**
@@ -320,5 +347,24 @@
* @param {boolean} isExternal
* @return {!Element}
*/
- createLink: function(hrefValue, isExternal) { }
+ createLink: function(hrefValue, isExternal) { },
+
+ /**
+ * @param {?WebInspector.TextRange} from
+ * @param {?WebInspector.TextRange} to
+ */
+ onJumpToPosition: function(from, to) { }
}
+
+/**
+ * @interface
+ */
+WebInspector.TokenizerFactory = function() { }
+
+WebInspector.TokenizerFactory.prototype = {
+ /**
+ * @param {string} mimeType
+ * @return {function(string, function(string, ?string, number, number))}
+ */
+ createTokenizer: function(mimeType) { }
+}
\ No newline at end of file
diff --git a/Source/devtools/front_end/TextPrompt.js b/Source/devtools/front_end/TextPrompt.js
index c7100d5..a9c4f3b 100644
--- a/Source/devtools/front_end/TextPrompt.js
+++ b/Source/devtools/front_end/TextPrompt.js
@@ -29,7 +29,7 @@
/**
* @constructor
- * @extends WebInspector.Object
+ * @extends {WebInspector.Object}
* @implements {WebInspector.SuggestBoxDelegate}
* @param {function(!Element, !Range, boolean, function(!Array.<string>, number=))} completions
* @param {string=} stopCharacters
@@ -74,6 +74,7 @@
* they should use the result of this method to attach listeners for bubbling events.
*
* @param {!Element} element
+ * @return {!Element}
*/
attach: function(element)
{
@@ -88,6 +89,7 @@
*
* @param {!Element} element
* @param {function(!Event)} blurListener
+ * @return {!Element}
*/
attachAndStartEditing: function(element, blurListener)
{
@@ -98,6 +100,7 @@
/**
* @param {!Element} element
+ * @return {!Element}
*/
_attachInternal: function(element)
{
@@ -213,6 +216,9 @@
this._removeSuggestionAids();
+ /**
+ * @this {WebInspector.TextPrompt}
+ */
function moveBackIfOutside()
{
delete this._selectionTimeout;
@@ -254,6 +260,7 @@
/**
* @param {?Event} event
+ * @return {boolean}
*/
onKeyDown: function(event)
{
@@ -505,6 +512,7 @@
finalSelectionRange.setEnd(prefixTextNode, wordPrefixLength);
selection.removeAllRanges();
selection.addRange(finalSelectionRange);
+ this.dispatchEventToListeners(WebInspector.TextPrompt.Events.ItemApplied);
}
},
@@ -860,6 +868,7 @@
/**
* @override
+ * @return {boolean}
*/
defaultKeyHandler: function(event, force)
{
diff --git a/Source/devtools/front_end/TextRange.js b/Source/devtools/front_end/TextRange.js
index 01b093e..b7b6c05 100644
--- a/Source/devtools/front_end/TextRange.js
+++ b/Source/devtools/front_end/TextRange.js
@@ -96,6 +96,9 @@
return this.endLine - this.startLine;
},
+ /**
+ * @return {!WebInspector.TextRange}
+ */
collapseToEnd: function()
{
return new WebInspector.TextRange(this.endLine, this.endColumn, this.endLine, this.endColumn);
@@ -151,6 +154,16 @@
},
/**
+ * @param {!WebInspector.TextRange} other
+ * @return {boolean}
+ */
+ equal: function(other)
+ {
+ return this.startLine === other.startLine && this.endLine === other.endLine &&
+ this.startColumn === other.startColumn && this.endColumn === other.endColumn;
+ },
+
+ /**
* @param {number} lineOffset
* @return {!WebInspector.TextRange}
*/
@@ -159,6 +172,9 @@
return new WebInspector.TextRange(this.startLine + lineOffset, this.startColumn, this.endLine + lineOffset, this.endColumn);
},
+ /**
+ * @return {string}
+ */
toString: function()
{
return JSON.stringify(this);
diff --git a/Source/devtools/front_end/TextUtils.js b/Source/devtools/front_end/TextUtils.js
index 917e91a..b89cf83 100644
--- a/Source/devtools/front_end/TextUtils.js
+++ b/Source/devtools/front_end/TextUtils.js
@@ -100,6 +100,10 @@
return WebInspector.TextUtils.isOpeningBraceChar(char) || WebInspector.TextUtils.isClosingBraceChar(char);
},
+ /**
+ * @param {string} text
+ * @return {!Array.<string>}
+ */
textToWords: function(text)
{
var words = [];
@@ -116,6 +120,39 @@
words.push(text.substring(startWord));
return words;
},
+
+ /**
+ * @param {string} source
+ * @param {number=} startIndex
+ * @param {number=} lastIndex
+ * @return {number}
+ */
+ findBalancedCurlyBrackets: function(source, startIndex, lastIndex) {
+ lastIndex = lastIndex || source.length;
+ startIndex = startIndex || 0;
+ var counter = 0;
+ var inString = false;
+
+ for (var index = startIndex; index < lastIndex; ++index) {
+ var character = source[index];
+ if (inString) {
+ if (character === "\\")
+ ++index;
+ else if (character === "\"")
+ inString = false;
+ } else {
+ if (character === "\"")
+ inString = true;
+ else if (character === "{")
+ ++counter;
+ else if (character === "}") {
+ if (--counter === 0)
+ return index + 1;
+ }
+ }
+ }
+ return -1;
+ }
}
WebInspector.TextUtils._SpaceCharRegex = /\s/;
diff --git a/Source/devtools/front_end/ThreadsToolbar.js b/Source/devtools/front_end/ThreadsToolbar.js
new file mode 100644
index 0000000..0473543
--- /dev/null
+++ b/Source/devtools/front_end/ThreadsToolbar.js
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ */
+WebInspector.ThreadsToolbar = function()
+{
+ this.element = document.createElement("div");
+ this.element.className = "status-bar scripts-debug-toolbar threads-toolbar hidden";
+ this._comboBox = new WebInspector.StatusBarComboBox(this._onComboBoxSelectionChange.bind(this));
+ this.element.appendChild(this._comboBox.element);
+
+ this._reset();
+ if (WebInspector.experimentsSettings.workersInMainWindow.isEnabled()) {
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded, this._workerAdded, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved, this._workerRemoved, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared, this._workersCleared, this);
+ }
+}
+
+WebInspector.ThreadsToolbar.prototype = {
+
+ _reset: function()
+ {
+ this._threadIdToOption = {};
+
+ var connectedThreads = WebInspector.workerManager.threadsList();
+ for (var i = 0; i < connectedThreads.length; ++i) {
+ var threadId = connectedThreads[i];
+ this._addOption(threadId, WebInspector.workerManager.threadUrl(threadId));
+ }
+
+ this._alterVisibility();
+ this._comboBox.select(this._threadIdToOption[WebInspector.workerManager.selectedThreadId()]);
+ },
+
+ /**
+ * @param {number} workerId
+ * @param {string} url
+ */
+ _addOption: function(workerId, url)
+ {
+ var option = this._comboBox.createOption(url, "", String(workerId));
+ this._threadIdToOption[workerId] = option;
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _workerAdded: function(event)
+ {
+ var data = /** @type {{workerId: number, url: string}} */ (event.data);
+ this._addOption(data.workerId, data.url);
+ this._alterVisibility();
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _workerRemoved: function(event)
+ {
+ var data = /** @type {{workerId: number, url: string}} */ (event.data);
+ this._comboBox.removeOption(this._threadIdToOption[data.workerId]);
+ delete this._threadIdToOption[data.workerId];
+ this._alterVisibility();
+ },
+
+ _workersCleared: function()
+ {
+ this._comboBox.removeOptions();
+ this._reset();
+ },
+
+ _onComboBoxSelectionChange: function()
+ {
+ var selectedOption = this._comboBox.selectedOption();
+ if (!selectedOption)
+ return;
+
+ WebInspector.workerManager.setSelectedThreadId(parseInt(selectedOption.value, 10));
+ },
+
+ _alterVisibility: function()
+ {
+ var hidden = this._comboBox.size() === 1;
+ this.element.enableStyleClass("hidden", hidden);
+ }
+
+}
diff --git a/Source/devtools/front_end/TimelineEventOverview.js b/Source/devtools/front_end/TimelineEventOverview.js
index f7dec86..f75e474 100644
--- a/Source/devtools/front_end/TimelineEventOverview.js
+++ b/Source/devtools/front_end/TimelineEventOverview.js
@@ -74,6 +74,9 @@
for (var i = 1; i < WebInspector.TimelineEventOverview._numberOfStrips; i += 2)
this._context.fillRect(0.5, i * stripHeight + 0.5, this._canvas.width, stripHeight);
+ /**
+ * @this {WebInspector.TimelineEventOverview}
+ */
function appendRecord(record)
{
if (record.type === WebInspector.TimelineModel.RecordType.BeginFrame)
diff --git a/Source/devtools/front_end/TimelineFlameChart.js b/Source/devtools/front_end/TimelineFlameChart.js
new file mode 100644
index 0000000..3484297
--- /dev/null
+++ b/Source/devtools/front_end/TimelineFlameChart.js
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @implements {WebInspector.FlameChartDataProvider}
+ * @param {!WebInspector.TimelineModel} model
+ * @param {!WebInspector.FlameChart.ColorGenerator} colorGenerator
+ * @param {boolean} mainThread
+ */
+WebInspector.TimelineFlameChartDataProvider = function(model, colorGenerator, mainThread)
+{
+ WebInspector.FlameChartDataProvider.call(this);
+ this._model = model;
+ this._mainThread = mainThread;
+ this._colorGenerator = colorGenerator;
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._invalidate, this);
+}
+
+WebInspector.TimelineFlameChartDataProvider.prototype = {
+ reset: function()
+ {
+ this._invalidate();
+ },
+
+ _invalidate: function()
+ {
+ this._timelineData = null;
+ },
+
+ /**
+ * @return {!WebInspector.FlameChart.ColorGenerator}
+ */
+ colorGenerator: function()
+ {
+ return this._colorGenerator;
+ },
+
+ /**
+ * @return {!WebInspector.FlameChart.TimelineData}
+ */
+ timelineData: function()
+ {
+ if (!this._timelineData) {
+ this._resetData();
+ WebInspector.TimelinePresentationModel.forAllRecords(this._model.records, this._appendRecord.bind(this));
+ }
+ return this._timelineData;
+ },
+
+ _resetData: function()
+ {
+ this._startTime = 0;
+ this._endTime = 0;
+ this._timelineData = {
+ maxStackDepth: 5,
+ totalTime: 1000,
+ entryLevels: [],
+ entryTotalTimes: [],
+ entrySelfTimes: [],
+ entryOffsets: [],
+ colorEntryIndexes: [],
+ entryTitles: [],
+ entryDeoptFlags: []
+ };
+ },
+
+ _appendRecord: function(record, depth)
+ {
+ var timelineData = this._timelineData;
+
+ this._startTime = this._startTime ? Math.min(this._startTime, record.startTime) : record.startTime;
+ var startTime = this._startTime;
+ var endTime = record.endTime || record.startTime - startTime;
+ this._endTime = Math.max(this._endTime, endTime);
+ timelineData.totalTime = Math.max(1000, this._endTime - this._startTime);
+
+ if (this._mainThread) {
+ if (record.type === WebInspector.TimelineModel.RecordType.GPUTask || !!record.thread)
+ return;
+ } else {
+ if (record.type === WebInspector.TimelineModel.RecordType.Program || !record.thread)
+ return;
+ }
+
+ var index = timelineData.entryTitles.length;
+ timelineData.entryTitles[index] = record.type;
+ timelineData.entryOffsets[index] = record.startTime - startTime;
+ timelineData.entryLevels[index] = depth - 1;
+ timelineData.entryTotalTimes[index] = endTime - record.startTime;
+ timelineData.entryDeoptFlags[index] = 0;
+
+ var colorPair = this._colorGenerator.colorPairForID(WebInspector.TimelinePresentationModel.categoryForRecord(record).name);
+ var indexesForColor = timelineData.colorEntryIndexes[colorPair.index];
+ if (!indexesForColor)
+ indexesForColor = timelineData.colorEntryIndexes[colorPair.index] = [];
+ indexesForColor.push(index);
+
+ timelineData.maxStackDepth = Math.max(timelineData.maxStackDepth, depth + 1);
+ },
+
+ /**
+ * @param {number} entryIndex
+ * @return {?Array.<!{title: string, text: string}>}
+ */
+ prepareHighlightedEntryInfo: function(entryIndex)
+ {
+ return null;
+ },
+
+ /**
+ * @param {number} entryIndex
+ * @return {boolean}
+ */
+ canJumpToEntry: function(entryIndex)
+ {
+ return false;
+ },
+
+ /**
+ * @param {number} entryIndex
+ * @return {?Object}
+ */
+ entryData: function(entryIndex)
+ {
+ return null;
+ }
+}
+
+/**
+ * @constructor
+ * @extends {WebInspector.View}
+ * @param {!WebInspector.TimelinePanel} panel
+ * @param {!WebInspector.TimelineModel} model
+ * @param {!WebInspector.FlameChartDataProvider} dataProvider
+ */
+WebInspector.TimelineFlameChart = function(panel, model, dataProvider)
+{
+ WebInspector.View.call(this);
+ this._panel = panel;
+ this._model = model;
+ this._dataProvider = dataProvider;
+ this._mainView = new WebInspector.FlameChart.MainPane(dataProvider, null, true);
+ this._mainView.show(this.element);
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted, this._onRecordingStarted, this);
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
+}
+
+/**
+ * @param {!Object.<string, !CanvasGradient>} fillStyles
+ */
+WebInspector.TimelineFlameChart.colorGenerator = function(fillStyles)
+{
+ if (!WebInspector.TimelineFlameChart._colorGenerator) {
+ var colorGenerator = new WebInspector.FlameChart.ColorGenerator();
+ for (var category in fillStyles) {
+ if (fillStyles.hasOwnProperty(category))
+ colorGenerator.setColorPairForID(category, fillStyles[category], fillStyles[category]);
+ }
+ WebInspector.TimelineFlameChart._colorGenerator = colorGenerator;
+ }
+ return WebInspector.TimelineFlameChart._colorGenerator;
+}
+
+WebInspector.TimelineFlameChart.prototype = {
+ reset: function()
+ {
+ this._dataProvider.reset();
+ this._mainView.changeWindow(0, 1);
+ },
+
+ _onRecordingStarted: function()
+ {
+ this._gotFirstRecord = false;
+ },
+
+ _onRecordAdded: function()
+ {
+ if (!this._gotFirstRecord) {
+ this._gotFirstRecord = true;
+ var minimumRecordTime = this._model.minimumRecordTime();
+ this._panel.setWindowTimes(minimumRecordTime, minimumRecordTime + 1000);
+ }
+ this._mainView._scheduleUpdate();
+ },
+
+ /**
+ * @param {number} startTime
+ * @param {number} endTime
+ */
+ setWindowTimes: function(startTime, endTime)
+ {
+ var minimumRecordTime = this._model.minimumRecordTime();
+ var timeRange = this._model.maximumRecordTime() - minimumRecordTime;
+ if (timeRange === 0)
+ this._mainView.changeWindow(0, 1);
+ else
+ this._mainView.changeWindow((startTime - minimumRecordTime) / timeRange, (endTime - minimumRecordTime) / timeRange);
+ },
+
+ /**
+ * @return {boolean}
+ */
+ supportsGlueParentMode: function()
+ {
+ return false;
+ },
+
+ setSidebarSize: function()
+ {
+ },
+
+ /**
+ * @param {!WebInspector.FilterBar} filterBar
+ * @return {boolean}
+ */
+ createUIFilters: function(filterBar)
+ {
+ return false;
+ },
+
+ /**
+ * @return {?WebInspector.View}
+ */
+ searchableView: function()
+ {
+ return null;
+ },
+
+ __proto__: WebInspector.View.prototype
+}
\ No newline at end of file
diff --git a/Source/devtools/front_end/TimelineFrameController.js b/Source/devtools/front_end/TimelineFrameController.js
deleted file mode 100644
index 7baeeca..0000000
--- a/Source/devtools/front_end/TimelineFrameController.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2013 Google 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:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE COPYRIGHT
- * OWNER 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.
- */
-
-/**
- * @constructor
- * @param {!WebInspector.TimelineModel} model
- * @param {!WebInspector.TimelineFrameOverview} frameOverview
- * @param {!WebInspector.TimelinePresentationModel} presentationModel
- */
-WebInspector.TimelineFrameController = function(model, frameOverview, presentationModel)
-{
- this._lastMainThreadFrame = null;
- this._lastBackgroundFrame = null;
- this._model = model;
- this._frameOverview = frameOverview;
- this._presentationModel = presentationModel;
- this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
- this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared, this._onRecordsCleared, this);
-
- this._frameOverview.reset();
- var records = model.records;
- for (var i = 0; i < records.length; ++i)
- this._addRecord(records[i]);
- this._frameOverview.update();
-}
-
-WebInspector.TimelineFrameController.prototype = {
- _onRecordAdded: function(event)
- {
- this._addRecord(event.data);
- },
-
- _onRecordsCleared: function()
- {
- this._lastMainThreadFrame = null;
- this._lastBackgroundFrame = null;
- },
-
- _addRecord: function(record)
- {
- var records;
- var programRecord;
- if (record.type === WebInspector.TimelineModel.RecordType.Program) {
- programRecord = record;
- if (this._lastMainThreadFrame)
- this._lastMainThreadFrame.timeByCategory["other"] += WebInspector.TimelineModel.durationInSeconds(programRecord);
- records = record["children"] || [];
- } else
- records = [record];
- records.forEach(this._innerAddRecord.bind(this, programRecord));
- },
-
- /**
- * @param {!Object} programRecord
- * @param {!Object} record
- */
- _innerAddRecord: function(programRecord, record)
- {
- var isFrameRecord = record.type === WebInspector.TimelineModel.RecordType.BeginFrame;
- var programTimeCarryover = isFrameRecord && programRecord ? WebInspector.TimelineModel.endTimeInSeconds(programRecord) - WebInspector.TimelineModel.startTimeInSeconds(record) : 0;
- var lastFrame = record.thread ? this._lastBackgroundFrame : this._lastMainThreadFrame;
- if (isFrameRecord && lastFrame) {
- this._flushFrame(lastFrame, record, programTimeCarryover);
- lastFrame = this._createFrame(record, programTimeCarryover);
- } else if (record.type === WebInspector.TimelineModel.RecordType.ActivateLayerTree) {
- if (lastFrame)
- lastFrame.mainThreadFrameId = record.data.id;
- } else {
- if (!lastFrame)
- lastFrame = this._createFrame(record, programTimeCarryover);
- if (!record.thread) {
- WebInspector.TimelineModel.aggregateTimeForRecord(lastFrame.timeByCategory, record);
- var duration = WebInspector.TimelineModel.durationInSeconds(record);
- lastFrame.cpuTime += duration;
- lastFrame.timeByCategory["other"] -= duration;
- }
- }
- if (record.thread)
- this._lastBackgroundFrame = lastFrame;
- else
- this._lastMainThreadFrame = lastFrame;
- },
-
- /**
- * @param {!WebInspector.TimelineFrame} frame
- * @param {!Object} record
- * @param {number} programTimeCarryover
- */
- _flushFrame: function(frame, record, programTimeCarryover)
- {
- frame.endTime = WebInspector.TimelineModel.startTimeInSeconds(record);
- frame.duration = frame.endTime - frame.startTime;
- frame.timeByCategory["other"] -= programTimeCarryover;
- // Alternatively, we could compute CPU time as sum of all Program events.
- // This way it's a bit more flexible, as it works in case there's no program events.
- frame.cpuTime += frame.timeByCategory["other"];
- this._frameOverview.addFrame(frame);
- this._presentationModel.addFrame(frame);
- },
-
- /**
- * @param {!Object} record
- * @param {number} programTimeCarryover
- */
- _createFrame: function(record, programTimeCarryover)
- {
- var frame = new WebInspector.TimelineFrame();
- frame.startTime = WebInspector.TimelineModel.startTimeInSeconds(record);
- frame.startTimeOffset = this._model.recordOffsetInSeconds(record);
- frame.timeByCategory["other"] = programTimeCarryover;
- frame.isBackground = !!record.thread;
- frame.id = record.data && record.data["id"];
- return frame;
- },
-
- dispose: function()
- {
- this._model.removeEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
- this._model.removeEventListener(WebInspector.TimelineModel.Events.RecordsCleared, this._onRecordsCleared, this);
- }
-}
-
-/**
- * @constructor
- * @param {!Array.<!WebInspector.TimelineFrame>} frames
- */
-WebInspector.FrameStatistics = function(frames)
-{
- this.frameCount = frames.length;
- this.minDuration = Infinity;
- this.maxDuration = 0;
- this.timeByCategory = {};
- this.startOffset = frames[0].startTimeOffset;
- var lastFrame = frames[this.frameCount - 1];
- this.endOffset = lastFrame.startTimeOffset + lastFrame.duration;
-
- var totalDuration = 0;
- var sumOfSquares = 0;
- for (var i = 0; i < this.frameCount; ++i) {
- var duration = frames[i].duration;
- totalDuration += duration;
- sumOfSquares += duration * duration;
- this.minDuration = Math.min(this.minDuration, duration);
- this.maxDuration = Math.max(this.maxDuration, duration);
- WebInspector.TimelineModel.aggregateTimeByCategory(this.timeByCategory, frames[i].timeByCategory);
- }
- this.average = totalDuration / this.frameCount;
- var variance = sumOfSquares / this.frameCount - this.average * this.average;
- this.stddev = Math.sqrt(variance);
-}
-
-/**
- * @constructor
- */
-WebInspector.TimelineFrame = function()
-{
- this.timeByCategory = {};
- this.cpuTime = 0;
- /** @type {string} */
- this.mainThreadFrameId;
-}
diff --git a/Source/devtools/front_end/TimelineFrameModel.js b/Source/devtools/front_end/TimelineFrameModel.js
new file mode 100644
index 0000000..d4e2029
--- /dev/null
+++ b/Source/devtools/front_end/TimelineFrameModel.js
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2013 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.Object}
+ * @param {!WebInspector.TimelineModel} model
+ */
+WebInspector.TimelineFrameModel = function(model)
+{
+ this._model = model;
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
+
+ this.reset();
+ var records = model.records;
+ for (var i = 0; i < records.length; ++i)
+ this._addRecord(records[i]);
+}
+
+WebInspector.TimelineFrameModel.Events = {
+ FrameAdded: "FrameAdded"
+}
+
+WebInspector.TimelineFrameModel.prototype = {
+ /**
+ * @return {!Array.<!WebInspector.TimelineFrame>}
+ */
+ frames: function()
+ {
+ return this._frames;
+ },
+
+ reset: function()
+ {
+ this._frames = [];
+ this._lastFrame = null;
+ this._hasThreadedCompositing = false;
+ this._mainFrameCommitted = false;
+ this._mainFrameRequested = false;
+ this._aggregatedMainThreadWork = null;
+ this._mergingBuffer = new WebInspector.TimelineMergingRecordBuffer();
+ },
+
+ _onRecordAdded: function(event)
+ {
+ var record = /** @type {!TimelineAgent.TimelineEvent} */(event.data);
+ this._addRecord(record);
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _addRecord: function(record)
+ {
+ var recordTypes = WebInspector.TimelineModel.RecordType;
+ var programRecord = record.type === recordTypes.Program ? record : null;
+
+ // Start collecting main frame
+ if (programRecord) {
+ if (!this._aggregatedMainThreadWork && this._findRecordRecursively([recordTypes.ScheduleStyleRecalculation, recordTypes.InvalidateLayout, recordTypes.BeginFrame], programRecord))
+ this._aggregatedMainThreadWork = {};
+ }
+
+ var records = this._mergingBuffer.process(record.thread, programRecord ? record.children || [] : [record]);
+ for (var i = 0; i < records.length; ++i) {
+ if (records[i].thread)
+ this._addBackgroundRecord(records[i]);
+ else
+ this._addMainThreadRecord(programRecord, records[i]);
+ }
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _addBackgroundRecord: function(record)
+ {
+ var recordTypes = WebInspector.TimelineModel.RecordType;
+ if (!this._lastFrame) {
+ if (record.type === recordTypes.BeginFrame || record.type === recordTypes.DrawFrame)
+ this._startBackgroundFrame(record);
+ return;
+ }
+
+ if (record.type === recordTypes.DrawFrame) {
+ // - if it wasn't drawn, it didn't happen!
+ // - only show frames that either did not wait for the main thread frame or had one committed.
+ if (this._mainFrameCommitted || !this._mainFrameRequested)
+ this._startBackgroundFrame(record);
+ this._mainFrameCommitted = false;
+ } else if (record.type === recordTypes.RequestMainThreadFrame) {
+ this._mainFrameRequested = true;
+ } else if (record.type === recordTypes.ActivateLayerTree) {
+ this._mainFrameRequested = false;
+ this._mainFrameCommitted = true;
+ this._lastFrame._addTimeForCategories(this._aggregatedMainThreadWorkToAttachToBackgroundFrame);
+ this._aggregatedMainThreadWorkToAttachToBackgroundFrame = {};
+ }
+ this._lastFrame._addTimeFromRecord(record);
+ },
+
+ /**
+ * @param {?TimelineAgent.TimelineEvent} programRecord
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _addMainThreadRecord: function(programRecord, record)
+ {
+ var recordTypes = WebInspector.TimelineModel.RecordType;
+ if (!this._hasThreadedCompositing) {
+ if (record.type === recordTypes.BeginFrame)
+ this._startMainThreadFrame(record);
+
+ if (!this._lastFrame)
+ return;
+
+ this._lastFrame._addTimeFromRecord(record);
+
+ // Account for "other" time at the same time as the first child.
+ if (programRecord.children[0] === record) {
+ this._deriveOtherTime(programRecord, this._lastFrame.timeByCategory);
+ this._lastFrame._updateCpuTime();
+ }
+ return;
+ }
+
+ if (!this._aggregatedMainThreadWork)
+ return;
+
+ WebInspector.TimelineModel.aggregateTimeForRecord(this._aggregatedMainThreadWork, record);
+ if (programRecord.children[0] === record)
+ this._deriveOtherTime(programRecord, this._aggregatedMainThreadWork);
+
+ if (record.type === recordTypes.CompositeLayers) {
+ this._aggregatedMainThreadWorkToAttachToBackgroundFrame = this._aggregatedMainThreadWork;
+ this._aggregatedMainThreadWork = null;
+ }
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} programRecord
+ * @param {!Object} timeByCategory
+ */
+ _deriveOtherTime: function(programRecord, timeByCategory)
+ {
+ var accounted = 0;
+ for (var i = 0; i < programRecord.children.length; ++i)
+ accounted += WebInspector.TimelineModel.durationInSeconds(programRecord.children[i]);
+ var otherTime = WebInspector.TimelineModel.durationInSeconds(programRecord) - accounted;
+ timeByCategory["other"] = (timeByCategory["other"] || 0) + otherTime;
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _startBackgroundFrame: function(record)
+ {
+ if (!this._hasThreadedCompositing) {
+ this._lastFrame = null;
+ this._hasThreadedCompositing = true;
+ }
+ if (this._lastFrame)
+ this._flushFrame(this._lastFrame, record);
+
+ this._lastFrame = new WebInspector.TimelineFrame(this, record);
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _startMainThreadFrame: function(record)
+ {
+ if (this._lastFrame)
+ this._flushFrame(this._lastFrame, record);
+ this._lastFrame = new WebInspector.TimelineFrame(this, record);
+ },
+
+ /**
+ * @param {!WebInspector.TimelineFrame} frame
+ * @param {!Object} record
+ */
+ _flushFrame: function(frame, record)
+ {
+ frame._setEndTime(WebInspector.TimelineModel.startTimeInSeconds(record));
+ this._frames.push(frame);
+ this.dispatchEventToListeners(WebInspector.TimelineFrameModel.Events.FrameAdded, frame);
+ },
+
+ /**
+ * @param {!Array.<string>} types
+ * @param {!TimelineAgent.TimelineEvent} record
+ * @return {?TimelineAgent.TimelineEvent} record
+ */
+ _findRecordRecursively: function(types, record)
+ {
+ if (types.indexOf(record.type) >= 0)
+ return record;
+ if (!record.children)
+ return null;
+ for (var i = 0; i < record.children.length; ++i) {
+ var result = this._findRecordRecursively(types, record.children[i]);
+ if (result)
+ return result;
+ }
+ return null;
+ },
+
+ dispose: function()
+ {
+ this._model.removeEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onRecordAdded, this);
+ },
+
+ __proto__: WebInspector.Object.prototype
+}
+
+/**
+ * @constructor
+ * @param {!Array.<!WebInspector.TimelineFrame>} frames
+ */
+WebInspector.FrameStatistics = function(frames)
+{
+ this.frameCount = frames.length;
+ this.minDuration = Infinity;
+ this.maxDuration = 0;
+ this.timeByCategory = {};
+ this.startOffset = frames[0].startTimeOffset;
+ var lastFrame = frames[this.frameCount - 1];
+ this.endOffset = lastFrame.startTimeOffset + lastFrame.duration;
+
+ var totalDuration = 0;
+ var sumOfSquares = 0;
+ for (var i = 0; i < this.frameCount; ++i) {
+ var duration = frames[i].duration;
+ totalDuration += duration;
+ sumOfSquares += duration * duration;
+ this.minDuration = Math.min(this.minDuration, duration);
+ this.maxDuration = Math.max(this.maxDuration, duration);
+ WebInspector.TimelineModel.aggregateTimeByCategory(this.timeByCategory, frames[i].timeByCategory);
+ }
+ this.average = totalDuration / this.frameCount;
+ var variance = sumOfSquares / this.frameCount - this.average * this.average;
+ this.stddev = Math.sqrt(variance);
+}
+
+/**
+ * @constructor
+ * @param {!WebInspector.TimelineFrameModel} model
+ * @param {!Object} record
+ */
+WebInspector.TimelineFrame = function(model, record)
+{
+ this.startTime = WebInspector.TimelineModel.startTimeInSeconds(record);
+ this.startTimeOffset = model._model.recordOffsetInSeconds(record);
+ this.endTime = this.startTime;
+ this.duration = 0;
+ this.timeByCategory = {};
+ this.cpuTime = 0;
+}
+
+WebInspector.TimelineFrame.prototype = {
+ /**
+ * @param {number} endTime
+ */
+ _setEndTime: function(endTime)
+ {
+ this.endTime = endTime;
+ this.duration = this.endTime - this.startTime;
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ */
+ _addTimeFromRecord: function(record)
+ {
+ if (!record.endTime)
+ return;
+ WebInspector.TimelineModel.aggregateTimeForRecord(this.timeByCategory, record);
+ this._updateCpuTime();
+ },
+
+ /**
+ * @param {!Object} timeByCategory
+ */
+ _addTimeForCategories: function(timeByCategory)
+ {
+ WebInspector.TimelineModel.aggregateTimeByCategory(this.timeByCategory, timeByCategory);
+ this._updateCpuTime();
+ },
+
+ _updateCpuTime: function()
+ {
+ this.cpuTime = 0;
+ for (var key in this.timeByCategory)
+ this.cpuTime += this.timeByCategory[key];
+ }
+}
diff --git a/Source/devtools/front_end/TimelineFrameOverview.js b/Source/devtools/front_end/TimelineFrameOverview.js
index 5030de3..51e16c5 100644
--- a/Source/devtools/front_end/TimelineFrameOverview.js
+++ b/Source/devtools/front_end/TimelineFrameOverview.js
@@ -32,11 +32,13 @@
* @constructor
* @extends {WebInspector.TimelineOverviewBase}
* @param {!WebInspector.TimelineModel} model
+ * @param {!WebInspector.TimelineFrameModel} frameModel
*/
-WebInspector.TimelineFrameOverview = function(model)
+WebInspector.TimelineFrameOverview = function(model, frameModel)
{
WebInspector.TimelineOverviewBase.call(this, model);
this.element.id = "timeline-overview-frames";
+ this._frameModel = frameModel;
this.reset();
this._outerPadding = 4 * window.devicePixelRatio;
@@ -57,14 +59,19 @@
}
WebInspector.TimelineFrameOverview.prototype = {
+ /**
+ * @return {!Object.<string, !CanvasGradient>}
+ */
+ categoryFillStyles: function()
+ {
+ return this._fillStyles;
+ },
+
reset: function()
{
this._recordsPerBar = 1;
- /** @type {!Array.<{startTime:number, endTime:number}>} */
+ /** @type {!Array.<!{startTime:number, endTime:number}>} */
this._barTimes = [];
- this._mainThreadFrames = [];
- this._backgroundFrames = [];
- this._framesById = {};
},
update: function()
@@ -72,61 +79,18 @@
this.resetCanvas();
this._barTimes = [];
- var backgroundFramesHeight = 15;
- var mainThreadFramesHeight = this._canvas.height - backgroundFramesHeight;
const minBarWidth = 4 * window.devicePixelRatio;
- var frameCount = this._backgroundFrames.length || this._mainThreadFrames.length;
- var framesPerBar = Math.max(1, frameCount * minBarWidth / this._canvas.width);
-
- var mainThreadVisibleFrames;
- var backgroundVisibleFrames;
- if (this._backgroundFrames.length) {
- backgroundVisibleFrames = this._aggregateFrames(this._backgroundFrames, framesPerBar);
- mainThreadVisibleFrames = new Array(backgroundVisibleFrames.length);
- for (var i = 0; i < backgroundVisibleFrames.length; ++i) {
- var frameId = backgroundVisibleFrames[i].mainThreadFrameId;
- mainThreadVisibleFrames[i] = frameId && this._framesById[frameId];
- }
- } else {
- mainThreadVisibleFrames = this._aggregateFrames(this._mainThreadFrames, framesPerBar);
- }
+ var frames = this._frameModel.frames();
+ var framesPerBar = Math.max(1, frames.length * minBarWidth / this._canvas.width);
+ var visibleFrames = this._aggregateFrames(frames, framesPerBar);
this._context.save();
- this._setCanvasWindow(0, backgroundFramesHeight, this._canvas.width, mainThreadFramesHeight);
- var scale = (mainThreadFramesHeight - this._topPadding) / this._computeTargetFrameLength(mainThreadVisibleFrames);
- this._renderBars(mainThreadVisibleFrames, scale, mainThreadFramesHeight);
+ var scale = (this._canvas.height - this._topPadding) / this._computeTargetFrameLength(visibleFrames);
+ this._renderBars(frames, scale, this._canvas.height);
this._context.fillStyle = this._frameTopShadeGradient;
this._context.fillRect(0, 0, this._canvas.width, this._topPadding);
- this._drawFPSMarks(scale, mainThreadFramesHeight);
+ this._drawFPSMarks(scale, this._canvas.height);
this._context.restore();
-
- var bottom = backgroundFramesHeight + 0.5;
- this._context.strokeStyle = "rgba(120, 120, 120, 0.8)";
- this._context.beginPath();
- this._context.moveTo(0, bottom);
- this._context.lineTo(this._canvas.width, bottom);
- this._context.stroke();
-
- if (backgroundVisibleFrames) {
- const targetFPS = 30.0;
- scale = (backgroundFramesHeight - this._topPadding) / (1.0 / targetFPS);
- this._renderBars(backgroundVisibleFrames, scale, backgroundFramesHeight);
- }
- },
-
- /**
- * @param {!WebInspector.TimelineFrame} frame
- */
- addFrame: function(frame)
- {
- var frames;
- if (frame.isBackground) {
- frames = this._backgroundFrames;
- } else {
- frames = this._mainThreadFrames;
- this._framesById[frame.id] = frame;
- }
- frames.push(frame);
},
/**
@@ -162,7 +126,7 @@
for (var lastFrame = Math.min(Math.floor((barNumber + 1) * framesPerBar), frames.length);
currentFrame < lastFrame; ++currentFrame) {
- var duration = this._frameDuration(frames[currentFrame]);
+ var duration = frames[currentFrame].duration;
if (!longestFrame || longestDuration < duration) {
longestFrame = frames[currentFrame];
longestDuration = duration;
@@ -178,15 +142,6 @@
},
/**
- * @param {!WebInspector.TimelineFrame} frame
- */
- _frameDuration: function(frame)
- {
- var relatedFrame = frame.mainThreadFrameId && this._framesById[frame.mainThreadFrameId];
- return frame.duration + (relatedFrame ? relatedFrame.duration : 0);
- },
-
- /**
* @param {!Array.<!WebInspector.TimelineFrame>} frames
* @return {number}
*/
@@ -199,9 +154,9 @@
}
var medianFrameLength = durations.qselect(Math.floor(durations.length / 2));
- // Optimize appearance for 30fps. However, if at least half frames won't fit at this scale,
- // fall back to using autoscale.
- const targetFPS = 30;
+ // Optimize appearance for 30fps, but leave some space so it's evident when a frame overflows.
+ // However, if at least half frames won't fit at this scale, fall back to using autoscale.
+ const targetFPS = 20;
var result = 1.0 / targetFPS;
if (result >= medianFrameLength)
return result;
@@ -294,18 +249,20 @@
_renderBar: function(left, width, windowHeight, frame, scale)
{
var categories = Object.keys(WebInspector.TimelinePresentationModel.categories());
- if (!categories.length)
- return;
var x = Math.floor(left) + 0.5;
width = Math.floor(width);
+ var totalCPUTime = frame.cpuTime;
+ var normalizedScale = scale;
+ if (totalCPUTime > frame.duration)
+ normalizedScale *= frame.duration / totalCPUTime;
+
for (var i = 0, bottomOffset = windowHeight; i < categories.length; ++i) {
var category = categories[i];
var duration = frame.timeByCategory[category];
-
if (!duration)
continue;
- var height = Math.round(duration * scale);
+ var height = Math.round(duration * normalizedScale);
var y = Math.floor(bottomOffset - height) + 0.5;
this._context.save();
@@ -338,6 +295,7 @@
/**
* @param {number} windowLeft
* @param {number} windowRight
+ * @return {!{startTime: number, endTime: number}}
*/
windowTimes: function(windowLeft, windowRight)
{
@@ -361,6 +319,7 @@
/**
* @param {number} startTime
* @param {number} endTime
+ * @return {!{left: number, right: number}}
*/
windowBoundaries: function(startTime, endTime)
{
@@ -368,7 +327,7 @@
return {left: 0, right: 1};
/**
* @param {number} time
- * @param {{startTime:number, endTime:number}} barTime
+ * @param {!{startTime:number, endTime:number}} barTime
* @return {number}
*/
function barStartComparator(time, barTime)
@@ -377,7 +336,7 @@
}
/**
* @param {number} time
- * @param {{startTime:number, endTime:number}} barTime
+ * @param {!{startTime:number, endTime:number}} barTime
* @return {number}
*/
function barEndComparator(time, barTime)
@@ -395,7 +354,7 @@
/**
* @param {number} time
- * @param {function(number, {startTime:number, endTime:number}):number} comparator
+ * @param {function(number, !{startTime:number, endTime:number}):number} comparator
*/
_windowBoundaryFromTime: function(time, comparator)
{
diff --git a/Source/devtools/front_end/TimelineGrid.js b/Source/devtools/front_end/TimelineGrid.js
index 1eaf3ae..30dfd17 100644
--- a/Source/devtools/front_end/TimelineGrid.js
+++ b/Source/devtools/front_end/TimelineGrid.js
@@ -83,6 +83,9 @@
this._dividersLabelBarElement.removeChildren();
},
+ /**
+ * @return {boolean}
+ */
updateDividers: function(calculator)
{
const minGridSlicePx = 64; // minimal distance between grid lines.
@@ -195,6 +198,16 @@
this._eventDividersElement.classList.remove("hidden");
},
+ hideDividers: function()
+ {
+ this._dividersElement.classList.add("hidden");
+ },
+
+ showDividers: function()
+ {
+ this._dividersElement.classList.remove("hidden");
+ },
+
hideCurtains: function()
{
this._leftCurtainElement.classList.add("hidden");
diff --git a/Source/devtools/front_end/TimelineManager.js b/Source/devtools/front_end/TimelineManager.js
index 3a1cc0b..879dc4f 100644
--- a/Source/devtools/front_end/TimelineManager.js
+++ b/Source/devtools/front_end/TimelineManager.js
@@ -57,15 +57,15 @@
/**
* @param {number=} maxCallStackDepth
- * @param {boolean=} includeDomCounters
+ * @param {boolean=} includeCounters
* @param {boolean=} includeGPUEvents
* @param {function(?Protocol.Error)=} callback
*/
- start: function(maxCallStackDepth, includeDomCounters, includeGPUEvents, callback)
+ start: function(maxCallStackDepth, includeCounters, includeGPUEvents, callback)
{
this._enablementCount++;
if (this._enablementCount === 1)
- TimelineAgent.start(maxCallStackDepth, /* bufferEvents */false, includeDomCounters, includeGPUEvents, callback);
+ TimelineAgent.start(maxCallStackDepth, /* bufferEvents */false, includeCounters, includeGPUEvents, callback);
else if (callback)
callback(null);
},
@@ -123,7 +123,7 @@
{
if (consoleTimeline) {
// Wake up timeline panel module.
- WebInspector.panel("timeline");
+ WebInspector.moduleManager.loadModule("timeline");
}
this._started = true;
this._manager.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineStarted, consoleTimeline);
@@ -140,6 +140,6 @@
}
/**
- * @type {?WebInspector.TimelineManager}
+ * @type {!WebInspector.TimelineManager}
*/
-WebInspector.timelineManager = null;
+WebInspector.timelineManager;
diff --git a/Source/devtools/front_end/TimelineMemoryOverview.js b/Source/devtools/front_end/TimelineMemoryOverview.js
index a99edfa..154fadd 100644
--- a/Source/devtools/front_end/TimelineMemoryOverview.js
+++ b/Source/devtools/front_end/TimelineMemoryOverview.js
@@ -43,13 +43,21 @@
}
WebInspector.TimelineMemoryOverview.prototype = {
+ resetHeapSizeLabels: function()
+ {
+ this._maxHeapSizeLabel.textContent = "";
+ this._minHeapSizeLabel.textContent = "";
+ },
+
update: function()
{
this.resetCanvas();
var records = this._model.records;
- if (!records.length)
+ if (!records.length) {
+ this.resetHeapSizeLabels();
return;
+ }
const lowerOffset = 3;
var maxUsedHeapSize = 0;
@@ -57,8 +65,10 @@
var minTime = this._model.minimumRecordTime();
var maxTime = this._model.maximumRecordTime();
WebInspector.TimelinePresentationModel.forAllRecords(records, function(r) {
- maxUsedHeapSize = Math.max(maxUsedHeapSize, r.usedHeapSize || maxUsedHeapSize);
- minUsedHeapSize = Math.min(minUsedHeapSize, r.usedHeapSize || minUsedHeapSize);
+ if (!r.counters || !r.counters.jsHeapSizeUsed)
+ return;
+ maxUsedHeapSize = Math.max(maxUsedHeapSize, r.counters.jsHeapSizeUsed);
+ minUsedHeapSize = Math.min(minUsedHeapSize, r.counters.jsHeapSizeUsed);
});
minUsedHeapSize = Math.min(minUsedHeapSize, maxUsedHeapSize);
@@ -69,27 +79,27 @@
var histogram = new Array(width);
WebInspector.TimelinePresentationModel.forAllRecords(records, function(r) {
- if (!r.usedHeapSize)
+ if (!r.counters || !r.counters.jsHeapSizeUsed)
return;
var x = Math.round((WebInspector.TimelineModel.endTimeInSeconds(r) - minTime) * xFactor);
- var y = Math.round((r.usedHeapSize - minUsedHeapSize) * yFactor);
+ var y = (r.counters.jsHeapSizeUsed - minUsedHeapSize) * yFactor;
histogram[x] = Math.max(histogram[x] || 0, y);
});
- height++; // +1 so that the border always fit into the canvas area.
-
var y = 0;
var isFirstPoint = true;
var ctx = this._context;
+ ctx.save();
+ ctx.translate(0.5, 0.5);
ctx.beginPath();
- ctx.moveTo(0, this._canvas.height);
+ ctx.moveTo(-1, this._canvas.height);
for (var x = 0; x < histogram.length; x++) {
if (typeof histogram[x] === "undefined")
continue;
if (isFirstPoint) {
isFirstPoint = false;
y = histogram[x];
- ctx.lineTo(0, height - y);
+ ctx.lineTo(-1, height - y);
}
ctx.lineTo(x, height - y);
y = histogram[x];
@@ -97,16 +107,20 @@
}
ctx.lineTo(width, height - y);
ctx.lineTo(width, this._canvas.height);
- ctx.lineTo(0, this._canvas.height);
+ ctx.lineTo(-1, this._canvas.height);
ctx.closePath();
- ctx.lineWidth = 0.5;
- ctx.strokeStyle = "rgba(20,0,0,0.8)";
- ctx.stroke();
-
- ctx.fillStyle = "rgba(214,225,254, 0.8);";
+ var gradient = ctx.createLinearGradient(0, 0, 0, height);
+ gradient.addColorStop(0, "rgba(192,204,255,1)");
+ gradient.addColorStop(1, "rgba(192,204,255,0.4)");
+ ctx.fillStyle = gradient;
ctx.fill();
+ ctx.lineWidth = 0.5;
+ ctx.strokeStyle = "#666";
+ ctx.stroke();
+ ctx.restore();
+
this._maxHeapSizeLabel.textContent = Number.bytesToString(maxUsedHeapSize);
this._minHeapSizeLabel.textContent = Number.bytesToString(minUsedHeapSize);
},
diff --git a/Source/devtools/front_end/TimelineModel.js b/Source/devtools/front_end/TimelineModel.js
index e85c0af..656b2c5 100644
--- a/Source/devtools/front_end/TimelineModel.js
+++ b/Source/devtools/front_end/TimelineModel.js
@@ -53,8 +53,10 @@
GPUTask: "GPUTask",
+ RequestMainThreadFrame: "RequestMainThreadFrame",
BeginFrame: "BeginFrame",
ActivateLayerTree: "ActivateLayerTree",
+ DrawFrame: "DrawFrame",
ScheduleStyleRecalculation: "ScheduleStyleRecalculation",
RecalculateStyles: "RecalculateStyles",
InvalidateLayout: "InvalidateLayout",
@@ -156,15 +158,15 @@
WebInspector.TimelineModel.prototype = {
/**
- * @param {boolean=} includeDomCounters
+ * @param {boolean=} includeCounters
*/
- startRecording: function(includeDomCounters)
+ startRecording: function(includeCounters)
{
this._clientInitiatedRecording = true;
this.reset();
var maxStackFrames = WebInspector.settings.timelineCaptureStacks.get() ? 30 : 0;
var includeGPUEvents = WebInspector.experimentsSettings.gpuTimeline.isEnabled();
- WebInspector.timelineManager.start(maxStackFrames, includeDomCounters, includeGPUEvents, this._fireRecordingStarted.bind(this));
+ WebInspector.timelineManager.start(maxStackFrames, includeCounters, includeGPUEvents, this._fireRecordingStarted.bind(this));
},
stopRecording: function()
@@ -174,8 +176,11 @@
return;
}
- // Console started this one and we are just sniffing it. Initiate recording so that we
- // could stop it.
+ /**
+ * Console started this one and we are just sniffing it. Initiate recording so that we
+ * could stop it.
+ * @this {WebInspector.TimelineModel}
+ */
function stopTimeline()
{
WebInspector.timelineManager.stop(this._fireRecordingStopped.bind(this));
@@ -285,6 +290,7 @@
/**
* @param {boolean} accepted
+ * @this {WebInspector.TimelineModel}
*/
function callback(accepted)
{
@@ -305,11 +311,17 @@
this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordsCleared);
},
+ /**
+ * @return {number}
+ */
minimumRecordTime: function()
{
return this._minimumRecordTime;
},
+ /**
+ * @return {number}
+ */
maximumRecordTime: function()
{
return this._maximumRecordTime;
@@ -331,6 +343,7 @@
/**
* @param {!Object} rawRecord
+ * @return {number}
*/
recordOffsetInSeconds: function(rawRecord)
{
@@ -367,7 +380,7 @@
var index;
do {
index = lastIndex;
- lastIndex = WebInspector.findBalancedCurlyBrackets(data, index);
+ lastIndex = WebInspector.TextUtils.findBalancedCurlyBrackets(data, index);
} while (lastIndex !== -1)
var json = data.slice(0, index) + "]";
@@ -522,3 +535,45 @@
stream.write(data.join(separator), this._writeNextChunk.bind(this));
}
}
+
+/**
+ * @constructor
+ */
+WebInspector.TimelineMergingRecordBuffer = function()
+{
+ this._backgroundRecordsBuffer = [];
+}
+
+/**
+ * @constructor
+ */
+WebInspector.TimelineMergingRecordBuffer.prototype = {
+ /**
+ * @param {string} thread
+ * @param {!Array.<!TimelineAgent.TimelineEvent>} records
+ * @return {!Array.<!TimelineAgent.TimelineEvent>}
+ */
+ process: function(thread, records)
+ {
+ if (thread) {
+ this._backgroundRecordsBuffer = this._backgroundRecordsBuffer.concat(records);
+ return [];
+ }
+ var outputIndex = 0;
+ var result = new Array(this._backgroundRecordsBuffer.length + records.length);
+ var mainThreadRecord = 0;
+ var backgroundRecord = 0;
+ while (backgroundRecord < this._backgroundRecordsBuffer.length && mainThreadRecord < records.length) {
+ if (this._backgroundRecordsBuffer[backgroundRecord].startTime < records[mainThreadRecord].startTime)
+ result[outputIndex++] = this._backgroundRecordsBuffer[backgroundRecord++];
+ else
+ result[outputIndex++] = records[mainThreadRecord++];
+ }
+ for (;mainThreadRecord < records.length; ++mainThreadRecord)
+ result[outputIndex++] = records[mainThreadRecord];
+ for (;backgroundRecord < this._backgroundRecordsBuffer.length; ++backgroundRecord)
+ result[outputIndex++] = this._backgroundRecordsBuffer[backgroundRecord];
+ this._backgroundRecordsBuffer = [];
+ return result;
+ }
+};
diff --git a/Source/devtools/front_end/TimelineOverviewPane.js b/Source/devtools/front_end/TimelineOverviewPane.js
index 5287a2e..9c69c1d 100644
--- a/Source/devtools/front_end/TimelineOverviewPane.js
+++ b/Source/devtools/front_end/TimelineOverviewPane.js
@@ -38,8 +38,6 @@
WebInspector.View.call(this);
this.element.id = "timeline-overview-pane";
- this._windowStartTime = 0;
- this._windowEndTime = Infinity;
this._eventDividers = [];
this._model = model;
@@ -72,39 +70,33 @@
/**
* @param {!WebInspector.TimelineOverviewBase} overviewControl
*/
- willSetOverviewControl: function(overviewControl)
+ setOverviewControl: function(overviewControl)
{
- this._sameOverviewControl = this._overviewControl === overviewControl;
- if (this._sameOverviewControl)
+ if (this._overviewControl === overviewControl)
return;
- this._windowTimes = null;
+
+ var windowTimes = null;
+
if (this._overviewControl) {
- this._windowTimes = this._overviewControl.windowTimes(this.windowLeft(), this.windowRight());
+ windowTimes = this._overviewControl.windowTimes(this._overviewGrid.windowLeft(), this._overviewGrid.windowRight());
this._overviewControl.detach();
}
this._overviewControl = overviewControl;
this._overviewControl.show(this._overviewGrid.element);
this._update();
- },
-
- didSetOverviewControl: function()
- {
- if (this._sameOverviewControl)
- return;
- if (this._windowTimes && this._windowTimes.startTime >= 0)
- this.setWindowTimes(this._windowTimes.startTime, this._windowTimes.endTime);
- this._update();
+ if (windowTimes)
+ this.setWindowTimes(windowTimes.startTime, windowTimes.endTime);
},
_update: function()
{
delete this._refreshTimeout;
- this._updateWindow();
this._overviewCalculator.setWindow(this._model.minimumRecordTime(), this._model.maximumRecordTime());
this._overviewCalculator.setDisplayWindow(0, this._overviewGrid.clientWidth());
-
- this._overviewControl.update();
+ this._updateWindow();
+ if (this._overviewControl)
+ this._overviewControl.update();
this._overviewGrid.updateDividers(this._overviewCalculator);
this._updateEventDividers();
},
@@ -127,15 +119,6 @@
this._overviewGrid.addEventDividers(dividers);
},
- /**
- * @param {!WebInspector.TimelineFrame} frame
- */
- zoomToFrame: function(frame)
- {
- this.setWindowTimes(frame.startTime, frame.endTime);
- this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged);
- },
-
_onRecordAdded: function(event)
{
var record = event.data;
@@ -151,50 +134,32 @@
_reset: function()
{
- this._windowStartTime = 0;
- this._windowEndTime = Infinity;
this._overviewCalculator.reset();
this._overviewGrid.reset();
this._overviewGrid.setResizeEnabled(false);
this._eventDividers = [];
this._overviewGrid.updateDividers(this._overviewCalculator);
- this._overviewControl.reset();
+ if (this._overviewControl)
+ this._overviewControl.reset();
this._update();
},
- windowStartTime: function()
- {
- return this._windowStartTime || this._model.minimumRecordTime();
- },
-
- windowEndTime: function()
- {
- return this._windowEndTime < Infinity ? this._windowEndTime : this._model.maximumRecordTime();
- },
-
- windowLeft: function()
- {
- return this._overviewGrid.windowLeft();
- },
-
- windowRight: function()
- {
- return this._overviewGrid.windowRight();
- },
-
- _onWindowChanged: function()
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onWindowChanged: function(event)
{
if (this._ignoreWindowChangedEvent)
return;
- var times = this._overviewControl.windowTimes(this.windowLeft(), this.windowRight());
- this._windowStartTime = times.startTime;
- this._windowEndTime = times.endTime;
- this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged);
+ var windowTimes = this._overviewControl.windowTimes(this._overviewGrid.windowLeft(), this._overviewGrid.windowRight());
+ this._windowStartTime = windowTimes.startTime;
+ this._windowEndTime = windowTimes.endTime;
+ this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged, windowTimes);
},
/**
- * @param {!Number} startTime
- * @param {!Number} endTime
+ * @param {number} startTime
+ * @param {number} endTime
*/
setWindowTimes: function(startTime, endTime)
{
@@ -235,12 +200,16 @@
WebInspector.TimelineOverviewCalculator.prototype = {
/**
* @param {number} time
+ * @return {number}
*/
computePosition: function(time)
{
return (time - this._minimumBoundary) / this.boundarySpan() * this._workingArea + this.paddingLeft;
},
+ /**
+ * @return {!{start: number, end: number}}
+ */
computeBarGraphPercentages: function(record)
{
var start = (WebInspector.TimelineModel.startTimeInSeconds(record) - this._minimumBoundary) / this.boundarySpan() * 100;
@@ -283,21 +252,33 @@
return Number.secondsToString(value, hires);
},
+ /**
+ * @return {number}
+ */
maximumBoundary: function()
{
return this._maximumBoundary;
},
+ /**
+ * @return {number}
+ */
minimumBoundary: function()
{
return this._minimumBoundary;
},
+ /**
+ * @return {number}
+ */
zeroTime: function()
{
return this._minimumBoundary;
},
+ /**
+ * @return {number}
+ */
boundarySpan: function()
{
return this._maximumBoundary - this._minimumBoundary;
@@ -312,7 +293,6 @@
WebInspector.TimelineOverviewBase = function(model)
{
WebInspector.View.call(this);
- this.element.classList.add("fill");
this._model = model;
this._canvas = this.element.createChild("canvas", "fill");
@@ -326,6 +306,7 @@
/**
* @param {number} windowLeft
* @param {number} windowRight
+ * @return {!{startTime: number, endTime: number}}
*/
windowTimes: function(windowLeft, windowRight)
{
@@ -340,6 +321,7 @@
/**
* @param {number} startTime
* @param {number} endTime
+ * @return {!{left: number, right: number}}
*/
windowBoundaries: function(startTime, endTime)
{
@@ -360,24 +342,3 @@
__proto__: WebInspector.View.prototype
}
-
-/**
- * @constructor
- * @implements {WebInspector.TimelinePresentationModel.Filter}
- * @param {!WebInspector.TimelineOverviewPane} pane
- */
-WebInspector.TimelineWindowFilter = function(pane)
-{
- this._pane = pane;
-}
-
-WebInspector.TimelineWindowFilter.prototype = {
- /**
- * @param {!WebInspector.TimelinePresentationModel.Record} record
- * @return {boolean}
- */
- accept: function(record)
- {
- return record.lastChildEndTime >= this._pane._windowStartTime && record.startTime <= this._pane._windowEndTime;
- }
-}
diff --git a/Source/devtools/front_end/TimelinePanel.js b/Source/devtools/front_end/TimelinePanel.js
index 01deccb..8315c06 100644
--- a/Source/devtools/front_end/TimelinePanel.js
+++ b/Source/devtools/front_end/TimelinePanel.js
@@ -30,19 +30,20 @@
*/
importScript("MemoryStatistics.js");
-importScript("DOMCountersGraph.js");
+importScript("CountersGraph.js");
importScript("PieChart.js");
importScript("TimelineModel.js");
importScript("TimelineOverviewPane.js");
importScript("TimelinePresentationModel.js");
-importScript("TimelineFrameController.js");
+importScript("TimelineFrameModel.js");
importScript("TimelineEventOverview.js");
importScript("TimelineFrameOverview.js");
importScript("TimelineMemoryOverview.js");
+importScript("TimelineFlameChart.js");
+importScript("TimelineView.js");
/**
* @constructor
- * @implements {WebInspector.Searchable}
* @extends {WebInspector.Panel}
*/
WebInspector.TimelinePanel = function()
@@ -50,151 +51,66 @@
WebInspector.Panel.call(this, "timeline");
this.registerRequiredCSS("timelinePanel.css");
this.registerRequiredCSS("filter.css");
- this.element.classList.add("vbox");
this.element.addEventListener("contextmenu", this._contextMenu.bind(this), false);
+ this._windowStartTime = 0;
+ this._windowEndTime = Infinity;
+
// Create model.
this._model = new WebInspector.TimelineModel();
- this._calculator = new WebInspector.TimelineCalculator(this._model);
- this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onTimelineEventRecorded, this);
- this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared, this._onRecordsCleared, this);
this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted, this._onRecordingStarted, this);
this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped, this._onRecordingStopped, this);
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared, this._onRecordsCleared, this);
this._presentationModeSetting = WebInspector.settings.createSetting("timelineOverviewMode", WebInspector.TimelinePanel.Mode.Events);
this._glueRecordsSetting = WebInspector.settings.createSetting("timelineGlueRecords", false);
this._createStatusBarItems();
+ this._topPane = new WebInspector.SplitView(true, false);
+ this._topPane.element.id = "timeline-overview-panel";
+ this._topPane.show(this.element);
+ this._topPane.addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged, this._sidebarResized, this);
+ this._topPane.setResizable(false);
this._createPresentationSelector();
// Create top overview component.
this._overviewPane = new WebInspector.TimelineOverviewPane(this._model);
- this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events.WindowChanged, this._windowChanged.bind(this));
- this._overviewPane.show(this._presentationSelector.element);
+ this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events.WindowChanged, this._onWindowChanged.bind(this));
+ this._overviewPane.show(this._topPane.mainElement());
- // Create presentation model.
- this._presentationModel = new WebInspector.TimelinePresentationModel();
- this._presentationModel.addFilter(new WebInspector.TimelineWindowFilter(this._overviewPane));
- this._presentationModel.addFilter(new WebInspector.TimelineCategoryFilter());
- this._presentationModel.addFilter(this._durationFilter);
- this._presentationModel.setGlueRecords(this._glueParentButton.toggled);
+ this._createFileSelector();
+ this._registerShortcuts();
- this._frameMode = false;
- this._boundariesAreValid = true;
- this._scrollTop = 0;
-
- // Create layout componets.
-
- // -------------------------------
- // | Overview |
- // |-------------------------------|
- // | | | |
- // | | Records | |
- // | | | Details |
- // |----------------| |
- // | | Memory | |
- // -------------------------------
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._willReloadPage, this);
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._loadEventFired, this);
// Create top level properties splitter.
- this._detailsSplitView = new WebInspector.SplitView(false, "timeline-details");
- this._detailsSplitView.element.classList.remove("fill");
+ this._detailsSplitView = new WebInspector.SplitView(false, true, "timeline-details");
this._detailsSplitView.element.classList.add("timeline-details-split");
- this._detailsSplitView.sidebarElement.classList.add("timeline-details");
- this._detailsSplitView.show(this.element);
- this._detailsSplitView.mainElement.classList.add("vbox");
+ this._detailsSplitView.sidebarElement().classList.add("timeline-details");
this._detailsSplitView.setMainElementConstraints(undefined, 40);
this._detailsView = new WebInspector.TimelineDetailsView();
- this._detailsView.show(this._detailsSplitView.sidebarElement);
this._detailsSplitView.installResizer(this._detailsView.titleElement());
+ this._detailsView.show(this._detailsSplitView.sidebarElement());
+
+ this._stackView = new WebInspector.StackView(false);
+ this._stackView.show(this._detailsSplitView.mainElement());
+ this._stackView.element.classList.add("timeline-view-stack");
WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._dockSideChanged.bind(this));
WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));
this._dockSideChanged();
- // Create memory splitter as a left child of properties.
- this._searchableView = new WebInspector.SearchableView(this);
- this._searchableView.show(this._detailsSplitView.mainElement);
-
- this._timelineMemorySplitter = new WebInspector.SplitView(false, "timeline-memory");
- this._timelineMemorySplitter.element.classList.remove("fill");
- this._timelineMemorySplitter.element.classList.add("timeline-memory-split");
- this._timelineMemorySplitter.show(this._searchableView.element);
- if (this._presentationModeSetting.get() !== WebInspector.TimelinePanel.Mode.Memory)
- this._timelineMemorySplitter.showOnlyFirst();
-
- // Create records sidebar as a top memory splitter child.
- this._sidebarView = new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start, "timeline-split");
- this._sidebarView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this._sidebarResized, this);
- this._sidebarView.setSecondIsSidebar(false);
- this._sidebarView.show(this._timelineMemorySplitter.mainElement);
- this._containerElement = this._sidebarView.element;
- this._containerElement.tabIndex = 0;
- this._containerElement.id = "timeline-container";
- this._containerElement.addEventListener("scroll", this._onScroll.bind(this), false);
-
- // Create memory statistics as a bottom memory splitter child.
- this._memoryStatistics = new WebInspector.DOMCountersGraph(this, this._model);
- this._memoryStatistics.show(this._timelineMemorySplitter.sidebarElement);
- this._timelineMemorySplitter.installResizer(this._memoryStatistics.resizeElement());
-
- // Create records list in the records sidebar.
- this._sidebarView.sidebarElement.classList.add("vbox");
- this._sidebarView.sidebarElement.createChild("div", "timeline-records-title").textContent = WebInspector.UIString("RECORDS");
- this._sidebarListElement = this._sidebarView.sidebarElement.createChild("div", "timeline-records-list");
-
- // Create grid in the records main area.
- this._gridContainer = new WebInspector.ViewWithResizeCallback(this._onViewportResize.bind(this));
- this._gridContainer.element.classList.add("fill");
- this._gridContainer.element.id = "resources-container-content";
- this._gridContainer.show(this._sidebarView.mainElement);
- this._timelineGrid = new WebInspector.TimelineGrid();
- this._itemsGraphsElement = this._timelineGrid.itemsGraphsElement;
- this._itemsGraphsElement.id = "timeline-graphs";
- this._gridContainer.element.appendChild(this._timelineGrid.element);
- this._timelineGrid.gridHeaderElement.id = "timeline-grid-header";
- this._timelineGrid.gridHeaderElement.classList.add("fill");
- this._memoryStatistics.setMainTimelineGrid(this._timelineGrid);
- this._timelineMemorySplitter.mainElement.appendChild(this._timelineGrid.gridHeaderElement);
-
- // Create gap elements
- this._topGapElement = this._itemsGraphsElement.createChild("div", "timeline-gap");
- this._graphRowsElement = this._itemsGraphsElement.createChild("div");
- this._bottomGapElement = this._itemsGraphsElement.createChild("div", "timeline-gap");
- this._expandElements = this._itemsGraphsElement.createChild("div");
- this._expandElements.id = "orphan-expand-elements";
-
- this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
-
- this.element.addEventListener("mousemove", this._mouseMove.bind(this), false);
- this.element.addEventListener("mouseout", this._mouseOut.bind(this), false);
- this.element.addEventListener("keydown", this._keyDown.bind(this), false);
-
- this._expandOffset = 15;
-
- // Create gpu tasks containers.
- this._mainThreadTasks = /** @type {!Array.<!TimelineAgent.TimelineEvent>} */ ([]);
- this._gpuTasks = /** @type {!Array.<!TimelineAgent.TimelineEvent>} */ ([]);
- var utilizationStripsElement = this._timelineGrid.gridHeaderElement.createChild("div", "timeline-utilization-strips vbox");
- this._cpuBarsElement = utilizationStripsElement.createChild("div", "timeline-utilization-strip");
- if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
- this._gpuBarsElement = utilizationStripsElement.createChild("div", "timeline-utilization-strip gpu");
-
- this._createFileSelector();
- this._registerShortcuts();
- this._allRecordsCount = 0;
-
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage, this._willReloadPage, this);
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load, this._loadEventFired, this);
-
- this._createOverviewControls();
this._selectPresentationMode(this._presentationModeSetting.get());
+ this._detailsSplitView.show(this.element);
}
WebInspector.TimelinePanel.Mode = {
Events: "Events",
Frames: "Frames",
- Memory: "Memory"
+ Memory: "Memory",
+ FlameChart: "FlameChart"
};
// Define row and header height, should be in sync with styles for timeline graphs.
@@ -204,96 +120,150 @@
WebInspector.TimelinePanel.durationFilterPresetsMs = [0, 1, 15];
WebInspector.TimelinePanel.prototype = {
+ _dockSideChanged: function()
+ {
+ var dockSide = WebInspector.dockController.dockSide();
+ var vertically = false;
+ if (dockSide === WebInspector.DockController.State.DockedToBottom)
+ vertically = true;
+ else
+ vertically = !WebInspector.settings.splitVerticallyWhenDockedToRight.get();
+ this._detailsSplitView.setVertical(vertically);
+ this._detailsView.setVertical(vertically);
+ },
+
+ /**
+ * @param {string} title
+ * @param {!DocumentFragment} content
+ */
+ setDetailsContent: function(title, content)
+ {
+ this._detailsView.setContent(title, content);
+ },
+
+ /**
+ * @return {number}
+ */
+ windowStartTime: function()
+ {
+ if (this._windowStartTime)
+ return this._windowStartTime;
+ if (this._model.minimumRecordTime() != -1)
+ return this._model.minimumRecordTime();
+ return 0;
+ },
+
+ /**
+ * @return {number}
+ */
+ windowEndTime: function()
+ {
+ if (this._windowEndTime < Infinity)
+ return this._windowEndTime;
+ if (this._model.maximumRecordTime() != -1)
+ return this._model.maximumRecordTime();
+ return Infinity;
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _sidebarResized: function(event)
+ {
+ var width = /** @type {number} */ (event.data);
+ this._topPane.setSidebarSize(width);
+ for (var i = 0; i < this._currentViews.length; ++i)
+ this._currentViews[i].setSidebarSize(width);
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onWindowChanged: function(event)
+ {
+ this._windowStartTime = event.data.startTime;
+ this._windowEndTime = event.data.endTime;
+ for (var i = 0; i < this._currentViews.length; ++i)
+ this._currentViews[i].setWindowTimes(this._windowStartTime, this._windowEndTime);
+ },
+
+ /**
+ * @param {number} windowStartTime
+ * @param {number} windowEndTime
+ */
+ setWindowTimes: function(windowStartTime, windowEndTime)
+ {
+ this._windowStartTime = windowStartTime;
+ this._windowEndTime = windowEndTime;
+ this._overviewPane.setWindowTimes(windowStartTime, windowEndTime);
+ },
+
+ /**
+ * @param {string} mode
+ */
+ _viewsForMode: function(mode)
+ {
+ var views = this._viewsMap[mode];
+ if (!views) {
+ var timelineView = new WebInspector.TimelineView(this, this._model, this._glueRecordsSetting, mode);
+ views = {
+ mainViews: [timelineView]
+ };
+ switch (mode) {
+ case WebInspector.TimelinePanel.Mode.Events:
+ views.overviewView = new WebInspector.TimelineEventOverview(this._model);
+ break;
+ case WebInspector.TimelinePanel.Mode.Frames:
+ this._frameModel = timelineView.frameModel;
+ views.overviewView = new WebInspector.TimelineFrameOverview(this._model, timelineView.frameModel);
+ break;
+ case WebInspector.TimelinePanel.Mode.Memory:
+ views.overviewView = new WebInspector.TimelineMemoryOverview(this._model);
+ var memoryStatistics = new WebInspector.CountersGraph(timelineView, this._model);
+ views.mainViews.push(memoryStatistics);
+ break;
+ case WebInspector.TimelinePanel.Mode.FlameChart:
+ this._frameModel = new WebInspector.TimelineFrameModel(this._model)
+ views.overviewView = new WebInspector.TimelineFrameOverview(this._model, this._frameModel);
+ var colorGenerator = WebInspector.TimelineFlameChart.colorGenerator(views.overviewView.categoryFillStyles());
+ var dataProviderMain = new WebInspector.TimelineFlameChartDataProvider(this._model, colorGenerator, true);
+ var dataProviderBackground = new WebInspector.TimelineFlameChartDataProvider(this._model, colorGenerator, false);
+ views.mainViews = [
+ new WebInspector.TimelineFlameChart(this, this._model, dataProviderMain),
+ new WebInspector.TimelineFlameChart(this, this._model, dataProviderBackground)
+ ];
+ break;
+ default:
+ console.assert(false, "Unknown mode: " + mode);
+ }
+ for (var i = 0; i < views.mainViews.length; ++i)
+ views.mainViews[i].addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged, this._sidebarResized, this);
+ this._viewsMap[mode] = views;
+ }
+ return views;
+ },
+
_createPresentationSelector: function()
{
- this._presentationSelector = new WebInspector.View();
- this._presentationSelector.element.classList.add("hbox");
- this._presentationSelector.element.id = "timeline-overview-panel";
- this._presentationSelector.show(this.element);
+ this._viewsMap = {};
- this._topPaneSidebarElement = this._presentationSelector.element.createChild("div");
- this._topPaneSidebarElement.id = "timeline-overview-sidebar";
+ var topPaneSidebarElement = this._topPane.sidebarElement();
+ topPaneSidebarElement.id = "timeline-overview-sidebar";
- var overviewTreeElement = this._topPaneSidebarElement.createChild("ol", "sidebar-tree vbox");
+ var overviewTreeElement = topPaneSidebarElement.createChild("ol", "sidebar-tree vbox");
var topPaneSidebarTree = new TreeOutline(overviewTreeElement);
this._overviewItems = {};
- this._overviewItems[WebInspector.TimelinePanel.Mode.Events] = new WebInspector.SidebarTreeElement("timeline-overview-sidebar-events",
- WebInspector.UIString("Events"));
- this._overviewItems[WebInspector.TimelinePanel.Mode.Frames] = new WebInspector.SidebarTreeElement("timeline-overview-sidebar-frames",
- WebInspector.UIString("Frames"));
- this._overviewItems[WebInspector.TimelinePanel.Mode.Memory] = new WebInspector.SidebarTreeElement("timeline-overview-sidebar-memory",
- WebInspector.UIString("Memory"));
-
- for (var mode in this._overviewItems) {
+ for (var mode in WebInspector.TimelinePanel.Mode) {
+ if (mode === WebInspector.TimelinePanel.Mode.FlameChart && !WebInspector.experimentsSettings.timelineFlameChart.isEnabled())
+ continue;
+ this._overviewItems[mode] = new WebInspector.SidebarTreeElement("timeline-overview-sidebar-" + mode.toLowerCase(), WebInspector.UIString(mode));
var item = this._overviewItems[mode];
item.onselect = this._onModeChanged.bind(this, mode);
topPaneSidebarTree.appendChild(item);
}
},
- get calculator()
- {
- return this._calculator;
- },
-
- defaultFocusedElement: function()
- {
- return this.element;
- },
-
- /**
- * @return {!WebInspector.SearchableView}
- */
- searchableView: function()
- {
- return this._searchableView;
- },
-
- /**
- * @param {!WebInspector.FilterBar} filterBar
- * @return {boolean}
- */
- _createFilters: function(filterBar)
- {
- this._textFilter = new WebInspector.TextFilterUI();
- this._textFilter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._textFilterChanged, this);
- filterBar.addFilter(this._textFilter);
-
- var durationOptions = [];
- for (var presetIndex = 0; presetIndex < WebInspector.TimelinePanel.durationFilterPresetsMs.length; ++presetIndex) {
- var durationMs = WebInspector.TimelinePanel.durationFilterPresetsMs[presetIndex];
- var durationOption = {};
- if (!durationMs) {
- durationOption.label = WebInspector.UIString("All");
- durationOption.title = WebInspector.UIString("Show all records");
- } else {
- durationOption.label = WebInspector.UIString("\u2265 %dms", durationMs);
- durationOption.title = WebInspector.UIString("Hide records shorter than %dms", durationMs);
- }
- durationOption.value = durationMs;
- durationOptions.push(durationOption);
- }
- this._durationFilter = new WebInspector.TimelineIsLongFilter();
- this._durationComboBoxFilter = new WebInspector.ComboBoxFilterUI(durationOptions);
- this._durationComboBoxFilter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._durationFilterChanged, this);
- filterBar.addFilter(this._durationComboBoxFilter);
-
- this._categoryFilters = {};
- var categoryTypes = [];
- var categories = WebInspector.TimelinePresentationModel.categories();
- for (var categoryName in categories) {
- var category = categories[categoryName];
- if (category.overviewStripGroupIndex < 0)
- continue;
- var filter = new WebInspector.CheckboxFilterUI(category.name, category.title);
- filter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._categoriesFilterChanged.bind(this, category.name), this);
- filterBar.addFilter(filter);
- this._categoryFilters[category.name] = filter;
- }
- return true;
- },
-
_createStatusBarItems: function()
{
var panelStatusBarElement = this.element.createChild("div", "panel-status-bar");
@@ -305,7 +275,7 @@
panelStatusBarElement.appendChild(this.toggleTimelineButton.element);
this.clearButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear"), "clear-status-bar-item");
- this.clearButton.addEventListener("click", this._clearPanel, this);
+ this.clearButton.addEventListener("click", this._onClearButtonClick, this);
this._statusBarButtons.push(this.clearButton);
panelStatusBarElement.appendChild(this.clearButton.element);
@@ -323,62 +293,65 @@
this._statusBarButtons.push(this._glueParentButton);
panelStatusBarElement.appendChild(this._glueParentButton.element);
- panelStatusBarElement.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Capture stacks"), WebInspector.settings.timelineCaptureStacks, true, undefined,
+ panelStatusBarElement.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Capture stacks"), WebInspector.settings.timelineCaptureStacks, true, undefined,
WebInspector.UIString("Capture JavaScript stack on every timeline event")));
this._statusTextContainer = panelStatusBarElement.createChild("div");
- this.recordsCounter = new WebInspector.StatusBarText("");
+ this.recordsCounter = new WebInspector.StatusBarText("", "timeline-records-counter");
this._statusTextContainer.appendChild(this.recordsCounter.element);
this._miscStatusBarItems = panelStatusBarElement.createChild("div", "status-bar-item");
- var hasFilters = this._createFilters(this._filterBar);
- this._filterBar.filterButton().setEnabled(hasFilters);
this._filtersContainer = this.element.createChild("div", "timeline-filters-header hidden");
this._filtersContainer.appendChild(this._filterBar.filtersElement());
this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersToggled, this._onFiltersToggled, this);
},
- _textFilterChanged: function(event)
+ _updateFiltersBar: function()
{
- var searchQuery = this._textFilter.value();
- this._presentationModel.setSearchFilter(null);
- delete this._searchFilter;
-
- function cleanRecord(record)
- {
- delete record.clicked;
- }
- WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children, cleanRecord);
-
- this.searchCanceled();
- if (searchQuery) {
- this._searchFilter = new WebInspector.TimelineSearchFilter(createPlainTextSearchRegex(searchQuery, "i"));
- this._presentationModel.setSearchFilter(this._searchFilter);
- }
- this._invalidateAndScheduleRefresh(true, true);
+ this._filterBar.clear();
+ var hasFilters = this._currentViews[0].createUIFilters(this._filterBar);
+ this._filterBar.filterButton().setEnabled(hasFilters);
},
- _durationFilterChanged: function()
+ /**
+ * @return {!Element}
+ */
+ defaultFocusedElement: function()
{
- var duration = this._durationComboBoxFilter.value();
- var minimumRecordDuration = +duration / 1000.0;
- this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);
- this._invalidateAndScheduleRefresh(true, true);
+ return this.element;
},
- _categoriesFilterChanged: function(name, event)
+ /**
+ * @return {!WebInspector.SearchableView}
+ */
+ searchableView: function()
{
- var categories = WebInspector.TimelinePresentationModel.categories();
- categories[name].hidden = !this._categoryFilters[name].checked();
- this._invalidateAndScheduleRefresh(true, true);
+ return this._currentViews[0].searchableView();
},
_onFiltersToggled: function(event)
{
var toggled = /** @type {boolean} */ (event.data);
this._filtersContainer.enableStyleClass("hidden", !toggled);
- this.onResize();
+ this.doResize();
+ },
+
+ /**
+ * @return {?WebInspector.ProgressIndicator}
+ */
+ _prepareToLoadTimeline: function()
+ {
+ if (this._operationInProgress)
+ return null;
+ if (this._recordingInProgress()) {
+ this.toggleTimelineButton.toggled = false;
+ this._stopRecording();
+ }
+ var progressIndicator = new WebInspector.ProgressIndicator();
+ progressIndicator.addEventListener(WebInspector.ProgressIndicator.Events.Done, this._setOperationInProgress.bind(this, null));
+ this._setOperationInProgress(progressIndicator);
+ return progressIndicator;
},
/**
@@ -389,7 +362,7 @@
this._operationInProgress = !!indicator;
for (var i = 0; i < this._statusBarButtons.length; ++i)
this._statusBarButtons[i].setEnabled(!this._operationInProgress);
- this._glueParentButton.setEnabled(!this._operationInProgress && !this._frameController);
+ this._glueParentButton.setEnabled(!this._operationInProgress && !this._glueMode);
this._statusTextContainer.enableStyleClass("hidden", !!indicator);
this._miscStatusBarItems.removeChildren();
if (indicator)
@@ -398,9 +371,9 @@
_registerShortcuts: function()
{
- this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys.StartStopRecording, this._toggleTimelineButtonClicked.bind(this));
- this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys.SaveToFile, this._saveToFile.bind(this));
- this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys.LoadFromFile, this._selectFileToLoad.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.StartStopRecording, this._toggleTimelineButtonClicked.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.SaveToFile, this._saveToFile.bind(this));
+ this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.LoadFromFile, this._selectFileToLoad.bind(this));
},
_createFileSelector: function()
@@ -462,131 +435,6 @@
this._model.loadFromURL(url, progressIndicator);
},
- _dockSideChanged: function()
- {
- var dockSide = WebInspector.dockController.dockSide();
- var vertically = false;
- if (dockSide === WebInspector.DockController.State.DockedToBottom)
- vertically = true;
- else
- vertically = !WebInspector.settings.splitVerticallyWhenDockedToRight.get();
- this._detailsSplitView.setVertical(vertically);
- this._detailsView.setVertical(vertically);
- },
-
- /**
- * @return {?WebInspector.ProgressIndicator}
- */
- _prepareToLoadTimeline: function()
- {
- if (this._operationInProgress)
- return null;
- if (this._recordingInProgress()) {
- this.toggleTimelineButton.toggled = false;
- this._stopRecording();
- }
- var progressIndicator = new WebInspector.ProgressIndicator();
- progressIndicator.addEventListener(WebInspector.ProgressIndicator.Events.Done, this._setOperationInProgress.bind(this, null));
- this._setOperationInProgress(progressIndicator);
- return progressIndicator;
- },
-
- _rootRecord: function()
- {
- return this._presentationModel.rootRecord();
- },
-
- _updateRecordsCounter: function(recordsInWindowCount)
- {
- this.recordsCounter.setText(WebInspector.UIString("%d of %d records shown", recordsInWindowCount, this._allRecordsCount));
- },
-
- _updateFrameStatistics: function(frames)
- {
- this._lastFrameStatistics = frames.length ? new WebInspector.FrameStatistics(frames) : null;
- },
-
- _updateEventDividers: function()
- {
- this._timelineGrid.removeEventDividers();
- var clientWidth = this._graphRowsElementWidth;
- var dividers = [];
- var eventDividerRecords = this._presentationModel.eventDividerRecords();
-
- for (var i = 0; i < eventDividerRecords.length; ++i) {
- var record = eventDividerRecords[i];
- var positions = this._calculator.computeBarGraphWindowPosition(record);
- var dividerPosition = Math.round(positions.left);
- if (dividerPosition < 0 || dividerPosition >= clientWidth || dividers[dividerPosition])
- continue;
- var divider = WebInspector.TimelinePresentationModel.createEventDivider(record.type, record.title);
- divider.style.left = dividerPosition + "px";
- dividers[dividerPosition] = divider;
- }
- this._timelineGrid.addEventDividers(dividers);
- },
-
- _updateFrameBars: function(frames)
- {
- var clientWidth = this._graphRowsElementWidth;
- if (this._frameContainer)
- this._frameContainer.removeChildren();
- else {
- const frameContainerBorderWidth = 1;
- this._frameContainer = document.createElement("div");
- this._frameContainer.classList.add("fill");
- this._frameContainer.classList.add("timeline-frame-container");
- this._frameContainer.style.height = WebInspector.TimelinePanel.rowHeight + frameContainerBorderWidth + "px";
- this._frameContainer.addEventListener("dblclick", this._onFrameDoubleClicked.bind(this), false);
- }
-
- var dividers = [ this._frameContainer ];
-
- for (var i = 0; i < frames.length; ++i) {
- var frame = frames[i];
- var frameStart = this._calculator.computePosition(frame.startTime);
- var frameEnd = this._calculator.computePosition(frame.endTime);
-
- var frameStrip = document.createElement("div");
- frameStrip.className = "timeline-frame-strip";
- var actualStart = Math.max(frameStart, 0);
- var width = frameEnd - actualStart;
- frameStrip.style.left = actualStart + "px";
- frameStrip.style.width = width + "px";
- frameStrip._frame = frame;
-
- const minWidthForFrameInfo = 60;
- if (width > minWidthForFrameInfo)
- frameStrip.textContent = Number.secondsToString(frame.endTime - frame.startTime, true);
-
- this._frameContainer.appendChild(frameStrip);
-
- if (actualStart > 0) {
- var frameMarker = WebInspector.TimelinePresentationModel.createEventDivider(WebInspector.TimelineModel.RecordType.BeginFrame);
- frameMarker.style.left = frameStart + "px";
- dividers.push(frameMarker);
- }
- }
- this._timelineGrid.addEventDividers(dividers);
- },
-
- _onFrameDoubleClicked: function(event)
- {
- var frameBar = event.target.enclosingNodeOrSelfWithClass("timeline-frame-strip");
- if (!frameBar)
- return;
- this._overviewPane.zoomToFrame(frameBar._frame);
- },
-
- _createOverviewControls: function()
- {
- this._overviewControls = {};
- this._overviewControls[WebInspector.TimelinePanel.Mode.Events] = new WebInspector.TimelineEventOverview(this._model);
- this._frameOverviewControl = new WebInspector.TimelineFrameOverview(this._model);
- this._overviewControls[WebInspector.TimelinePanel.Mode.Frames] = this._frameOverviewControl;
- this._overviewControls[WebInspector.TimelinePanel.Mode.Memory] = new WebInspector.TimelineMemoryOverview(this._model);
- },
-
_selectPresentationMode: function(mode)
{
if (!this._overviewItems[mode])
@@ -596,36 +444,23 @@
_onModeChanged: function(mode)
{
- this._overviewPane.willSetOverviewControl(this._overviewControls[mode]);
-
- var shouldShowMemory = mode === WebInspector.TimelinePanel.Mode.Memory;
- var frameMode = mode === WebInspector.TimelinePanel.Mode.Frames;
+ this.element.classList.remove("timeline-" + this._presentationModeSetting.get().toLowerCase() + "-view");
this._presentationModeSetting.set(mode);
- if (frameMode !== this._frameMode) {
- this._frameMode = frameMode;
- this._glueParentButton.setEnabled(!frameMode);
- this._presentationModel.setGlueRecords(this._glueParentButton.toggled && !frameMode);
- this._repopulateRecords();
-
- if (frameMode) {
- this.element.classList.add("timeline-frame-overview");
- this.recordsCounter.element.classList.add("hidden");
- this._frameController = new WebInspector.TimelineFrameController(this._model, this._frameOverviewControl, this._presentationModel);
- } else {
- this._frameController.dispose();
- this._frameController = null;
- this.element.classList.remove("timeline-frame-overview");
- this.recordsCounter.element.classList.remove("hidden");
- }
+ this.element.classList.add("timeline-" + mode.toLowerCase() + "-view");
+ this._stackView.detachChildViews();
+ var views = this._viewsForMode(mode);
+ this._currentViews = views.mainViews;
+ this._updateFiltersBar();
+ this._glueMode = true;
+ for (var i = 0; i < this._currentViews.length; ++i) {
+ var view = this._currentViews[i];
+ view.setWindowTimes(this.windowStartTime(), this.windowEndTime());
+ this._stackView.appendView(view, "timeline-view");
+ this._glueMode = this._glueMode && view.supportsGlueParentMode();
}
-
- if (shouldShowMemory)
- this._timelineMemorySplitter.showBoth();
- else
- this._timelineMemorySplitter.showOnlyFirst();
- this.onResize();
- this._updateSelectionDetails();
- this._overviewPane.didSetOverviewControl();
+ this._overviewControl = views.overviewView;
+ this._overviewPane.setOverviewControl(this._overviewControl);
+ this._glueParentButton.setEnabled(this._glueMode);
},
/**
@@ -668,103 +503,22 @@
{
var newValue = !this._glueParentButton.toggled;
this._glueParentButton.toggled = newValue;
- this._presentationModel.setGlueRecords(newValue);
this._glueRecordsSetting.set(newValue);
- this._repopulateRecords();
},
- _repopulateRecords: function()
- {
- this._resetPanel();
- this._automaticallySizeWindow = false;
- var records = this._model.records;
- for (var i = 0; i < records.length; ++i)
- this._innerAddRecordToTimeline(records[i]);
- this._invalidateAndScheduleRefresh(false, false);
- },
-
- _onTimelineEventRecorded: function(event)
- {
- if (this._innerAddRecordToTimeline(/** @type {!TimelineAgent.TimelineEvent} */(event.data)))
- this._invalidateAndScheduleRefresh(false, false);
- },
-
- /**
- * @param {!TimelineAgent.TimelineEvent} record
- * @return {boolean}
- */
- _innerAddRecordToTimeline: function(record)
- {
- if (record.type === WebInspector.TimelineModel.RecordType.Program)
- this._mainThreadTasks.push(record);
-
- if (record.type === WebInspector.TimelineModel.RecordType.GPUTask) {
- this._gpuTasks.push(record);
- return WebInspector.TimelineModel.startTimeInSeconds(record) < this._overviewPane.windowEndTime();
- }
-
- var records = this._presentationModel.addRecord(record);
- this._allRecordsCount += records.length;
- var hasVisibleRecords = false;
- var presentationModel = this._presentationModel;
- function checkVisible(record)
- {
- hasVisibleRecords |= presentationModel.isVisible(record);
- }
- WebInspector.TimelinePresentationModel.forAllRecords(records, checkVisible);
-
- function isAdoptedRecord(record)
- {
- return record.parent !== presentationModel.rootRecord;
- }
- // Tell caller update is necessary either if we added a visible record or if we re-parented a record.
- return hasVisibleRecords || records.some(isAdoptedRecord);
- },
-
- _sidebarResized: function()
- {
- var width = this._sidebarView.sidebarWidth();
- this._topPaneSidebarElement.style.flexBasis = width + "px";
- if (this._presentationModeSetting.get() === WebInspector.TimelinePanel.Mode.Memory)
- this._memoryStatistics.setSidebarWidth(width);
- this._timelineGrid.gridHeaderElement.style.left = width + "px";
- },
-
- /**
- * @param {number} width
- */
- setSidebarWidth: function(width)
- {
- if (this._presentationModeSetting.get() === WebInspector.TimelinePanel.Mode.Memory)
- this._sidebarView.setSidebarWidth(width);
- },
-
- _onViewportResize: function()
- {
- this._resize(this._sidebarView.sidebarWidth());
- },
-
- /**
- * @param {number} sidebarWidth
- */
- _resize: function(sidebarWidth)
- {
- this._closeRecordDetails();
- this._graphRowsElementWidth = this._graphRowsElement.offsetWidth;
- this._containerElementHeight = this._containerElement.clientHeight;
- this._timelineGrid.gridHeaderElement.style.width = this._itemsGraphsElement.offsetWidth + "px";
- this._scheduleRefresh(false, true);
- },
-
- _clearPanel: function()
+ _onClearButtonClick: function()
{
this._model.reset();
},
_onRecordsCleared: function()
{
- this._resetPanel();
- this._invalidateAndScheduleRefresh(true, true);
+ this.setWindowTimes(0, Infinity);
+ if (this._frameModel)
+ this._frameModel.reset();
+ for (var i = 0; i < this._currentViews.length; ++i)
+ this._currentViews[i].reset();
+ this._overviewControl.reset();
},
_onRecordingStarted: function()
@@ -784,755 +538,6 @@
this.toggleTimelineButton.toggled = false;
},
- _resetPanel: function()
- {
- this._presentationModel.reset();
- this._boundariesAreValid = false;
- this._adjustScrollPosition(0);
- this._closeRecordDetails();
- this._allRecordsCount = 0;
- this._automaticallySizeWindow = true;
- this._mainThreadTasks = [];
- this._gpuTasks = [];
- },
-
- elementsToRestoreScrollPositionsFor: function()
- {
- return [this._containerElement];
- },
-
- wasShown: function()
- {
- WebInspector.Panel.prototype.wasShown.call(this);
- if (!WebInspector.TimelinePanel._categoryStylesInitialized) {
- WebInspector.TimelinePanel._categoryStylesInitialized = true;
- this._injectCategoryStyles();
- }
- this._overviewPane.willSetOverviewControl(this._overviewControls[this._presentationModeSetting.get()]);
- this._onViewportResize();
- this._refresh();
- },
-
- willHide: function()
- {
- this._closeRecordDetails();
- WebInspector.Panel.prototype.willHide.call(this);
- },
-
- _onScroll: function(event)
- {
- this._closeRecordDetails();
- this._scrollTop = this._containerElement.scrollTop;
- var dividersTop = Math.max(0, this._scrollTop);
- this._timelineGrid.setScrollAndDividerTop(this._scrollTop, dividersTop);
- this._scheduleRefresh(true, true);
- },
-
- /**
- * @param {boolean} preserveBoundaries
- * @param {boolean} userGesture
- */
- _invalidateAndScheduleRefresh: function(preserveBoundaries, userGesture)
- {
- this._presentationModel.invalidateFilteredRecords();
- delete this._searchResults;
- this._scheduleRefresh(preserveBoundaries, userGesture);
- },
-
- /**
- * @param {?WebInspector.TimelinePresentationModel.Record} record
- */
- _selectRecord: function(record)
- {
- if (record === this._lastSelectedRecord)
- return;
-
- // Remove selection rendering.
- if (this._lastSelectedRecord) {
- var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordListRow"));
- if (listRow)
- listRow.renderAsSelected(false);
- var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordGraphRow"));
- if (graphRow)
- graphRow.renderAsSelected(false);
- }
-
- if (!record) {
- this._updateSelectionDetails();
- return;
- }
-
- this._revealRecord(record);
- this._lastSelectedRecord = record;
- var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (record.getUserObject("WebInspector.TimelineRecordListRow"));
- listRow.renderAsSelected(true);
- var graphRow = /** @type {!WebInspector.TimelineRecordListRow} */ (record.getUserObject("WebInspector.TimelineRecordGraphRow"));
- graphRow.renderAsSelected(true);
-
- record.generatePopupContent(showCallback.bind(this));
-
- /**
- * @param {!DocumentFragment} element
- */
- function showCallback(element)
- {
- this._detailsView.setContent(record.title, element);
- }
- },
-
- _updateSelectionDetails: function()
- {
- var startTime = this._overviewPane.windowStartTime() * 1000;
- var endTime = this._overviewPane.windowEndTime() * 1000;
- // Return early in case 0 selection window.
- if (startTime < 0)
- return;
-
- var aggregatedStats = {};
-
- /**
- * @param {number} value
- * @param {!TimelineAgent.TimelineEvent} task
- * @return {number}
- */
- function compareEndTime(value, task)
- {
- return value < task.endTime ? -1 : 1;
- }
-
- /**
- * @param {!TimelineAgent.TimelineEvent} rawRecord
- */
- function aggregateTimeForRecordWithinWindow(rawRecord)
- {
- if (!rawRecord.endTime || rawRecord.endTime < startTime || rawRecord.startTime > endTime)
- return;
-
- var childrenTime = 0;
- var children = rawRecord.children || [];
- for (var i = 0; i < children.length; ++i) {
- var child = children[i];
- if (!child.endTime || child.endTime < startTime || child.startTime > endTime)
- continue;
- childrenTime += Math.min(endTime, child.endTime) - Math.max(startTime, child.startTime);
- aggregateTimeForRecordWithinWindow(child);
- }
- var categoryName = WebInspector.TimelinePresentationModel.categoryForRecord(rawRecord).name;
- var ownTime = Math.min(endTime, rawRecord.endTime) - Math.max(startTime, rawRecord.startTime) - childrenTime;
- aggregatedStats[categoryName] = (aggregatedStats[categoryName] || 0) + ownTime / 1000;
- }
-
- var taskIndex = insertionIndexForObjectInListSortedByFunction(startTime, this._mainThreadTasks, compareEndTime);
- for (; taskIndex < this._mainThreadTasks.length; ++taskIndex) {
- var task = this._mainThreadTasks[taskIndex];
- if (task.startTime > endTime)
- break;
- aggregateTimeForRecordWithinWindow(task);
- }
-
- var aggregatedTotal = 0;
- for (var categoryName in aggregatedStats)
- aggregatedTotal += aggregatedStats[categoryName];
- aggregatedStats["idle"] = Math.max(0, (endTime - startTime) / 1000 - aggregatedTotal);
-
- var fragment = document.createDocumentFragment();
- var pie = WebInspector.TimelinePresentationModel.generatePieChart(aggregatedStats);
- fragment.appendChild(pie.element);
-
- if (this._frameMode && this._lastFrameStatistics) {
- var title = WebInspector.UIString("%s \u2013 %s (%d frames)", Number.secondsToString(this._lastFrameStatistics.startOffset, true), Number.secondsToString(this._lastFrameStatistics.endOffset, true), this._lastFrameStatistics.frameCount);
- fragment.appendChild(WebInspector.TimelinePresentationModel.generatePopupContentForFrameStatistics(this._lastFrameStatistics));
- } else {
- var title = WebInspector.UIString("%s \u2013 %s", this._calculator.formatTime(0, true), this._calculator.formatTime(this._calculator.boundarySpan(), true));
- }
- this._detailsView.setContent(title, fragment);
- },
-
- _windowChanged: function()
- {
- this._invalidateAndScheduleRefresh(false, true);
- this._selectRecord(null);
- },
-
- /**
- * @param {boolean} preserveBoundaries
- * @param {boolean} userGesture
- */
- _scheduleRefresh: function(preserveBoundaries, userGesture)
- {
- this._closeRecordDetails();
- this._boundariesAreValid &= preserveBoundaries;
-
- if (!this.isShowing())
- return;
-
- if (preserveBoundaries || userGesture)
- this._refresh();
- else {
- if (!this._refreshTimeout)
- this._refreshTimeout = setTimeout(this._refresh.bind(this), 300);
- }
- },
-
- _refresh: function()
- {
- if (this._refreshTimeout) {
- clearTimeout(this._refreshTimeout);
- delete this._refreshTimeout;
- }
-
- this._timelinePaddingLeft = this._expandOffset;
- this._calculator.setWindow(this._overviewPane.windowStartTime(), this._overviewPane.windowEndTime());
- this._calculator.setDisplayWindow(this._timelinePaddingLeft, this._graphRowsElementWidth);
-
- var recordsInWindowCount = this._refreshRecords();
- this._updateRecordsCounter(recordsInWindowCount);
- if (!this._boundariesAreValid) {
- this._updateEventDividers();
- var frames = this._frameController && this._presentationModel.filteredFrames(this._overviewPane.windowStartTime(), this._overviewPane.windowEndTime());
- if (frames) {
- this._updateFrameStatistics(frames);
- const maxFramesForFrameBars = 30;
- if (frames.length && frames.length < maxFramesForFrameBars) {
- this._timelineGrid.removeDividers();
- this._updateFrameBars(frames);
- } else
- this._timelineGrid.updateDividers(this._calculator);
- } else
- this._timelineGrid.updateDividers(this._calculator);
- this._refreshAllUtilizationBars();
- }
- if (this._presentationModeSetting.get() === WebInspector.TimelinePanel.Mode.Memory)
- this._memoryStatistics.refresh();
- this._boundariesAreValid = true;
- },
-
- revealRecordAt: function(time)
- {
- var recordToReveal;
- function findRecordToReveal(record)
- {
- if (record.containsTime(time)) {
- recordToReveal = record;
- return true;
- }
- // If there is no record containing the time than use the latest one before that time.
- if (!recordToReveal || record.endTime < time && recordToReveal.endTime < record.endTime)
- recordToReveal = record;
- return false;
- }
- WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children, null, findRecordToReveal);
-
- // The record ends before the window left bound so scroll to the top.
- if (!recordToReveal) {
- this._containerElement.scrollTop = 0;
- return;
- }
-
- this._revealRecord(recordToReveal, true);
- },
-
- /**
- * @param {boolean=} highlight
- */
- _revealRecord: function(recordToReveal, highlight)
- {
- // Expand all ancestors.
- for (var parent = recordToReveal.parent; parent !== this._rootRecord(); parent = parent.parent) {
- if (!parent.collapsed)
- continue;
- this._presentationModel.invalidateFilteredRecords();
- parent.collapsed = false;
- }
- var recordsInWindow = this._presentationModel.filteredRecords();
- var index = recordsInWindow.indexOf(recordToReveal);
- if (highlight)
- this._recordToHighlight = recordToReveal;
-
- var itemOffset = index * WebInspector.TimelinePanel.rowHeight;
- var visibleTop = this._scrollTop - WebInspector.TimelinePanel.headerHeight;
- var visibleBottom = visibleTop + this._containerElementHeight - WebInspector.TimelinePanel.rowHeight;
- if (itemOffset < visibleTop)
- this._containerElement.scrollTop = itemOffset;
- else if (itemOffset > visibleBottom)
- this._containerElement.scrollTop = itemOffset - this._containerElementHeight + WebInspector.TimelinePanel.headerHeight + WebInspector.TimelinePanel.rowHeight;
- else if (highlight)
- this._refresh();
- },
-
- _refreshRecords: function()
- {
- var recordsInWindow = this._presentationModel.filteredRecords();
-
- // Calculate the visible area.
- var visibleTop = this._scrollTop;
- var visibleBottom = visibleTop + this._containerElementHeight;
-
- var rowHeight = WebInspector.TimelinePanel.rowHeight;
- var headerHeight = WebInspector.TimelinePanel.headerHeight;
-
- // Convert visible area to visible indexes. Always include top-level record for a visible nested record.
- var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHeight) / rowHeight), recordsInWindow.length - 1));
- var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom / rowHeight));
- var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeight) / rowHeight));
- if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibleLine) {
- this._automaticallySizeWindow = false;
- // If we're at the top, always use real timeline start as a left window bound so that expansion arrow padding logic works.
- var windowStartTime = startIndex ? recordsInWindow[startIndex].startTime : this._model.minimumRecordTime();
- this._overviewPane.setWindowTimes(windowStartTime, recordsInWindow[Math.max(0, lastVisibleLine - 1)].endTime);
- recordsInWindow = this._presentationModel.filteredRecords();
- endIndex = Math.min(recordsInWindow.length, lastVisibleLine);
- }
-
- // Resize gaps first.
- this._topGapElement.style.height = (startIndex * rowHeight) + "px";
- this._sidebarView.sidebarElement.firstChild.style.flexBasis = (startIndex * rowHeight + headerHeight) + "px";
- this._bottomGapElement.style.height = (recordsInWindow.length - endIndex) * rowHeight + "px";
- var rowsHeight = headerHeight + recordsInWindow.length * rowHeight;
- var totalHeight = Math.max(this._containerElementHeight, rowsHeight);
-
- this._sidebarView.firstElement().style.height = totalHeight + "px";
- this._sidebarView.secondElement().style.height = totalHeight + "px";
- this._sidebarView.resizerElement().style.height = totalHeight + "px";
-
- // Update visible rows.
- var listRowElement = this._sidebarListElement.firstChild;
- var width = this._graphRowsElementWidth;
- this._itemsGraphsElement.removeChild(this._graphRowsElement);
- var graphRowElement = this._graphRowsElement.firstChild;
- var scheduleRefreshCallback = this._invalidateAndScheduleRefresh.bind(this, true, true);
- var selectRecordCallback = this._selectRecord.bind(this);
- this._itemsGraphsElement.removeChild(this._expandElements);
- this._expandElements.removeChildren();
-
- var highlightedRecord = this._recordToHighlight;
- delete this._recordToHighlight;
- var highlightedListRowElement;
- var highlightedGraphRowElement;
-
- for (var i = 0; i < endIndex; ++i) {
- var record = recordsInWindow[i];
-
- if (i < startIndex) {
- var lastChildIndex = i + record.visibleChildrenCount;
- if (lastChildIndex >= startIndex && lastChildIndex < endIndex) {
- var expandElement = new WebInspector.TimelineExpandableElement(this._expandElements);
- var positions = this._calculator.computeBarGraphWindowPosition(record);
- expandElement._update(record, i, positions.left - this._expandOffset, positions.width);
- }
- } else {
- if (!listRowElement) {
- listRowElement = new WebInspector.TimelineRecordListRow(selectRecordCallback, scheduleRefreshCallback).element;
- this._sidebarListElement.appendChild(listRowElement);
- }
- if (!graphRowElement) {
- graphRowElement = new WebInspector.TimelineRecordGraphRow(this._itemsGraphsElement, selectRecordCallback, scheduleRefreshCallback).element;
- this._graphRowsElement.appendChild(graphRowElement);
- }
-
- if (highlightedRecord === record) {
- highlightedListRowElement = listRowElement;
- highlightedGraphRowElement = graphRowElement;
- }
-
- listRowElement.row.update(record, visibleTop);
- graphRowElement.row.update(record, this._calculator, this._expandOffset, i);
- if (this._lastSelectedRecord === record) {
- listRowElement.row.renderAsSelected(true);
- graphRowElement.row.renderAsSelected(true);
- }
-
- listRowElement = listRowElement.nextSibling;
- graphRowElement = graphRowElement.nextSibling;
- }
- }
-
- // Remove extra rows.
- while (listRowElement) {
- var nextElement = listRowElement.nextSibling;
- listRowElement.row.dispose();
- listRowElement = nextElement;
- }
- while (graphRowElement) {
- var nextElement = graphRowElement.nextSibling;
- graphRowElement.row.dispose();
- graphRowElement = nextElement;
- }
-
- this._itemsGraphsElement.insertBefore(this._graphRowsElement, this._bottomGapElement);
- this._itemsGraphsElement.appendChild(this._expandElements);
- this._adjustScrollPosition(recordsInWindow.length * rowHeight + headerHeight);
- this._updateSearchHighlight(false, true);
-
- if (highlightedListRowElement) {
- highlightedListRowElement.classList.add("highlighted-timeline-record");
- highlightedGraphRowElement.classList.add("highlighted-timeline-record");
- }
-
- return recordsInWindow.length;
- },
-
- _refreshAllUtilizationBars: function()
- {
- this._refreshUtilizationBars(WebInspector.UIString("CPU"), this._mainThreadTasks, this._cpuBarsElement);
- if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
- this._refreshUtilizationBars(WebInspector.UIString("GPU"), this._gpuTasks, this._gpuBarsElement);
- },
-
- /**
- * @param {string} name
- * @param {!Array.<!TimelineAgent.TimelineEvent>} tasks
- * @param {?Element} container
- */
- _refreshUtilizationBars: function(name, tasks, container)
- {
- if (!container)
- return;
-
- const barOffset = 3;
- const minGap = 3;
-
- var minWidth = WebInspector.TimelineCalculator._minWidth;
- var widthAdjustment = minWidth / 2;
-
- var width = this._graphRowsElementWidth;
- var boundarySpan = this._overviewPane.windowEndTime() - this._overviewPane.windowStartTime();
- var scale = boundarySpan / (width - minWidth - this._timelinePaddingLeft);
- var startTime = (this._overviewPane.windowStartTime() - this._timelinePaddingLeft * scale) * 1000;
- var endTime = startTime + width * scale * 1000;
-
- /**
- * @param {number} value
- * @param {!TimelineAgent.TimelineEvent} task
- * @return {number}
- */
- function compareEndTime(value, task)
- {
- return value < task.endTime ? -1 : 1;
- }
-
- var taskIndex = insertionIndexForObjectInListSortedByFunction(startTime, tasks, compareEndTime);
-
- var foreignStyle = "gpu-task-foreign";
- var element = container.firstChild;
- var lastElement;
- var lastLeft;
- var lastRight;
-
- for (; taskIndex < tasks.length; ++taskIndex) {
- var task = tasks[taskIndex];
- if (task.startTime > endTime)
- break;
-
- var left = Math.max(0, this._calculator.computePosition(WebInspector.TimelineModel.startTimeInSeconds(task)) + barOffset - widthAdjustment);
- var right = Math.min(width, this._calculator.computePosition(WebInspector.TimelineModel.endTimeInSeconds(task)) + barOffset + widthAdjustment);
-
- if (lastElement) {
- var gap = Math.floor(left) - Math.ceil(lastRight);
- if (gap < minGap) {
- if (!task.data["foreign"])
- lastElement.classList.remove(foreignStyle);
- lastRight = right;
- lastElement._tasksInfo.lastTaskIndex = taskIndex;
- continue;
- }
- lastElement.style.width = (lastRight - lastLeft) + "px";
- }
-
- if (!element)
- element = container.createChild("div", "timeline-graph-bar");
- element.style.left = left + "px";
- element._tasksInfo = {name: name, tasks: tasks, firstTaskIndex: taskIndex, lastTaskIndex: taskIndex};
- if (task.data["foreign"])
- element.classList.add(foreignStyle);
- lastLeft = left;
- lastRight = right;
- lastElement = element;
- element = element.nextSibling;
- }
-
- if (lastElement)
- lastElement.style.width = (lastRight - lastLeft) + "px";
-
- while (element) {
- var nextElement = element.nextSibling;
- element._tasksInfo = null;
- container.removeChild(element);
- element = nextElement;
- }
- },
-
- _adjustScrollPosition: function(totalHeight)
- {
- // Prevent the container from being scrolled off the end.
- if ((this._scrollTop + this._containerElementHeight) > totalHeight + 1)
- this._containerElement.scrollTop = (totalHeight - this._containerElement.offsetHeight);
- },
-
- _getPopoverAnchor: function(element)
- {
- var anchor = element.enclosingNodeOrSelfWithClass("timeline-graph-bar");
- if (anchor && anchor._tasksInfo)
- return anchor;
- return element.enclosingNodeOrSelfWithClass("timeline-frame-strip");
- },
-
- _mouseOut: function()
- {
- this._hideQuadHighlight();
- },
-
- /**
- * @param {?Event} e
- */
- _mouseMove: function(e)
- {
- var rowElement = e.target.enclosingNodeOrSelfWithClass("timeline-tree-item");
- if (rowElement && rowElement.row && rowElement.row._record.highlightQuad && !this._recordingInProgress())
- this._highlightQuad(rowElement.row._record.highlightQuad);
- else
- this._hideQuadHighlight();
-
- var taskBarElement = e.target.enclosingNodeOrSelfWithClass("timeline-graph-bar");
- if (taskBarElement && taskBarElement._tasksInfo) {
- var offset = taskBarElement.offsetLeft;
- this._timelineGrid.showCurtains(offset >= 0 ? offset : 0, taskBarElement.offsetWidth);
- } else
- this._timelineGrid.hideCurtains();
- },
-
- /**
- * @param {?Event} event
- */
- _keyDown: function(event)
- {
- if (!this._lastSelectedRecord || event.shiftKey || event.metaKey || event.ctrlKey)
- return;
-
- var record = this._lastSelectedRecord;
- var recordsInWindow = this._presentationModel.filteredRecords();
- var index = recordsInWindow.indexOf(record);
- if (index === -1)
- index = 0;
-
- switch (event.keyIdentifier) {
- case "Left":
- if (record.parent) {
- if ((!record.expandable || record.collapsed) && record.parent !== this._presentationModel.rootRecord()) {
- this._selectRecord(record.parent);
- } else {
- record.collapsed = true;
- record.clicked = true;
- this._invalidateAndScheduleRefresh(true, true);
- }
- }
- event.consume(true);
- break;
- case "Up":
- if (--index < 0)
- break;
- this._selectRecord(recordsInWindow[index]);
- event.consume(true);
- break;
- case "Right":
- if (record.expandable && record.collapsed) {
- record.collapsed = false;
- record.clicked = true;
- this._invalidateAndScheduleRefresh(true, true);
- } else {
- if (++index >= recordsInWindow.length)
- break;
- this._selectRecord(recordsInWindow[index]);
- }
- event.consume(true);
- break;
- case "Down":
- if (++index >= recordsInWindow.length)
- break;
- this._selectRecord(recordsInWindow[index]);
- event.consume(true);
- break;
- }
- },
-
- /**
- * @param {!Array.<number>} quad
- */
- _highlightQuad: function(quad)
- {
- if (this._highlightedQuad === quad)
- return;
- this._highlightedQuad = quad;
- DOMAgent.highlightQuad(quad, WebInspector.Color.PageHighlight.Content.toProtocolRGBA(), WebInspector.Color.PageHighlight.ContentOutline.toProtocolRGBA());
- },
-
- _hideQuadHighlight: function()
- {
- if (this._highlightedQuad) {
- delete this._highlightedQuad;
- DOMAgent.hideHighlight();
- }
- },
-
- /**
- * @param {!Element} anchor
- * @param {!WebInspector.Popover} popover
- */
- _showPopover: function(anchor, popover)
- {
- if (anchor.classList.contains("timeline-frame-strip")) {
- var frame = anchor._frame;
- popover.show(WebInspector.TimelinePresentationModel.generatePopupContentForFrame(frame), anchor);
- } else {
- if (anchor.row && anchor.row._record)
- anchor.row._record.generatePopupContent(showCallback);
- else if (anchor._tasksInfo)
- popover.show(this._presentationModel.generateMainThreadBarPopupContent(anchor._tasksInfo), anchor, null, null, WebInspector.Popover.Orientation.Bottom);
- }
-
- function showCallback(popupContent)
- {
- popover.show(popupContent, anchor);
- }
- },
-
- _closeRecordDetails: function()
- {
- this._popoverHelper.hidePopover();
- },
-
- _injectCategoryStyles: function()
- {
- var style = document.createElement("style");
- var categories = WebInspector.TimelinePresentationModel.categories();
-
- style.textContent = Object.values(categories).map(WebInspector.TimelinePresentationModel.createStyleRuleForCategory).join("\n");
- document.head.appendChild(style);
- },
-
- jumpToNextSearchResult: function()
- {
- if (!this._searchResults || !this._searchResults.length)
- return;
- var index = this._selectedSearchResult ? this._searchResults.indexOf(this._selectedSearchResult) : -1;
- this._jumpToSearchResult(index + 1);
- },
-
- jumpToPreviousSearchResult: function()
- {
- if (!this._searchResults || !this._searchResults.length)
- return;
- var index = this._selectedSearchResult ? this._searchResults.indexOf(this._selectedSearchResult) : 0;
- this._jumpToSearchResult(index - 1);
- },
-
- _jumpToSearchResult: function(index)
- {
- this._selectSearchResult((index + this._searchResults.length) % this._searchResults.length);
- this._highlightSelectedSearchResult(true);
- },
-
- _selectSearchResult: function(index)
- {
- this._selectedSearchResult = this._searchResults[index];
- this._searchableView.updateCurrentMatchIndex(index);
- },
-
- _highlightSelectedSearchResult: function(revealRecord)
- {
- this._clearHighlight();
- if (this._searchFilter)
- return;
-
- var record = this._selectedSearchResult;
- if (!record)
- return;
-
- for (var element = this._sidebarListElement.firstChild; element; element = element.nextSibling) {
- if (element.row._record === record) {
- element.row.highlight(this._searchRegExp, this._highlightDomChanges);
- return;
- }
- }
-
- if (revealRecord)
- this._revealRecord(record, true);
- },
-
- _clearHighlight: function()
- {
- if (this._highlightDomChanges)
- WebInspector.revertDomChanges(this._highlightDomChanges);
- this._highlightDomChanges = [];
- },
-
- /**
- * @param {boolean} revealRecord
- * @param {boolean} shouldJump
- */
- _updateSearchHighlight: function(revealRecord, shouldJump)
- {
- if (this._searchFilter || !this._searchRegExp) {
- this._clearHighlight();
- return;
- }
-
- if (!this._searchResults)
- this._updateSearchResults(shouldJump);
- this._highlightSelectedSearchResult(revealRecord);
- },
-
- _updateSearchResults: function(shouldJump)
- {
- var searchRegExp = this._searchRegExp;
- if (!searchRegExp)
- return;
-
- var matches = [];
- var presentationModel = this._presentationModel;
-
- function processRecord(record)
- {
- if (presentationModel.isVisible(record) && WebInspector.TimelineRecordListRow.testContentMatching(record, searchRegExp))
- matches.push(record);
- return false;
- }
- WebInspector.TimelinePresentationModel.forAllRecords(presentationModel.rootRecord().children, processRecord);
-
- var matchesCount = matches.length;
- if (matchesCount) {
- this._searchResults = matches;
- this._searchableView.updateSearchMatchesCount(matchesCount);
-
- var selectedIndex = matches.indexOf(this._selectedSearchResult);
- if (shouldJump && selectedIndex === -1)
- selectedIndex = 0;
- this._selectSearchResult(selectedIndex);
- } else {
- this._searchableView.updateSearchMatchesCount(0);
- delete this._selectedSearchResult;
- }
- },
-
- searchCanceled: function()
- {
- this._clearHighlight();
- delete this._searchResults;
- delete this._selectedSearchResult;
- delete this._searchRegExp;
- },
-
- /**
- * @param {string} query
- * @param {boolean} shouldJump
- */
- performSearch: function(query, shouldJump)
- {
- this._searchRegExp = createPlainTextSearchRegex(query, "i");
- delete this._searchResults;
- this._updateSearchHighlight(true, shouldJump);
- },
-
/**
* @param {!WebInspector.Event} event
*/
@@ -1558,454 +563,12 @@
/**
* @constructor
- * @param {!WebInspector.TimelineModel} model
- * @implements {WebInspector.TimelineGrid.Calculator}
- */
-WebInspector.TimelineCalculator = function(model)
-{
- this._model = model;
-}
-
-WebInspector.TimelineCalculator._minWidth = 5;
-
-WebInspector.TimelineCalculator.prototype = {
- /**
- * @param {number} time
- */
- computePosition: function(time)
- {
- return (time - this._minimumBoundary) / this.boundarySpan() * this._workingArea + this.paddingLeft;
- },
-
- computeBarGraphPercentages: function(record)
- {
- var start = (record.startTime - this._minimumBoundary) / this.boundarySpan() * 100;
- var end = (record.startTime + record.selfTime - this._minimumBoundary) / this.boundarySpan() * 100;
- var endWithChildren = (record.lastChildEndTime - this._minimumBoundary) / this.boundarySpan() * 100;
- var cpuWidth = record.coalesced ? endWithChildren - start : record.cpuTime / this.boundarySpan() * 100;
- return {start: start, end: end, endWithChildren: endWithChildren, cpuWidth: cpuWidth};
- },
-
- computeBarGraphWindowPosition: function(record)
- {
- var percentages = this.computeBarGraphPercentages(record);
- var widthAdjustment = 0;
-
- var left = this.computePosition(record.startTime);
- var width = (percentages.end - percentages.start) / 100 * this._workingArea;
- if (width < WebInspector.TimelineCalculator._minWidth) {
- widthAdjustment = WebInspector.TimelineCalculator._minWidth - width;
- width = WebInspector.TimelineCalculator._minWidth;
- }
- var widthWithChildren = (percentages.endWithChildren - percentages.start) / 100 * this._workingArea + widthAdjustment;
- var cpuWidth = percentages.cpuWidth / 100 * this._workingArea + widthAdjustment;
- if (percentages.endWithChildren > percentages.end)
- widthWithChildren += widthAdjustment;
- return {left: left, width: width, widthWithChildren: widthWithChildren, cpuWidth: cpuWidth};
- },
-
- setWindow: function(minimumBoundary, maximumBoundary)
- {
- this._minimumBoundary = minimumBoundary;
- this._maximumBoundary = maximumBoundary;
- },
-
- /**
- * @param {number} paddingLeft
- * @param {number} clientWidth
- */
- setDisplayWindow: function(paddingLeft, clientWidth)
- {
- this._workingArea = clientWidth - WebInspector.TimelineCalculator._minWidth - paddingLeft;
- this.paddingLeft = paddingLeft;
- },
-
- /**
- * @param {number} value
- * @param {boolean=} hires
- * @return {string}
- */
- formatTime: function(value, hires)
- {
- return Number.secondsToString(value + this._minimumBoundary - this._model.minimumRecordTime(), hires);
- },
-
- maximumBoundary: function()
- {
- return this._maximumBoundary;
- },
-
- minimumBoundary: function()
- {
- return this._minimumBoundary;
- },
-
- zeroTime: function()
- {
- return this._model.minimumRecordTime();
- },
-
- boundarySpan: function()
- {
- return this._maximumBoundary - this._minimumBoundary;
- }
-}
-
-/**
- * @constructor
- * @param {function(!WebInspector.TimelinePresentationModel.Record)} selectRecord
- * @param {function()} scheduleRefresh
- */
-WebInspector.TimelineRecordListRow = function(selectRecord, scheduleRefresh)
-{
- this.element = document.createElement("div");
- this.element.row = this;
- this.element.style.cursor = "pointer";
- this.element.addEventListener("click", this._onClick.bind(this), false);
- this.element.addEventListener("mouseover", this._onMouseOver.bind(this), false);
- this.element.addEventListener("mouseout", this._onMouseOut.bind(this), false);
-
- // Warning is float right block, it goes first.
- this._warningElement = this.element.createChild("div", "timeline-tree-item-warning hidden");
-
- this._expandArrowElement = this.element.createChild("div", "timeline-tree-item-expand-arrow");
- this._expandArrowElement.addEventListener("click", this._onExpandClick.bind(this), false);
- var iconElement = this.element.createChild("span", "timeline-tree-icon");
- this._typeElement = this.element.createChild("span", "type");
-
- this._dataElement = this.element.createChild("span", "data dimmed");
- this._scheduleRefresh = scheduleRefresh;
- this._selectRecord = selectRecord;
-}
-
-WebInspector.TimelineRecordListRow.prototype = {
- update: function(record, offset)
- {
- this._record = record;
- this._offset = offset;
-
- this.element.className = "timeline-tree-item timeline-category-" + record.category.name;
- var paddingLeft = 5;
- var step = -3;
- for (var currentRecord = record.parent ? record.parent.parent : null; currentRecord; currentRecord = currentRecord.parent)
- paddingLeft += 12 / (Math.max(1, step++));
- this.element.style.paddingLeft = paddingLeft + "px";
- if (record.isBackground)
- this.element.classList.add("background");
-
- this._typeElement.textContent = record.title;
-
- if (this._dataElement.firstChild)
- this._dataElement.removeChildren();
-
- this._warningElement.enableStyleClass("hidden", !record.hasWarnings() && !record.childHasWarnings());
- this._warningElement.enableStyleClass("timeline-tree-item-child-warning", record.childHasWarnings() && !record.hasWarnings());
-
- if (record.detailsNode())
- this._dataElement.appendChild(record.detailsNode());
- this._expandArrowElement.enableStyleClass("parent", record.children && record.children.length);
- this._expandArrowElement.enableStyleClass("expanded", record.visibleChildrenCount);
- this._record.setUserObject("WebInspector.TimelineRecordListRow", this);
- },
-
- highlight: function(regExp, domChanges)
- {
- var matchInfo = this.element.textContent.match(regExp);
- if (matchInfo)
- WebInspector.highlightSearchResult(this.element, matchInfo.index, matchInfo[0].length, domChanges);
- },
-
- dispose: function()
- {
- this.element.remove();
- },
-
- /**
- * @param {!Event} event
- */
- _onExpandClick: function(event)
- {
- this._record.collapsed = !this._record.collapsed;
- this._record.clicked = true;
- this._scheduleRefresh();
- event.consume(true);
- },
-
- /**
- * @param {?Event} event
- */
- _onClick: function(event)
- {
- this._selectRecord(this._record);
- },
-
- /**
- * @param {boolean} selected
- */
- renderAsSelected: function(selected)
- {
- this.element.enableStyleClass("selected", selected);
- },
-
- /**
- * @param {?Event} event
- */
- _onMouseOver: function(event)
- {
- this.element.classList.add("hovered");
- var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));
- graphRow.element.classList.add("hovered");
- },
-
- /**
- * @param {?Event} event
- */
- _onMouseOut: function(event)
- {
- this.element.classList.remove("hovered");
- var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));
- graphRow.element.classList.remove("hovered");
- }
-}
-
-/**
- * @param {!WebInspector.TimelinePresentationModel.Record} record
- * @param {!RegExp} regExp
- */
-WebInspector.TimelineRecordListRow.testContentMatching = function(record, regExp)
-{
- var toSearchText = record.title;
- if (record.detailsNode())
- toSearchText += " " + record.detailsNode().textContent;
- return regExp.test(toSearchText);
-}
-
-/**
- * @constructor
- * @param {function(!WebInspector.TimelinePresentationModel.Record)} selectRecord
- * @param {function()} scheduleRefresh
- */
-WebInspector.TimelineRecordGraphRow = function(graphContainer, selectRecord, scheduleRefresh)
-{
- this.element = document.createElement("div");
- this.element.row = this;
- this.element.addEventListener("mouseover", this._onMouseOver.bind(this), false);
- this.element.addEventListener("mouseout", this._onMouseOut.bind(this), false);
- this.element.addEventListener("click", this._onClick.bind(this), false);
-
- this._barAreaElement = document.createElement("div");
- this._barAreaElement.className = "timeline-graph-bar-area";
- this.element.appendChild(this._barAreaElement);
-
- this._barWithChildrenElement = document.createElement("div");
- this._barWithChildrenElement.className = "timeline-graph-bar with-children";
- this._barWithChildrenElement.row = this;
- this._barAreaElement.appendChild(this._barWithChildrenElement);
-
- this._barCpuElement = document.createElement("div");
- this._barCpuElement.className = "timeline-graph-bar cpu"
- this._barCpuElement.row = this;
- this._barAreaElement.appendChild(this._barCpuElement);
-
- this._barElement = document.createElement("div");
- this._barElement.className = "timeline-graph-bar";
- this._barElement.row = this;
- this._barAreaElement.appendChild(this._barElement);
-
- this._expandElement = new WebInspector.TimelineExpandableElement(graphContainer);
-
- this._selectRecord = selectRecord;
- this._scheduleRefresh = scheduleRefresh;
-}
-
-WebInspector.TimelineRecordGraphRow.prototype = {
- update: function(record, calculator, expandOffset, index)
- {
- this._record = record;
- this.element.className = "timeline-graph-side timeline-category-" + record.category.name;
- if (record.isBackground)
- this.element.classList.add("background");
-
- var barPosition = calculator.computeBarGraphWindowPosition(record);
- this._barWithChildrenElement.style.left = barPosition.left + "px";
- this._barWithChildrenElement.style.width = barPosition.widthWithChildren + "px";
- this._barElement.style.left = barPosition.left + "px";
- this._barElement.style.width = barPosition.width + "px";
- this._barCpuElement.style.left = barPosition.left + "px";
- this._barCpuElement.style.width = barPosition.cpuWidth + "px";
- this._expandElement._update(record, index, barPosition.left - expandOffset, barPosition.width);
-
- this._record.setUserObject("WebInspector.TimelineRecordGraphRow", this);
- },
-
- /**
- * @param {?Event} event
- */
- _onClick: function(event)
- {
- // check if we click arrow and expand if yes.
- if (this._expandElement._arrow.containsEventPoint(event))
- this._expand();
- this._selectRecord(this._record);
- },
-
- /**
- * @param {boolean} selected
- */
- renderAsSelected: function(selected)
- {
- this.element.enableStyleClass("selected", selected);
- },
-
- _expand: function()
- {
- this._record.collapsed = !this._record.collapsed;
- this._record.clicked = true;
- this._scheduleRefresh();
- },
-
- /**
- * @param {?Event} event
- */
- _onMouseOver: function(event)
- {
- this.element.classList.add("hovered");
- var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._record.getUserObject("WebInspector.TimelineRecordListRow"));
- listRow.element.classList.add("hovered");
- },
-
- /**
- * @param {?Event} event
- */
- _onMouseOut: function(event)
- {
- this.element.classList.remove("hovered");
- var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._record.getUserObject("WebInspector.TimelineRecordListRow"));
- listRow.element.classList.remove("hovered");
- },
-
- dispose: function()
- {
- this.element.remove();
- this._expandElement._dispose();
- }
-}
-
-/**
- * @constructor
- */
-WebInspector.TimelineExpandableElement = function(container)
-{
- this._element = container.createChild("div", "timeline-expandable");
- this._element.createChild("div", "timeline-expandable-left");
- this._arrow = this._element.createChild("div", "timeline-expandable-arrow");
-}
-
-WebInspector.TimelineExpandableElement.prototype = {
- _update: function(record, index, left, width)
- {
- const rowHeight = WebInspector.TimelinePanel.rowHeight;
- if (record.visibleChildrenCount || record.expandable) {
- this._element.style.top = index * rowHeight + "px";
- this._element.style.left = left + "px";
- this._element.style.width = Math.max(12, width + 25) + "px";
- if (!record.collapsed) {
- this._element.style.height = (record.visibleChildrenCount + 1) * rowHeight + "px";
- this._element.classList.add("timeline-expandable-expanded");
- this._element.classList.remove("timeline-expandable-collapsed");
- } else {
- this._element.style.height = rowHeight + "px";
- this._element.classList.add("timeline-expandable-collapsed");
- this._element.classList.remove("timeline-expandable-expanded");
- }
- this._element.classList.remove("hidden");
- } else
- this._element.classList.add("hidden");
- },
-
- _dispose: function()
- {
- this._element.remove();
- }
-}
-
-/**
- * @constructor
- * @implements {WebInspector.TimelinePresentationModel.Filter}
- */
-WebInspector.TimelineCategoryFilter = function()
-{
-}
-
-WebInspector.TimelineCategoryFilter.prototype = {
- /**
- * @param {!WebInspector.TimelinePresentationModel.Record} record
- * @return {boolean}
- */
- accept: function(record)
- {
- return !record.category.hidden && record.type !== WebInspector.TimelineModel.RecordType.BeginFrame;
- }
-}
-
-/**
- * @constructor
- * @implements {WebInspector.TimelinePresentationModel.Filter}
- */
-WebInspector.TimelineIsLongFilter = function()
-{
- this._minimumRecordDuration = 0;
-}
-
-WebInspector.TimelineIsLongFilter.prototype = {
- /**
- * @param {number} value
- */
- setMinimumRecordDuration: function(value)
- {
- this._minimumRecordDuration = value;
- },
-
- /**
- * @param {!WebInspector.TimelinePresentationModel.Record} record
- * @return {boolean}
- */
- accept: function(record)
- {
- return this._minimumRecordDuration ? ((record.lastChildEndTime - record.startTime) >= this._minimumRecordDuration) : true;
- }
-}
-
-/**
- * @param {!RegExp} regExp
- * @constructor
- * @implements {WebInspector.TimelinePresentationModel.Filter}
- */
-WebInspector.TimelineSearchFilter = function(regExp)
-{
- this._regExp = regExp;
-}
-
-WebInspector.TimelineSearchFilter.prototype = {
- /**
- * @param {!WebInspector.TimelinePresentationModel.Record} record
- * @return {boolean}
- */
- accept: function(record)
- {
- return WebInspector.TimelineRecordListRow.testContentMatching(record, this._regExp);
- }
-}
-
-/**
- * @constructor
* @extends {WebInspector.View}
*/
WebInspector.TimelineDetailsView = function()
{
WebInspector.View.call(this);
- this.element = document.createElement("div");
- this.element.className = "timeline-details-view fill vbox";
+ this.element.classList.add("timeline-details-view");
this._titleElement = this.element.createChild("div", "timeline-details-view-title");
this._titleElement.textContent = WebInspector.UIString("DETAILS");
this._contentElement = this.element.createChild("div", "timeline-details-view-body");
diff --git a/Source/devtools/front_end/TimelinePanelDescriptor.js b/Source/devtools/front_end/TimelinePanelDescriptor.js
deleted file mode 100644
index 55af813..0000000
--- a/Source/devtools/front_end/TimelinePanelDescriptor.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
- * "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 GOOGLE INC.
- * OR ITS 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.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.PanelDescriptor}
- */
-WebInspector.TimelinePanelDescriptor = function()
-{
- WebInspector.PanelDescriptor.call(this, "timeline", WebInspector.UIString("Timeline"), "TimelinePanel", "TimelinePanel.js");
-}
-
-WebInspector.TimelinePanelDescriptor.prototype = {
- registerShortcuts: function()
- {
- var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Timeline Panel"));
- section.addAlternateKeys(WebInspector.TimelinePanelDescriptor.ShortcutKeys.StartStopRecording, WebInspector.UIString("Start/stop recording"));
- section.addAlternateKeys(WebInspector.TimelinePanelDescriptor.ShortcutKeys.SaveToFile, WebInspector.UIString("Save timeline data"));
- section.addAlternateKeys(WebInspector.TimelinePanelDescriptor.ShortcutKeys.LoadFromFile, WebInspector.UIString("Load timeline data"));
- },
-
- __proto__: WebInspector.PanelDescriptor.prototype
-}
-
-WebInspector.TimelinePanelDescriptor.ShortcutKeys = {
- StartStopRecording: [
- WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- SaveToFile: [
- WebInspector.KeyboardShortcut.makeDescriptor("s", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ],
-
- LoadFromFile: [
- WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
- ]
-}
diff --git a/Source/devtools/front_end/TimelinePresentationModel.js b/Source/devtools/front_end/TimelinePresentationModel.js
index 3ebd2f1..d87adb6 100644
--- a/Source/devtools/front_end/TimelinePresentationModel.js
+++ b/Source/devtools/front_end/TimelinePresentationModel.js
@@ -57,7 +57,7 @@
};
/**
- * @return {!Object.<string, {title: string, category: !WebInspector.TimelineCategory}>}
+ * @return {!Object.<string, !{title: string, category: !WebInspector.TimelineCategory}>}
*/
WebInspector.TimelinePresentationModel._initRecordStyles = function()
{
@@ -118,7 +118,7 @@
/**
* @param {!Object} record
- * @return {{title: string, category: !WebInspector.TimelineCategory}}
+ * @return {!{title: string, category: !WebInspector.TimelineCategory}}
*/
WebInspector.TimelinePresentationModel.recordStyle = function(record)
{
@@ -155,8 +155,8 @@
/**
* @param {!Array.<*>} recordsArray
- * @param {?function(*)} preOrderCallback
- * @param {function(*)=} postOrderCallback
+ * @param {?function(*)|?function(*,number)} preOrderCallback
+ * @param {function(*)|function(*,number)=} postOrderCallback
*/
WebInspector.TimelinePresentationModel.forAllRecords = function(recordsArray, preOrderCallback, postOrderCallback)
{
@@ -168,15 +168,15 @@
var records = entry.array;
if (entry.index < records.length) {
var record = records[entry.index];
- if (preOrderCallback && preOrderCallback(record))
+ if (preOrderCallback && preOrderCallback(record, stack.length))
return;
if (record.children)
stack.push({array: record.children, index: 0, record: record});
- else if (postOrderCallback && postOrderCallback(record))
+ else if (postOrderCallback && postOrderCallback(record, stack.length))
return;
++entry.index;
} else {
- if (entry.record && postOrderCallback && postOrderCallback(entry.record))
+ if (entry.record && postOrderCallback && postOrderCallback(entry.record, stack.length))
return;
stack.pop();
}
@@ -235,10 +235,13 @@
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkDOMContent] = 1;
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkLoad] = 1;
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkFirstPaint] = 1;
+WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.GPUTask] = 1;
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation] = 1;
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.InvalidateLayout] = 1;
-WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.GPUTask] = 1;
+WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.RequestMainThreadFrame] = 1;
WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.ActivateLayerTree] = 1;
+WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.DrawFrame] = 1;
+WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.BeginFrame] = 1;
WebInspector.TimelinePresentationModel.prototype = {
/**
@@ -257,16 +260,14 @@
this._searchFilter = filter;
},
+ /**
+ * @return {!WebInspector.TimelinePresentationModel.Record}
+ */
rootRecord: function()
{
return this._rootRecord;
},
- frames: function()
- {
- return this._frames;
- },
-
reset: function()
{
this._linkifier.reset();
@@ -278,18 +279,12 @@
this._eventDividerRecords = [];
this._timeRecords = {};
this._timeRecordStack = [];
- this._frames = [];
this._minimumRecordTime = -1;
this._layoutInvalidateStack = {};
this._lastScheduleStyleRecalculation = {};
this._webSocketCreateRecords = {};
this._coalescingBuckets = {};
- },
-
- addFrame: function(frame)
- {
- if (!frame.isBackground)
- this._frames.push(frame);
+ this._mergingBuffer = new WebInspector.TimelineMergingRecordBuffer();
},
/**
@@ -300,15 +295,15 @@
{
if (this._minimumRecordTime === -1 || record.startTime < this._minimumRecordTime)
this._minimumRecordTime = WebInspector.TimelineModel.startTimeInSeconds(record);
-
var records;
if (record.type === WebInspector.TimelineModel.RecordType.Program)
records = this._foldSyncTimeRecords(record.children || []);
else
records = [record];
- var result = Array(records.length);
- for (var i = 0; i < records.length; ++i)
- result[i] = this._innerAddRecord(this._rootRecord, records[i]);
+ var mergedRecords = this._mergingBuffer.process(record.thread, records);
+ var result = new Array(mergedRecords.length);
+ for (var i = 0; i < mergedRecords.length; ++i)
+ result[i] = this._innerAddRecord(this._rootRecord, mergedRecords[i]);
return result;
},
@@ -380,12 +375,9 @@
}
formattedRecord.calculateAggregatedStats();
-
- if (parentRecord.coalesced) {
- WebInspector.TimelineModel.aggregateTimeByCategory(parentRecord._aggregatedStats, formattedRecord._aggregatedStats);
- if (parentRecord.startTime > formattedRecord.startTime)
- parentRecord._record.startTime = record.startTime;
- } else if (origin)
+ if (parentRecord.coalesced)
+ this._updateCoalescingParent(formattedRecord);
+ else if (origin)
this._updateAncestorStats(formattedRecord);
origin = formattedRecord.origin();
@@ -475,6 +467,21 @@
},
/**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ */
+ _updateCoalescingParent: function(record)
+ {
+ var parentRecord = record.parent;
+ WebInspector.TimelineModel.aggregateTimeByCategory(parentRecord._aggregatedStats, record._aggregatedStats);
+ if (parentRecord.startTime > record._record.startTime)
+ parentRecord._record.startTime = record._record.startTime;
+ if (parentRecord.endTime < record._record.endTime) {
+ parentRecord._record.endTime = record._record.endTime;
+ parentRecord.lastChildEndTime = parentRecord.endTime;
+ }
+ },
+
+ /**
* @param {!Array.<!TimelineAgent.TimelineEvent>} records
*/
_foldSyncTimeRecords: function(records)
@@ -565,6 +572,9 @@
delete this._filteredRecords;
},
+ /**
+ * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>}
+ */
filteredRecords: function()
{
if (this._filteredRecords)
@@ -624,28 +634,17 @@
return recordsInWindow;
},
- filteredFrames: function(startTime, endTime)
- {
- function compareStartTime(value, object)
- {
- return value - object.startTime;
- }
- function compareEndTime(value, object)
- {
- return value - object.endTime;
- }
- var firstFrame = insertionIndexForObjectInListSortedByFunction(startTime, this._frames, compareStartTime);
- var lastFrame = insertionIndexForObjectInListSortedByFunction(endTime, this._frames, compareEndTime);
- while (lastFrame < this._frames.length && this._frames[lastFrame].endTime <= endTime)
- ++lastFrame;
- return this._frames.slice(firstFrame, lastFrame);
- },
-
+ /**
+ * @return {!Array.<!WebInspector.TimelinePresentationModel.Record>}
+ */
eventDividerRecords: function()
{
return this._eventDividerRecords;
},
+ /**
+ * @return {boolean}
+ */
isVisible: function(record)
{
for (var i = 0; i < this._filters.length; ++i) {
@@ -656,7 +655,7 @@
},
/**
- * @param {{tasks: !Array.<{startTime: number, endTime: number}>, firstTaskIndex: number, lastTaskIndex: number}} info
+ * @param {!{name: string, tasks: !Array.<!{startTime: number, endTime: number}>, firstTaskIndex: number, lastTaskIndex: number}} info
* @return {!Element}
*/
generateMainThreadBarPopupContent: function(info)
@@ -705,10 +704,7 @@
this._children = [];
if (!hidden && parentRecord) {
this.parent = parentRecord;
- if (this.isBackground)
- WebInspector.TimelinePresentationModel.insertRetrospectiveRecord(parentRecord, this);
- else
- parentRecord.children.push(this);
+ parentRecord.children.push(this);
}
if (origin)
this._origin = origin;
@@ -974,8 +970,11 @@
*/
get title()
{
- return this.type === WebInspector.TimelineModel.RecordType.TimeStamp ? this._record.data["message"] :
- WebInspector.TimelinePresentationModel.recordStyle(this._record).title;
+ if (this.type === WebInspector.TimelineModel.RecordType.TimeStamp)
+ return this._record.data["message"];
+ if (WebInspector.TimelinePresentationModel.isEventDivider(this))
+ return WebInspector.UIString("%s at %s", WebInspector.TimelinePresentationModel.recordStyle(this._record).title, Number.secondsToString(this._startTimeOffset, true));
+ return WebInspector.TimelinePresentationModel.recordStyle(this._record).title;
},
/**
@@ -997,7 +996,7 @@
/**
* @return {boolean}
*/
- get isBackground()
+ isBackground: function()
{
return !!this._record.thread;
},
@@ -1037,9 +1036,9 @@
/**
* @return {number}
*/
- get usedHeapSize()
+ get jsHeapSizeUsed()
{
- return this._record.usedHeapSize;
+ return this._record.counters ? this._record.counters.jsHeapSizeUsed : 0;
},
/**
@@ -1052,6 +1051,9 @@
return null;
},
+ /**
+ * @return {boolean}
+ */
containsTime: function(time)
{
return this.startTime <= time && time <= this.endTime;
@@ -1069,6 +1071,10 @@
WebInspector.domAgent.pushNodeByBackendIdToFrontend(this._relatedBackendNodeId, barrier.createCallback(this._setRelatedNode.bind(this)));
barrier.callWhenDone(callbackWrapper.bind(this));
+
+ /**
+ * @this {WebInspector.TimelinePresentationModel.Record}
+ */
function callbackWrapper()
{
callback(this._generatePopupContentSynchronously());
@@ -1120,18 +1126,10 @@
_generatePopupContentSynchronously: function()
{
var fragment = document.createDocumentFragment();
- var pie = WebInspector.TimelinePresentationModel.generatePieChart(this._aggregatedStats, this.category.name);
- // Insert self time.
- if (!this.coalesced && this._children.length) {
- pie.pieChart.addSlice(this._selfTime, this.category.fillColorStop1);
- var rowElement = document.createElement("div");
- pie.footerElement.insertBefore(rowElement, pie.footerElement.firstChild);
- rowElement.createChild("div", "timeline-aggregated-category timeline-" + this.category.name);
- rowElement.createTextChild(WebInspector.UIString("%s %s (Self)", Number.secondsToString(this._selfTime, true), this.category.title));
- }
- fragment.appendChild(pie.element);
-
- var contentHelper = new WebInspector.TimelineDetailsContentHelper(true);
+ if (!this.coalesced && this._children.length)
+ fragment.appendChild(WebInspector.TimelinePresentationModel.generatePieChart(this._aggregatedStats, this.category, this._selfTime));
+ else
+ fragment.appendChild(WebInspector.TimelinePresentationModel.generatePieChart(this._aggregatedStats));
if (this.coalesced)
return fragment;
@@ -1143,6 +1141,10 @@
var callStackLabel;
var relatedNodeLabel;
+ var contentHelper = new WebInspector.TimelineDetailsContentHelper(true);
+ contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.secondsToString(this._selfTime, true));
+ contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.secondsToString(this._startTimeOffset));
+
switch (this.type) {
case recordTypes.GCEvent:
contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.bytesToString(this.data["usedHeapSizeDelta"]));
@@ -1265,13 +1267,13 @@
if (this.scriptName && this.type !== recordTypes.FunctionCall)
contentHelper.appendElementRow(WebInspector.UIString("Function Call"), this._linkifyLocation(this.scriptName, this.scriptLine, 0));
- if (this.usedHeapSize) {
+ if (this.jsHeapSizeUsed) {
if (this.usedHeapSizeDelta) {
var sign = this.usedHeapSizeDelta > 0 ? "+" : "-";
- contentHelper.appendTextRow(WebInspector.UIString("Used Heap Size"),
- WebInspector.UIString("%s (%s%s)", Number.bytesToString(this.usedHeapSize), sign, Number.bytesToString(Math.abs(this.usedHeapSizeDelta))));
+ contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"),
+ WebInspector.UIString("%s (%s%s)", Number.bytesToString(this.jsHeapSizeUsed), sign, Number.bytesToString(Math.abs(this.usedHeapSizeDelta))));
} else if (this.category === WebInspector.TimelinePresentationModel.categories().scripting)
- contentHelper.appendTextRow(WebInspector.UIString("Used Heap Size"), Number.bytesToString(this.usedHeapSize));
+ contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"), Number.bytesToString(this.jsHeapSizeUsed));
}
if (this.callSiteStackTrace)
@@ -1291,18 +1293,14 @@
},
/**
- * @param {!WebInspector.DOMAgent} node
+ * @param {!WebInspector.DOMNode} node
*/
_createNodeAnchor: function(node)
{
var span = document.createElement("span");
span.classList.add("node-link");
- span.addEventListener("click", onClick, false);
+ span.addEventListener("click", WebInspector.Revealer.reveal.bind(WebInspector.Revealer, node, undefined), false);
WebInspector.DOMPresentationUtils.decorateNodeLabel(node, span);
- function onClick()
- {
- WebInspector.showPanel("elements").revealAndSelectNode(node.id);
- }
return span;
},
@@ -1522,38 +1520,56 @@
/**
* @param {!Object} aggregatedStats
- * @param {string=} firstCategoryName
- * @return {{pieChart: !WebInspector.PieChart, element: !Element, footerElement: !Element}}
+ * @param {!WebInspector.TimelineCategory=} selfCategory
+ * @param {number=} selfTime
+ * @return {!Element}
*/
-WebInspector.TimelinePresentationModel.generatePieChart = function(aggregatedStats, firstCategoryName)
+WebInspector.TimelinePresentationModel.generatePieChart = function(aggregatedStats, selfCategory, selfTime)
{
var element = document.createElement("div");
element.className = "timeline-aggregated-info";
var total = 0;
- var categoryNames = [];
- if (firstCategoryName)
- categoryNames.push(firstCategoryName);
- for (var categoryName in WebInspector.TimelinePresentationModel.categories()) {
- if (aggregatedStats[categoryName]) {
- total += aggregatedStats[categoryName];
- if (firstCategoryName !== categoryName)
- categoryNames.push(categoryName);
- }
- }
+ for (var categoryName in aggregatedStats)
+ total += aggregatedStats[categoryName];
var pieChart = new WebInspector.PieChart(total);
element.appendChild(pieChart.element);
var footerElement = element.createChild("div", "timeline-aggregated-info-legend");
- for (var i = 0; i < categoryNames.length; ++i) {
- var category = WebInspector.TimelinePresentationModel.categories()[categoryNames[i]];
- pieChart.addSlice(aggregatedStats[category.name], category.fillColorStop0);
+ // In case of self time, first add self, then children of the same category.
+ if (selfCategory && selfTime) {
+ // Self.
+ pieChart.addSlice(selfTime, selfCategory.fillColorStop1);
var rowElement = footerElement.createChild("div");
- rowElement.createChild("div", "timeline-aggregated-category timeline-" + category.name);
- rowElement.createTextChild(WebInspector.UIString("%s %s", Number.secondsToString(aggregatedStats[category.name], true), category.title));
+ rowElement.createChild("div", "timeline-aggregated-category timeline-" + selfCategory.name);
+ rowElement.createTextChild(WebInspector.UIString("%s %s (Self)", Number.secondsToString(selfTime, true), selfCategory.title));
+
+ // Children of the same category.
+ var categoryTime = aggregatedStats[selfCategory.name];
+ var value = categoryTime - selfTime;
+ if (value > 0) {
+ pieChart.addSlice(value, selfCategory.fillColorStop0);
+ rowElement = footerElement.createChild("div");
+ rowElement.createChild("div", "timeline-aggregated-category timeline-" + selfCategory.name);
+ rowElement.createTextChild(WebInspector.UIString("%s %s (Children)", Number.secondsToString(value, true), selfCategory.title));
+ }
}
- return { pieChart: pieChart, element: element, footerElement: footerElement };
+
+ // Add other categories.
+ for (var categoryName in WebInspector.TimelinePresentationModel.categories()) {
+ var category = WebInspector.TimelinePresentationModel.categories()[categoryName];
+ if (category === selfCategory)
+ continue;
+ var value = aggregatedStats[category.name];
+ if (!value)
+ continue;
+ pieChart.addSlice(value, category.fillColorStop0);
+ var rowElement = footerElement.createChild("div");
+ rowElement.createChild("div", "timeline-aggregated-category timeline-" + category.name);
+ rowElement.createTextChild(WebInspector.UIString("%s %s", Number.secondsToString(value, true), category.title));
+ }
+ return element;
}
WebInspector.TimelinePresentationModel.generatePopupContentForFrame = function(frame)
@@ -1565,7 +1581,6 @@
contentHelper.appendTextRow(WebInspector.UIString("Duration"), durationText);
contentHelper.appendTextRow(WebInspector.UIString("FPS"), Math.floor(1 / durationInSeconds));
contentHelper.appendTextRow(WebInspector.UIString("CPU time"), Number.secondsToString(frame.cpuTime, true));
- contentHelper.appendTextRow(WebInspector.UIString("Thread"), frame.isBackground ? WebInspector.UIString("background") : WebInspector.UIString("main"));
contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"),
WebInspector.TimelinePresentationModel._generateAggregatedInfo(frame.timeByCategory));
return contentHelper.contentTable();
@@ -1633,7 +1648,7 @@
".timeline-details-view .timeline-" + category.name + ", " +
".timeline-category-" + category.name + " .timeline-tree-icon"
- return selector + " { background-image: -webkit-linear-gradient(" +
+ return selector + " { background-image: linear-gradient(" +
category.fillColorStop0 + ", " + category.fillColorStop1 + " 25%, " + category.fillColorStop1 + " 25%, " + category.fillColorStop1 + ");" +
" border-color: " + category.borderColor +
"}";
@@ -1762,6 +1777,9 @@
}
WebInspector.TimelinePopupContentHelper.prototype = {
+ /**
+ * @return {!Element}
+ */
contentTable: function()
{
return this._contentTable;
@@ -1805,7 +1823,7 @@
row.appendChild(titleCell);
var cell = document.createElement("td");
cell.className = "details";
- if (content instanceof Element)
+ if (content instanceof Node)
cell.appendChild(content);
else
cell.createTextChild(content || "");
@@ -1846,7 +1864,7 @@
var rowElement = this.element.createChild("div", "timeline-details-view-row");
rowElement.createChild("span", "timeline-details-view-row-title").textContent = WebInspector.UIString("%s: ", title);
var valueElement = rowElement.createChild("span", "timeline-details-view-row-details" + (this._monospaceValues ? " monospace" : ""));
- if (content instanceof Element)
+ if (content instanceof Node)
valueElement.appendChild(content);
else
valueElement.createTextChild(content || "");
diff --git a/Source/devtools/front_end/TimelineView.js b/Source/devtools/front_end/TimelineView.js
new file mode 100644
index 0000000..f3fa5ba
--- /dev/null
+++ b/Source/devtools/front_end/TimelineView.js
@@ -0,0 +1,1748 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2012 Intel 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ * @implements {WebInspector.Searchable}
+ * @extends {WebInspector.View}
+ * @param {!WebInspector.TimelinePanel} panel
+ * @param {!WebInspector.TimelineModel} model
+ * @param {!WebInspector.Setting} glueRecordsSetting
+ * @param {string} mode
+ */
+WebInspector.TimelineView = function(panel, model, glueRecordsSetting, mode)
+{
+ WebInspector.View.call(this);
+ this.element.classList.add("timeline-view");
+ this.element.classList.add("hbox");
+
+ this._panel = panel;
+ this._model = model;
+ this._currentMode = mode;
+ this._calculator = new WebInspector.TimelineCalculator(this._model);
+ this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded, this._onTimelineEventRecorded, this);
+
+ // Create presentation model.
+ this._presentationModel = new WebInspector.TimelinePresentationModel();
+ this._durationFilter = new WebInspector.TimelineIsLongFilter();
+ this._windowFilter = new WebInspector.TimelineWindowFilter();
+
+ this._presentationModel.addFilter(this._windowFilter);
+ this._presentationModel.addFilter(new WebInspector.TimelineCategoryFilter());
+ this._presentationModel.addFilter(this._durationFilter);
+
+ this._frameMode = mode === WebInspector.TimelinePanel.Mode.Frames;
+ this._boundariesAreValid = true;
+ this._scrollTop = 0;
+
+ this._searchableView = new WebInspector.SearchableView(this);
+ this._searchableView.element.classList.add("searchable-view");
+
+ this._recordsView = this._createRecordsView();
+ this._recordsView.addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged, this._sidebarResized, this);
+ this._recordsView.show(this._searchableView.element);
+ this._searchableView.element.appendChild(this._timelineGrid.gridHeaderElement);
+
+ this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
+
+ this.element.addEventListener("mousemove", this._mouseMove.bind(this), false);
+ this.element.addEventListener("mouseout", this._mouseOut.bind(this), false);
+ this.element.addEventListener("keydown", this._keyDown.bind(this), false);
+
+ this._expandOffset = 15;
+
+ this._allRecordsCount = 0;
+
+ this._presentationModel.setGlueRecords(glueRecordsSetting.get());
+ this._glueRecordsSetting = glueRecordsSetting;
+ this._glueRecordsSetting.addChangeListener(this._onGlueRecordsSettingChanged, this);
+
+ if (mode === WebInspector.TimelinePanel.Mode.Frames) {
+ this.frameModel = new WebInspector.TimelineFrameModel(this._model);
+ this._presentationModel.setGlueRecords(false);
+ }
+
+ this._searchableView.show(this.element);
+}
+
+WebInspector.TimelineView.commonUIFilters = function()
+{
+ var filters = WebInspector.TimelineView._commonUIFilters;
+ if (filters)
+ return filters;
+
+ filters = {};
+ filters._textFilterUI = new WebInspector.TextFilterUI();
+
+ var durationOptions = [];
+ for (var presetIndex = 0; presetIndex < WebInspector.TimelinePanel.durationFilterPresetsMs.length; ++presetIndex) {
+ var durationMs = WebInspector.TimelinePanel.durationFilterPresetsMs[presetIndex];
+ var durationOption = {};
+ if (!durationMs) {
+ durationOption.label = WebInspector.UIString("All");
+ durationOption.title = WebInspector.UIString("Show all records");
+ } else {
+ durationOption.label = WebInspector.UIString("\u2265 %dms", durationMs);
+ durationOption.title = WebInspector.UIString("Hide records shorter than %dms", durationMs);
+ }
+ durationOption.value = durationMs;
+ durationOptions.push(durationOption);
+ }
+ filters._durationFilterUI = new WebInspector.ComboBoxFilterUI(durationOptions);
+
+ filters._categoryFiltersUI = {};
+ var categoryTypes = [];
+ var categories = WebInspector.TimelinePresentationModel.categories();
+ for (var categoryName in categories) {
+ var category = categories[categoryName];
+ if (category.overviewStripGroupIndex < 0)
+ continue;
+ var filter = new WebInspector.CheckboxFilterUI(category.name, category.title);
+ filters._categoryFiltersUI[category.name] = filter;
+ }
+ WebInspector.TimelineView._commonUIFilters = filters;
+ return filters;
+}
+
+WebInspector.TimelineView.prototype = {
+ /**
+ * @return {!WebInspector.SplitView}
+ */
+ _createRecordsView: function()
+ {
+ var recordsView = new WebInspector.SplitView(true, false, "timeline-split");
+ this._containerElement = recordsView.element;
+ this._containerElement.tabIndex = 0;
+ this._containerElement.id = "timeline-container";
+ this._containerElement.addEventListener("scroll", this._onScroll.bind(this), false);
+
+ // Create records list in the records sidebar.
+ recordsView.sidebarElement().createChild("div", "timeline-records-title").textContent = WebInspector.UIString("RECORDS");
+ this._sidebarListElement = recordsView.sidebarElement().createChild("div", "timeline-records-list");
+
+ // Create grid in the records main area.
+ this._gridContainer = new WebInspector.ViewWithResizeCallback(this._onViewportResize.bind(this));
+ this._gridContainer.element.id = "resources-container-content";
+ this._gridContainer.show(recordsView.mainElement());
+ this._timelineGrid = new WebInspector.TimelineGrid();
+ this._itemsGraphsElement = this._timelineGrid.itemsGraphsElement;
+ this._itemsGraphsElement.id = "timeline-graphs";
+ this._gridContainer.element.appendChild(this._timelineGrid.element);
+ this._timelineGrid.gridHeaderElement.id = "timeline-grid-header";
+ this._timelineGrid.gridHeaderElement.classList.add("fill");
+
+ // Create gap elements
+ this._topGapElement = this._itemsGraphsElement.createChild("div", "timeline-gap");
+ this._graphRowsElement = this._itemsGraphsElement.createChild("div");
+ this._bottomGapElement = this._itemsGraphsElement.createChild("div", "timeline-gap");
+ this._expandElements = this._itemsGraphsElement.createChild("div");
+ this._expandElements.id = "orphan-expand-elements";
+
+ // Create gpu tasks containers.
+ /** @type {!Array.<!TimelineAgent.TimelineEvent>} */
+ this._mainThreadTasks = ([]);
+ /** @type {!Array.<!TimelineAgent.TimelineEvent>} */
+ this._gpuTasks = ([]);
+ var utilizationStripsElement = this._timelineGrid.gridHeaderElement.createChild("div", "timeline-utilization-strips vbox");
+ this._cpuBarsElement = utilizationStripsElement.createChild("div", "timeline-utilization-strip");
+ if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+ this._gpuBarsElement = utilizationStripsElement.createChild("div", "timeline-utilization-strip gpu");
+
+ return recordsView;
+ },
+
+ /**
+ * @return {!WebInspector.SearchableView}
+ */
+ searchableView: function()
+ {
+ return this._searchableView;
+ },
+
+ /**
+ * @return {boolean}
+ */
+ supportsGlueParentMode: function()
+ {
+ return !this._frameMode;
+ },
+
+ _onGlueRecordsSettingChanged: function()
+ {
+ this._presentationModel.setGlueRecords(this._glueRecordsSetting.get());
+ this._repopulateRecords();
+ },
+
+ get calculator()
+ {
+ return this._calculator;
+ },
+
+ /**
+ * @param {!WebInspector.FilterBar} filterBar
+ * @return {boolean}
+ */
+ createUIFilters: function(filterBar)
+ {
+ var filters = this._filters;
+ if (!filters) {
+ this._filters = WebInspector.TimelineView.commonUIFilters();
+ filters = this._filters;
+
+ filters._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._textFilterChanged, this);
+ filters._durationFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._durationFilterChanged, this);
+ for (var categoryName in filters._categoryFiltersUI)
+ filters._categoryFiltersUI[categoryName].addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._categoriesFilterChanged.bind(this, categoryName), this);
+ }
+
+ filterBar.addFilter(filters._textFilterUI);
+ filterBar.addFilter(filters._durationFilterUI);
+ for (var categoryName in filters._categoryFiltersUI)
+ filterBar.addFilter(filters._categoryFiltersUI[categoryName]);
+
+ return true;
+ },
+
+ _textFilterChanged: function(event)
+ {
+ var searchQuery = this._filters._textFilterUI.value();
+ this._presentationModel.setSearchFilter(null);
+ delete this._searchFilter;
+
+ function cleanRecord(record)
+ {
+ delete record.clicked;
+ }
+ WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children, cleanRecord);
+
+ this.searchCanceled();
+ if (searchQuery) {
+ this._searchFilter = new WebInspector.TimelineSearchFilter(createPlainTextSearchRegex(searchQuery, "i"));
+ this._presentationModel.setSearchFilter(this._searchFilter);
+ }
+ this._invalidateAndScheduleRefresh(true, true);
+ },
+
+ _durationFilterChanged: function()
+ {
+ var duration = this._filters._durationFilterUI.value();
+ var minimumRecordDuration = +duration / 1000.0;
+ this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);
+ this._invalidateAndScheduleRefresh(true, true);
+ },
+
+ _categoriesFilterChanged: function(name, event)
+ {
+ var categories = WebInspector.TimelinePresentationModel.categories();
+ categories[name].hidden = !this._filters._categoryFiltersUI[name].checked();
+ this._invalidateAndScheduleRefresh(true, true);
+ },
+
+ _rootRecord: function()
+ {
+ return this._presentationModel.rootRecord();
+ },
+
+ _updateRecordsCounter: function(recordsInWindowCount)
+ {
+ this._panel.recordsCounter.setText(WebInspector.UIString("%d of %d records shown", recordsInWindowCount, this._allRecordsCount));
+ },
+
+ _updateFrameStatistics: function(frames)
+ {
+ this._lastFrameStatistics = frames.length ? new WebInspector.FrameStatistics(frames) : null;
+ },
+
+ _updateEventDividers: function()
+ {
+ this._timelineGrid.removeEventDividers();
+ var clientWidth = this._graphRowsElementWidth;
+ var dividers = [];
+ var eventDividerRecords = this._presentationModel.eventDividerRecords();
+
+ for (var i = 0; i < eventDividerRecords.length; ++i) {
+ var record = eventDividerRecords[i];
+ var positions = this._calculator.computeBarGraphWindowPosition(record);
+ var dividerPosition = Math.round(positions.left);
+ if (dividerPosition < 0 || dividerPosition >= clientWidth || dividers[dividerPosition])
+ continue;
+ var divider = WebInspector.TimelinePresentationModel.createEventDivider(record.type, record.title);
+ divider.style.left = dividerPosition + "px";
+ dividers[dividerPosition] = divider;
+ }
+ this._timelineGrid.addEventDividers(dividers);
+ },
+
+ _updateFrameBars: function(frames)
+ {
+ var clientWidth = this._graphRowsElementWidth;
+ if (this._frameContainer)
+ this._frameContainer.removeChildren();
+ else {
+ const frameContainerBorderWidth = 1;
+ this._frameContainer = document.createElement("div");
+ this._frameContainer.classList.add("fill");
+ this._frameContainer.classList.add("timeline-frame-container");
+ this._frameContainer.style.height = WebInspector.TimelinePanel.rowHeight + frameContainerBorderWidth + "px";
+ this._frameContainer.addEventListener("dblclick", this._onFrameDoubleClicked.bind(this), false);
+ }
+
+ var dividers = [];
+
+ for (var i = 0; i < frames.length; ++i) {
+ var frame = frames[i];
+ var frameStart = this._calculator.computePosition(frame.startTime);
+ var frameEnd = this._calculator.computePosition(frame.endTime);
+
+ var frameStrip = document.createElement("div");
+ frameStrip.className = "timeline-frame-strip";
+ var actualStart = Math.max(frameStart, 0);
+ var width = frameEnd - actualStart;
+ frameStrip.style.left = actualStart + "px";
+ frameStrip.style.width = width + "px";
+ frameStrip._frame = frame;
+
+ const minWidthForFrameInfo = 60;
+ if (width > minWidthForFrameInfo)
+ frameStrip.textContent = Number.secondsToString(frame.endTime - frame.startTime, true);
+
+ this._frameContainer.appendChild(frameStrip);
+
+ if (actualStart > 0) {
+ var frameMarker = WebInspector.TimelinePresentationModel.createEventDivider(WebInspector.TimelineModel.RecordType.BeginFrame);
+ frameMarker.style.left = frameStart + "px";
+ dividers.push(frameMarker);
+ }
+ }
+ this._timelineGrid.addEventDividers(dividers);
+ this._timelineGrid.gridHeaderElement.appendChild(this._frameContainer);
+ },
+
+ /**
+ * @param {number} startTime
+ * @param {number} endTime
+ * @return {!Array.<!WebInspector.TimelineFrame>}
+ */
+ _filteredFrames: function(startTime, endTime)
+ {
+ if (!this.frameModel)
+ return [];
+ function compareStartTime(value, object)
+ {
+ return value - object.startTime;
+ }
+ function compareEndTime(value, object)
+ {
+ return value - object.endTime;
+ }
+ var frames = this.frameModel.frames();
+ var firstFrame = insertionIndexForObjectInListSortedByFunction(startTime, frames, compareStartTime);
+ var lastFrame = insertionIndexForObjectInListSortedByFunction(endTime, frames, compareEndTime);
+ while (lastFrame < frames.length && frames[lastFrame].endTime <= endTime)
+ ++lastFrame;
+ return frames.slice(firstFrame, lastFrame);
+ },
+
+
+ _onFrameDoubleClicked: function(event)
+ {
+ var frameBar = event.target.enclosingNodeOrSelfWithClass("timeline-frame-strip");
+ if (!frameBar)
+ return;
+ this._panel.setWindowTimes(frameBar._frame.startTime, frameBar._frame.endTime);
+ },
+
+ _repopulateRecords: function()
+ {
+ this._resetView();
+ this._automaticallySizeWindow = false;
+ var records = this._model.records;
+ for (var i = 0; i < records.length; ++i)
+ this._innerAddRecordToTimeline(records[i]);
+ this._invalidateAndScheduleRefresh(false, false);
+ },
+
+ _onTimelineEventRecorded: function(event)
+ {
+ if (this._innerAddRecordToTimeline(/** @type {!TimelineAgent.TimelineEvent} */(event.data)))
+ this._invalidateAndScheduleRefresh(false, false);
+ },
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} record
+ * @return {boolean}
+ */
+ _innerAddRecordToTimeline: function(record)
+ {
+ if (record.type === WebInspector.TimelineModel.RecordType.Program)
+ this._mainThreadTasks.push(record);
+
+ if (record.type === WebInspector.TimelineModel.RecordType.GPUTask) {
+ this._gpuTasks.push(record);
+ return WebInspector.TimelineModel.startTimeInSeconds(record) < this._panel.windowEndTime();
+ }
+
+ var records = this._presentationModel.addRecord(record);
+ this._allRecordsCount += records.length;
+ var hasVisibleRecords = false;
+ var presentationModel = this._presentationModel;
+ function checkVisible(record)
+ {
+ hasVisibleRecords |= presentationModel.isVisible(record);
+ }
+ WebInspector.TimelinePresentationModel.forAllRecords(records, checkVisible);
+
+ function isAdoptedRecord(record)
+ {
+ return record.parent !== presentationModel.rootRecord;
+ }
+ // Tell caller update is necessary either if we added a visible record or if we re-parented a record.
+ return hasVisibleRecords || records.some(isAdoptedRecord);
+ },
+
+ /**
+ * @param {number} width
+ */
+ setSidebarSize: function(width)
+ {
+ this._recordsView.setSidebarSize(width);
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _sidebarResized: function(event)
+ {
+ this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged, event.data);
+ },
+
+ _onViewportResize: function()
+ {
+ this._resize(this._recordsView.sidebarSize());
+ },
+
+ /**
+ * @param {number} sidebarWidth
+ */
+ _resize: function(sidebarWidth)
+ {
+ this._closeRecordDetails();
+ this._graphRowsElementWidth = this._graphRowsElement.offsetWidth;
+ this._containerElementHeight = this._containerElement.clientHeight;
+ this._timelineGrid.gridHeaderElement.style.left = sidebarWidth + "px";
+ this._timelineGrid.gridHeaderElement.style.width = this._itemsGraphsElement.offsetWidth + "px";
+ this._scheduleRefresh(false, true);
+ },
+
+ _resetView: function()
+ {
+ this._presentationModel.reset();
+ this._boundariesAreValid = false;
+ this._adjustScrollPosition(0);
+ this._closeRecordDetails();
+ this._allRecordsCount = 0;
+ this._automaticallySizeWindow = true;
+ this._mainThreadTasks = [];
+ this._gpuTasks = [];
+ },
+
+ reset: function()
+ {
+ this._resetView();
+ this._windowFilter.reset();
+ this._invalidateAndScheduleRefresh(true, true);
+ this._updateSelectionDetails();
+ },
+
+ /**
+ * @return {!Array.<!Element>}
+ */
+ elementsToRestoreScrollPositionsFor: function()
+ {
+ return [this._containerElement];
+ },
+
+ wasShown: function()
+ {
+ WebInspector.View.prototype.wasShown.call(this);
+
+ this._repopulateRecords();
+ this._updateSelectionDetails();
+
+ if (!WebInspector.TimelinePanel._categoryStylesInitialized) {
+ WebInspector.TimelinePanel._categoryStylesInitialized = true;
+ this._injectCategoryStyles();
+ }
+ this._onViewportResize();
+ this._refresh();
+ },
+
+ willHide: function()
+ {
+ this._closeRecordDetails();
+ WebInspector.View.prototype.willHide.call(this);
+ },
+
+ _onScroll: function(event)
+ {
+ this._closeRecordDetails();
+ this._scrollTop = this._containerElement.scrollTop;
+ var dividersTop = Math.max(0, this._scrollTop);
+ this._timelineGrid.setScrollAndDividerTop(this._scrollTop, dividersTop);
+ this._scheduleRefresh(true, true);
+ },
+
+ /**
+ * @param {boolean} preserveBoundaries
+ * @param {boolean} userGesture
+ */
+ _invalidateAndScheduleRefresh: function(preserveBoundaries, userGesture)
+ {
+ this._presentationModel.invalidateFilteredRecords();
+ delete this._searchResults;
+ this._scheduleRefresh(preserveBoundaries, userGesture);
+ },
+
+ /**
+ * @param {?WebInspector.TimelinePresentationModel.Record} record
+ */
+ _selectRecord: function(record)
+ {
+ if (record === this._lastSelectedRecord)
+ return;
+
+ // Remove selection rendering.
+ if (this._lastSelectedRecord) {
+ var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordListRow"));
+ if (listRow)
+ listRow.renderAsSelected(false);
+ var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordGraphRow"));
+ if (graphRow)
+ graphRow.renderAsSelected(false);
+ }
+
+ if (!record) {
+ this._updateSelectionDetails();
+ return;
+ }
+
+ this._lastSelectedRecord = record;
+ this._revealRecord(record);
+ var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (record.getUserObject("WebInspector.TimelineRecordListRow"));
+ if (listRow)
+ listRow.renderAsSelected(true);
+ var graphRow = /** @type {!WebInspector.TimelineRecordListRow} */ (record.getUserObject("WebInspector.TimelineRecordGraphRow"));
+ if (graphRow)
+ graphRow.renderAsSelected(true);
+
+ record.generatePopupContent(showCallback.bind(this));
+
+ /**
+ * @param {!DocumentFragment} element
+ * @this {WebInspector.TimelineView}
+ */
+ function showCallback(element)
+ {
+ this._panel.setDetailsContent(record.title, element);
+ }
+ },
+
+ _updateSelectionDetails: function()
+ {
+ var startTime = this._panel.windowStartTime() * 1000;
+ var endTime = this._panel.windowEndTime() * 1000;
+ // Return early in case 0 selection window.
+ if (startTime < 0)
+ return;
+
+ var aggregatedStats = {};
+
+ /**
+ * @param {number} value
+ * @param {!TimelineAgent.TimelineEvent} task
+ * @return {number}
+ */
+ function compareEndTime(value, task)
+ {
+ return value < task.endTime ? -1 : 1;
+ }
+
+ /**
+ * @param {!TimelineAgent.TimelineEvent} rawRecord
+ */
+ function aggregateTimeForRecordWithinWindow(rawRecord)
+ {
+ if (!rawRecord.endTime || rawRecord.endTime < startTime || rawRecord.startTime > endTime)
+ return;
+
+ var childrenTime = 0;
+ var children = rawRecord.children || [];
+ for (var i = 0; i < children.length; ++i) {
+ var child = children[i];
+ if (!child.endTime || child.endTime < startTime || child.startTime > endTime)
+ continue;
+ childrenTime += Math.min(endTime, child.endTime) - Math.max(startTime, child.startTime);
+ aggregateTimeForRecordWithinWindow(child);
+ }
+ var categoryName = WebInspector.TimelinePresentationModel.categoryForRecord(rawRecord).name;
+ var ownTime = Math.min(endTime, rawRecord.endTime) - Math.max(startTime, rawRecord.startTime) - childrenTime;
+ aggregatedStats[categoryName] = (aggregatedStats[categoryName] || 0) + ownTime / 1000;
+ }
+
+ var taskIndex = insertionIndexForObjectInListSortedByFunction(startTime, this._mainThreadTasks, compareEndTime);
+ for (; taskIndex < this._mainThreadTasks.length; ++taskIndex) {
+ var task = this._mainThreadTasks[taskIndex];
+ if (task.startTime > endTime)
+ break;
+ aggregateTimeForRecordWithinWindow(task);
+ }
+
+ var aggregatedTotal = 0;
+ for (var categoryName in aggregatedStats)
+ aggregatedTotal += aggregatedStats[categoryName];
+ aggregatedStats["idle"] = Math.max(0, (endTime - startTime) / 1000 - aggregatedTotal);
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild(WebInspector.TimelinePresentationModel.generatePieChart(aggregatedStats));
+
+ if (this._frameMode && this._lastFrameStatistics) {
+ var title = WebInspector.UIString("%s \u2013 %s (%d frames)", Number.secondsToString(this._lastFrameStatistics.startOffset, true), Number.secondsToString(this._lastFrameStatistics.endOffset, true), this._lastFrameStatistics.frameCount);
+ fragment.appendChild(WebInspector.TimelinePresentationModel.generatePopupContentForFrameStatistics(this._lastFrameStatistics));
+ } else {
+ var title = WebInspector.UIString("%s \u2013 %s", this._calculator.formatTime(0, true), this._calculator.formatTime(this._calculator.boundarySpan(), true));
+ }
+ this._panel.setDetailsContent(title, fragment);
+ },
+
+ /**
+ * @param {number} startTime
+ * @param {number} endTime
+ */
+ setWindowTimes: function(startTime, endTime)
+ {
+ this._windowFilter.setWindowTimes(startTime, endTime);
+ this._invalidateAndScheduleRefresh(false, true);
+ this._selectRecord(null);
+ },
+
+ /**
+ * @param {boolean} preserveBoundaries
+ * @param {boolean} userGesture
+ */
+ _scheduleRefresh: function(preserveBoundaries, userGesture)
+ {
+ this._closeRecordDetails();
+ this._boundariesAreValid &= preserveBoundaries;
+
+ if (!this.isShowing())
+ return;
+
+ if (preserveBoundaries || userGesture)
+ this._refresh();
+ else {
+ if (!this._refreshTimeout)
+ this._refreshTimeout = setTimeout(this._refresh.bind(this), 300);
+ }
+ },
+
+ _refresh: function()
+ {
+ if (this._refreshTimeout) {
+ clearTimeout(this._refreshTimeout);
+ delete this._refreshTimeout;
+ }
+ var windowStartTime = this._panel.windowStartTime();
+ var windowEndTime = this._panel.windowEndTime();
+ this._timelinePaddingLeft = this._expandOffset;
+ this._calculator.setWindow(windowStartTime, windowEndTime);
+ this._calculator.setDisplayWindow(this._timelinePaddingLeft, this._graphRowsElementWidth);
+
+ var recordsInWindowCount = this._refreshRecords();
+ this._updateRecordsCounter(recordsInWindowCount);
+ if (!this._boundariesAreValid) {
+ this._updateEventDividers();
+ var frames = this._filteredFrames(windowStartTime, windowEndTime);
+ if (frames) {
+ this._updateFrameStatistics(frames);
+ const maxFramesForFrameBars = 30;
+ if (frames.length && frames.length < maxFramesForFrameBars) {
+ this._timelineGrid.removeDividers();
+ this._updateFrameBars(frames);
+ } else {
+ if (this._frameContainer)
+ this._frameContainer.remove();
+ this._timelineGrid.updateDividers(this._calculator);
+ }
+ } else
+ this._timelineGrid.updateDividers(this._calculator);
+ this._refreshAllUtilizationBars();
+ }
+ this._boundariesAreValid = true;
+ },
+
+ revealRecordAt: function(time)
+ {
+ var recordToReveal;
+ function findRecordToReveal(record)
+ {
+ if (record.containsTime(time)) {
+ recordToReveal = record;
+ return true;
+ }
+ // If there is no record containing the time than use the latest one before that time.
+ if (!recordToReveal || record.endTime < time && recordToReveal.endTime < record.endTime)
+ recordToReveal = record;
+ return false;
+ }
+ WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children, null, findRecordToReveal);
+
+ // The record ends before the window left bound so scroll to the top.
+ if (!recordToReveal) {
+ this._containerElement.scrollTop = 0;
+ return;
+ }
+
+ this._selectRecord(recordToReveal);
+ },
+
+ /**
+ * @param {!WebInspector.TimelinePresentationModel.Record} recordToReveal
+ */
+ _revealRecord: function(recordToReveal)
+ {
+ var needRefresh = false;
+ // Expand all ancestors.
+ for (var parent = recordToReveal.parent; parent !== this._rootRecord(); parent = parent.parent) {
+ if (!parent.collapsed)
+ continue;
+ this._presentationModel.invalidateFilteredRecords();
+ parent.collapsed = false;
+ needRefresh = true;
+ }
+ var recordsInWindow = this._presentationModel.filteredRecords();
+ var index = recordsInWindow.indexOf(recordToReveal);
+
+ var itemOffset = index * WebInspector.TimelinePanel.rowHeight;
+ var visibleTop = this._scrollTop - WebInspector.TimelinePanel.headerHeight;
+ var visibleBottom = visibleTop + this._containerElementHeight - WebInspector.TimelinePanel.rowHeight;
+ if (itemOffset < visibleTop)
+ this._containerElement.scrollTop = itemOffset;
+ else if (itemOffset > visibleBottom)
+ this._containerElement.scrollTop = itemOffset - this._containerElementHeight + WebInspector.TimelinePanel.headerHeight + WebInspector.TimelinePanel.rowHeight;
+ else if (needRefresh)
+ this._refreshRecords();
+ },
+
+ _refreshRecords: function()
+ {
+ var recordsInWindow = this._presentationModel.filteredRecords();
+
+ // Calculate the visible area.
+ var visibleTop = this._scrollTop;
+ var visibleBottom = visibleTop + this._containerElementHeight;
+
+ var rowHeight = WebInspector.TimelinePanel.rowHeight;
+ var headerHeight = WebInspector.TimelinePanel.headerHeight;
+
+ // Convert visible area to visible indexes. Always include top-level record for a visible nested record.
+ var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHeight) / rowHeight), recordsInWindow.length - 1));
+ var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom / rowHeight));
+ var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeight) / rowHeight));
+ if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibleLine) {
+ this._automaticallySizeWindow = false;
+ this._selectRecord(null);
+ // If we're at the top, always use real timeline start as a left window bound so that expansion arrow padding logic works.
+ var windowStartTime = startIndex ? recordsInWindow[startIndex].startTime : this._model.minimumRecordTime();
+ var windowEndTime = recordsInWindow[Math.max(0, lastVisibleLine - 1)].endTime;
+ this._panel.setWindowTimes(windowStartTime, windowEndTime);
+ this._windowFilter.setWindowTimes(windowStartTime, windowEndTime);
+ recordsInWindow = this._presentationModel.filteredRecords();
+ endIndex = Math.min(recordsInWindow.length, lastVisibleLine);
+ }
+
+ // Resize gaps first.
+ this._topGapElement.style.height = (startIndex * rowHeight) + "px";
+ this._recordsView.sidebarElement().firstElementChild.style.flexBasis = (startIndex * rowHeight + headerHeight) + "px";
+ this._bottomGapElement.style.height = (recordsInWindow.length - endIndex) * rowHeight + "px";
+ var rowsHeight = headerHeight + recordsInWindow.length * rowHeight;
+ var totalHeight = Math.max(this._containerElementHeight, rowsHeight);
+
+ this._recordsView.mainElement().style.height = totalHeight + "px";
+ this._recordsView.sidebarElement().style.height = totalHeight + "px";
+ this._recordsView.resizerElement().style.height = totalHeight + "px";
+
+ // Update visible rows.
+ var listRowElement = this._sidebarListElement.firstChild;
+ var width = this._graphRowsElementWidth;
+ this._itemsGraphsElement.removeChild(this._graphRowsElement);
+ var graphRowElement = this._graphRowsElement.firstChild;
+ var scheduleRefreshCallback = this._invalidateAndScheduleRefresh.bind(this, true, true);
+ var selectRecordCallback = this._selectRecord.bind(this);
+ this._itemsGraphsElement.removeChild(this._expandElements);
+ this._expandElements.removeChildren();
+
+ for (var i = 0; i < endIndex; ++i) {
+ var record = recordsInWindow[i];
+
+ if (i < startIndex) {
+ var lastChildIndex = i + record.visibleChildrenCount;
+ if (lastChildIndex >= startIndex && lastChildIndex < endIndex) {
+ var expandElement = new WebInspector.TimelineExpandableElement(this._expandElements);
+ var positions = this._calculator.computeBarGraphWindowPosition(record);
+ expandElement._update(record, i, positions.left - this._expandOffset, positions.width);
+ }
+ } else {
+ if (!listRowElement) {
+ listRowElement = new WebInspector.TimelineRecordListRow(selectRecordCallback, scheduleRefreshCallback).element;
+ this._sidebarListElement.appendChild(listRowElement);
+ }
+ if (!graphRowElement) {
+ graphRowElement = new WebInspector.TimelineRecordGraphRow(this._itemsGraphsElement, selectRecordCallback, scheduleRefreshCallback).element;
+ this._graphRowsElement.appendChild(graphRowElement);
+ }
+
+ listRowElement.row.update(record, visibleTop);
+ graphRowElement.row.update(record, this._calculator, this._expandOffset, i);
+ if (this._lastSelectedRecord === record) {
+ listRowElement.row.renderAsSelected(true);
+ graphRowElement.row.renderAsSelected(true);
+ }
+
+ listRowElement = listRowElement.nextSibling;
+ graphRowElement = graphRowElement.nextSibling;
+ }
+ }
+
+ // Remove extra rows.
+ while (listRowElement) {
+ var nextElement = listRowElement.nextSibling;
+ listRowElement.row.dispose();
+ listRowElement = nextElement;
+ }
+ while (graphRowElement) {
+ var nextElement = graphRowElement.nextSibling;
+ graphRowElement.row.dispose();
+ graphRowElement = nextElement;
+ }
+
+ this._itemsGraphsElement.insertBefore(this._graphRowsElement, this._bottomGapElement);
+ this._itemsGraphsElement.appendChild(this._expandElements);
+ this._adjustScrollPosition(recordsInWindow.length * rowHeight + headerHeight);
+ this._updateSearchHighlight(false, true);
+
+ return recordsInWindow.length;
+ },
+
+ _refreshAllUtilizationBars: function()
+ {
+ this._refreshUtilizationBars(WebInspector.UIString("CPU"), this._mainThreadTasks, this._cpuBarsElement);
+ if (WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+ this._refreshUtilizationBars(WebInspector.UIString("GPU"), this._gpuTasks, this._gpuBarsElement);
+ },
+
+ /**
+ * @param {string} name
+ * @param {!Array.<!TimelineAgent.TimelineEvent>} tasks
+ * @param {?Element} container
+ */
+ _refreshUtilizationBars: function(name, tasks, container)
+ {
+ if (!container)
+ return;
+
+ const barOffset = 3;
+ const minGap = 3;
+
+ var minWidth = WebInspector.TimelineCalculator._minWidth;
+ var widthAdjustment = minWidth / 2;
+
+ var width = this._graphRowsElementWidth;
+ var boundarySpan = this._panel.windowEndTime() - this._panel.windowStartTime();
+ var scale = boundarySpan / (width - minWidth - this._timelinePaddingLeft);
+ var startTime = (this._panel.windowStartTime() - this._timelinePaddingLeft * scale) * 1000;
+ var endTime = startTime + width * scale * 1000;
+
+ /**
+ * @param {number} value
+ * @param {!TimelineAgent.TimelineEvent} task
+ * @return {number}
+ */
+ function compareEndTime(value, task)
+ {
+ return value < task.endTime ? -1 : 1;
+ }
+
+ var taskIndex = insertionIndexForObjectInListSortedByFunction(startTime, tasks, compareEndTime);
+
+ var foreignStyle = "gpu-task-foreign";
+ var element = container.firstChild;
+ var lastElement;
+ var lastLeft;
+ var lastRight;
+
+ for (; taskIndex < tasks.length; ++taskIndex) {
+ var task = tasks[taskIndex];
+ if (task.startTime > endTime)
+ break;
+
+ var left = Math.max(0, this._calculator.computePosition(WebInspector.TimelineModel.startTimeInSeconds(task)) + barOffset - widthAdjustment);
+ var right = Math.min(width, this._calculator.computePosition(WebInspector.TimelineModel.endTimeInSeconds(task)) + barOffset + widthAdjustment);
+
+ if (lastElement) {
+ var gap = Math.floor(left) - Math.ceil(lastRight);
+ if (gap < minGap) {
+ if (!task.data["foreign"])
+ lastElement.classList.remove(foreignStyle);
+ lastRight = right;
+ lastElement._tasksInfo.lastTaskIndex = taskIndex;
+ continue;
+ }
+ lastElement.style.width = (lastRight - lastLeft) + "px";
+ }
+
+ if (!element)
+ element = container.createChild("div", "timeline-graph-bar");
+ element.style.left = left + "px";
+ element._tasksInfo = {name: name, tasks: tasks, firstTaskIndex: taskIndex, lastTaskIndex: taskIndex};
+ if (task.data["foreign"])
+ element.classList.add(foreignStyle);
+ lastLeft = left;
+ lastRight = right;
+ lastElement = element;
+ element = element.nextSibling;
+ }
+
+ if (lastElement)
+ lastElement.style.width = (lastRight - lastLeft) + "px";
+
+ while (element) {
+ var nextElement = element.nextSibling;
+ element._tasksInfo = null;
+ container.removeChild(element);
+ element = nextElement;
+ }
+ },
+
+ _adjustScrollPosition: function(totalHeight)
+ {
+ // Prevent the container from being scrolled off the end.
+ if ((this._scrollTop + this._containerElementHeight) > totalHeight + 1)
+ this._containerElement.scrollTop = (totalHeight - this._containerElement.offsetHeight);
+ },
+
+ _getPopoverAnchor: function(element)
+ {
+ var anchor = element.enclosingNodeOrSelfWithClass("timeline-graph-bar");
+ if (anchor && anchor._tasksInfo)
+ return anchor;
+ return element.enclosingNodeOrSelfWithClass("timeline-frame-strip");
+ },
+
+ _mouseOut: function()
+ {
+ this._hideQuadHighlight();
+ },
+
+ /**
+ * @param {?Event} e
+ */
+ _mouseMove: function(e)
+ {
+ var rowElement = e.target.enclosingNodeOrSelfWithClass("timeline-tree-item");
+ if (rowElement && rowElement.row && rowElement.row._record.highlightQuad)
+ this._highlightQuad(rowElement.row._record.highlightQuad);
+ else
+ this._hideQuadHighlight();
+
+ var taskBarElement = e.target.enclosingNodeOrSelfWithClass("timeline-graph-bar");
+ if (taskBarElement && taskBarElement._tasksInfo) {
+ var offset = taskBarElement.offsetLeft;
+ this._timelineGrid.showCurtains(offset >= 0 ? offset : 0, taskBarElement.offsetWidth);
+ } else
+ this._timelineGrid.hideCurtains();
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _keyDown: function(event)
+ {
+ if (!this._lastSelectedRecord || event.shiftKey || event.metaKey || event.ctrlKey)
+ return;
+
+ var record = this._lastSelectedRecord;
+ var recordsInWindow = this._presentationModel.filteredRecords();
+ var index = recordsInWindow.indexOf(record);
+ var recordsInPage = Math.floor(this._containerElementHeight / WebInspector.TimelinePanel.rowHeight);
+ var rowHeight = WebInspector.TimelinePanel.rowHeight;
+
+ if (index === -1)
+ index = 0;
+
+ switch (event.keyIdentifier) {
+ case "Left":
+ if (record.parent) {
+ if ((!record.expandable || record.collapsed) && record.parent !== this._presentationModel.rootRecord()) {
+ this._selectRecord(record.parent);
+ } else {
+ record.collapsed = true;
+ record.clicked = true;
+ this._invalidateAndScheduleRefresh(true, true);
+ }
+ }
+ event.consume(true);
+ break;
+ case "Up":
+ if (--index < 0)
+ break;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ case "Right":
+ if (record.expandable && record.collapsed) {
+ record.collapsed = false;
+ record.clicked = true;
+ this._invalidateAndScheduleRefresh(true, true);
+ } else {
+ if (++index >= recordsInWindow.length)
+ break;
+ this._selectRecord(recordsInWindow[index]);
+ }
+ event.consume(true);
+ break;
+ case "Down":
+ if (++index >= recordsInWindow.length)
+ break;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ case "PageUp":
+ index = Math.max(0, index - recordsInPage);
+ this._scrollTop = Math.max(0, this._scrollTop - recordsInPage * rowHeight);
+ this._containerElement.scrollTop = this._scrollTop;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ case "PageDown":
+ index = Math.min(recordsInWindow.length - 1, index + recordsInPage);
+ this._scrollTop = Math.min(this._containerElement.scrollHeight - this._containerElementHeight, this._scrollTop + recordsInPage * rowHeight);
+ this._containerElement.scrollTop = this._scrollTop;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ case "Home":
+ index = 0;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ case "End":
+ index = recordsInWindow.length - 1;
+ this._selectRecord(recordsInWindow[index]);
+ event.consume(true);
+ break;
+ }
+ },
+
+ /**
+ * @param {!Array.<number>} quad
+ */
+ _highlightQuad: function(quad)
+ {
+ if (this._highlightedQuad === quad)
+ return;
+ this._highlightedQuad = quad;
+ DOMAgent.highlightQuad(quad, WebInspector.Color.PageHighlight.Content.toProtocolRGBA(), WebInspector.Color.PageHighlight.ContentOutline.toProtocolRGBA());
+ },
+
+ _hideQuadHighlight: function()
+ {
+ if (this._highlightedQuad) {
+ delete this._highlightedQuad;
+ DOMAgent.hideHighlight();
+ }
+ },
+
+ /**
+ * @param {!Element} anchor
+ * @param {!WebInspector.Popover} popover
+ */
+ _showPopover: function(anchor, popover)
+ {
+ if (anchor.classList.contains("timeline-frame-strip")) {
+ var frame = anchor._frame;
+ popover.show(WebInspector.TimelinePresentationModel.generatePopupContentForFrame(frame), anchor);
+ } else {
+ if (anchor.row && anchor.row._record)
+ anchor.row._record.generatePopupContent(showCallback);
+ else if (anchor._tasksInfo)
+ popover.show(this._presentationModel.generateMainThreadBarPopupContent(anchor._tasksInfo), anchor, null, null, WebInspector.Popover.Orientation.Bottom);
+ }
+
+ function showCallback(popupContent)
+ {
+ popover.show(popupContent, anchor);
+ }
+ },
+
+ _closeRecordDetails: function()
+ {
+ this._popoverHelper.hidePopover();
+ },
+
+ _injectCategoryStyles: function()
+ {
+ var style = document.createElement("style");
+ var categories = WebInspector.TimelinePresentationModel.categories();
+
+ style.textContent = Object.values(categories).map(WebInspector.TimelinePresentationModel.createStyleRuleForCategory).join("\n");
+ document.head.appendChild(style);
+ },
+
+ jumpToNextSearchResult: function()
+ {
+ if (!this._searchResults || !this._searchResults.length)
+ return;
+ var index = this._selectedSearchResult ? this._searchResults.indexOf(this._selectedSearchResult) : -1;
+ this._jumpToSearchResult(index + 1);
+ },
+
+ jumpToPreviousSearchResult: function()
+ {
+ if (!this._searchResults || !this._searchResults.length)
+ return;
+ var index = this._selectedSearchResult ? this._searchResults.indexOf(this._selectedSearchResult) : 0;
+ this._jumpToSearchResult(index - 1);
+ },
+
+ _jumpToSearchResult: function(index)
+ {
+ this._selectSearchResult((index + this._searchResults.length) % this._searchResults.length);
+ this._highlightSelectedSearchResult(true);
+ },
+
+ _selectSearchResult: function(index)
+ {
+ this._selectedSearchResult = this._searchResults[index];
+ this._searchableView.updateCurrentMatchIndex(index);
+ },
+
+ /**
+ * @param {boolean} selectRecord
+ */
+ _highlightSelectedSearchResult: function(selectRecord)
+ {
+ this._clearHighlight();
+ if (this._searchFilter)
+ return;
+
+ var record = this._selectedSearchResult;
+ if (!record)
+ return;
+
+ if (selectRecord)
+ this._selectRecord(record);
+
+ for (var element = this._sidebarListElement.firstChild; element; element = element.nextSibling) {
+ if (element.row._record === record) {
+ element.row.highlight(this._searchRegExp, this._highlightDomChanges);
+ break;
+ }
+ }
+ },
+
+ _clearHighlight: function()
+ {
+ if (this._highlightDomChanges)
+ WebInspector.revertDomChanges(this._highlightDomChanges);
+ this._highlightDomChanges = [];
+ },
+
+ /**
+ * @param {boolean} revealRecord
+ * @param {boolean} shouldJump
+ */
+ _updateSearchHighlight: function(revealRecord, shouldJump)
+ {
+ if (this._searchFilter || !this._searchRegExp) {
+ this._clearHighlight();
+ return;
+ }
+
+ if (!this._searchResults)
+ this._updateSearchResults(shouldJump);
+ this._highlightSelectedSearchResult(revealRecord);
+ },
+
+ _updateSearchResults: function(shouldJump)
+ {
+ var searchRegExp = this._searchRegExp;
+ if (!searchRegExp)
+ return;
+
+ var matches = [];
+ var presentationModel = this._presentationModel;
+
+ function processRecord(record)
+ {
+ if (presentationModel.isVisible(record) && WebInspector.TimelineRecordListRow.testContentMatching(record, searchRegExp))
+ matches.push(record);
+ return false;
+ }
+ WebInspector.TimelinePresentationModel.forAllRecords(presentationModel.rootRecord().children, processRecord);
+
+ var matchesCount = matches.length;
+ if (matchesCount) {
+ this._searchResults = matches;
+ this._searchableView.updateSearchMatchesCount(matchesCount);
+
+ var selectedIndex = matches.indexOf(this._selectedSearchResult);
+ if (shouldJump && selectedIndex === -1)
+ selectedIndex = 0;
+ this._selectSearchResult(selectedIndex);
+ } else {
+ this._searchableView.updateSearchMatchesCount(0);
+ delete this._selectedSearchResult;
+ }
+ },
+
+ searchCanceled: function()
+ {
+ this._clearHighlight();
+ delete this._searchResults;
+ delete this._selectedSearchResult;
+ delete this._searchRegExp;
+ },
+
+ /**
+ * @param {string} query
+ * @param {boolean} shouldJump
+ */
+ performSearch: function(query, shouldJump)
+ {
+ this._searchRegExp = createPlainTextSearchRegex(query, "i");
+ delete this._searchResults;
+ this._updateSearchHighlight(true, shouldJump);
+ },
+
+ __proto__: WebInspector.View.prototype
+}
+
+/**
+ * @constructor
+ * @param {!WebInspector.TimelineModel} model
+ * @implements {WebInspector.TimelineGrid.Calculator}
+ */
+WebInspector.TimelineCalculator = function(model)
+{
+ this._model = model;
+}
+
+WebInspector.TimelineCalculator._minWidth = 5;
+
+WebInspector.TimelineCalculator.prototype = {
+ /**
+ * @param {number} time
+ * @return {number}
+ */
+ computePosition: function(time)
+ {
+ return (time - this._minimumBoundary) / this.boundarySpan() * this._workingArea + this.paddingLeft;
+ },
+
+ /**
+ * @return {!{start: number, end: number, endWithChildren: number, cpuWidth: number}}
+ */
+ computeBarGraphPercentages: function(record)
+ {
+ var start = (record.startTime - this._minimumBoundary) / this.boundarySpan() * 100;
+ var end = (record.startTime + record.selfTime - this._minimumBoundary) / this.boundarySpan() * 100;
+ var endWithChildren = (record.lastChildEndTime - this._minimumBoundary) / this.boundarySpan() * 100;
+ var cpuWidth = record.coalesced ? endWithChildren - start : record.cpuTime / this.boundarySpan() * 100;
+ return {start: start, end: end, endWithChildren: endWithChildren, cpuWidth: cpuWidth};
+ },
+
+ /**
+ * @return {!{left: number, width: number, widthWithChildren: number, cpuWidth: number}}
+ */
+ computeBarGraphWindowPosition: function(record)
+ {
+ var percentages = this.computeBarGraphPercentages(record);
+ var widthAdjustment = 0;
+
+ var left = this.computePosition(record.startTime);
+ var width = (percentages.end - percentages.start) / 100 * this._workingArea;
+ if (width < WebInspector.TimelineCalculator._minWidth) {
+ widthAdjustment = WebInspector.TimelineCalculator._minWidth - width;
+ width = WebInspector.TimelineCalculator._minWidth;
+ }
+ var widthWithChildren = (percentages.endWithChildren - percentages.start) / 100 * this._workingArea + widthAdjustment;
+ var cpuWidth = percentages.cpuWidth / 100 * this._workingArea + widthAdjustment;
+ if (percentages.endWithChildren > percentages.end)
+ widthWithChildren += widthAdjustment;
+ return {left: left, width: width, widthWithChildren: widthWithChildren, cpuWidth: cpuWidth};
+ },
+
+ setWindow: function(minimumBoundary, maximumBoundary)
+ {
+ this._minimumBoundary = minimumBoundary;
+ this._maximumBoundary = maximumBoundary;
+ },
+
+ /**
+ * @param {number} paddingLeft
+ * @param {number} clientWidth
+ */
+ setDisplayWindow: function(paddingLeft, clientWidth)
+ {
+ this._workingArea = clientWidth - WebInspector.TimelineCalculator._minWidth - paddingLeft;
+ this.paddingLeft = paddingLeft;
+ },
+
+ /**
+ * @param {number} value
+ * @param {boolean=} hires
+ * @return {string}
+ */
+ formatTime: function(value, hires)
+ {
+ return Number.secondsToString(value + this._minimumBoundary - this._model.minimumRecordTime(), hires);
+ },
+
+ /**
+ * @return {number}
+ */
+ maximumBoundary: function()
+ {
+ return this._maximumBoundary;
+ },
+
+ /**
+ * @return {number}
+ */
+ minimumBoundary: function()
+ {
+ return this._minimumBoundary;
+ },
+
+ /**
+ * @return {number}
+ */
+ zeroTime: function()
+ {
+ return this._model.minimumRecordTime();
+ },
+
+ /**
+ * @return {number}
+ */
+ boundarySpan: function()
+ {
+ return this._maximumBoundary - this._minimumBoundary;
+ }
+}
+
+/**
+ * @constructor
+ * @param {function(!WebInspector.TimelinePresentationModel.Record)} selectRecord
+ * @param {function()} scheduleRefresh
+ */
+WebInspector.TimelineRecordListRow = function(selectRecord, scheduleRefresh)
+{
+ this.element = document.createElement("div");
+ this.element.row = this;
+ this.element.style.cursor = "pointer";
+ this.element.addEventListener("click", this._onClick.bind(this), false);
+ this.element.addEventListener("mouseover", this._onMouseOver.bind(this), false);
+ this.element.addEventListener("mouseout", this._onMouseOut.bind(this), false);
+
+ // Warning is float right block, it goes first.
+ this._warningElement = this.element.createChild("div", "timeline-tree-item-warning hidden");
+
+ this._expandArrowElement = this.element.createChild("div", "timeline-tree-item-expand-arrow");
+ this._expandArrowElement.addEventListener("click", this._onExpandClick.bind(this), false);
+ var iconElement = this.element.createChild("span", "timeline-tree-icon");
+ this._typeElement = this.element.createChild("span", "type");
+
+ this._dataElement = this.element.createChild("span", "data dimmed");
+ this._scheduleRefresh = scheduleRefresh;
+ this._selectRecord = selectRecord;
+}
+
+WebInspector.TimelineRecordListRow.prototype = {
+ update: function(record, offset)
+ {
+ this._record = record;
+ this._offset = offset;
+
+ this.element.className = "timeline-tree-item timeline-category-" + record.category.name;
+ var paddingLeft = 5;
+ var step = -3;
+ for (var currentRecord = record.parent ? record.parent.parent : null; currentRecord; currentRecord = currentRecord.parent)
+ paddingLeft += 12 / (Math.max(1, step++));
+ this.element.style.paddingLeft = paddingLeft + "px";
+ if (record.isBackground())
+ this.element.classList.add("background");
+
+ this._typeElement.textContent = record.title;
+
+ if (this._dataElement.firstChild)
+ this._dataElement.removeChildren();
+
+ this._warningElement.enableStyleClass("hidden", !record.hasWarnings() && !record.childHasWarnings());
+ this._warningElement.enableStyleClass("timeline-tree-item-child-warning", record.childHasWarnings() && !record.hasWarnings());
+
+ if (record.detailsNode())
+ this._dataElement.appendChild(record.detailsNode());
+ this._expandArrowElement.enableStyleClass("parent", record.children && record.children.length);
+ this._expandArrowElement.enableStyleClass("expanded", record.visibleChildrenCount);
+ this._record.setUserObject("WebInspector.TimelineRecordListRow", this);
+ },
+
+ highlight: function(regExp, domChanges)
+ {
+ var matchInfo = this.element.textContent.match(regExp);
+ if (matchInfo)
+ WebInspector.highlightSearchResult(this.element, matchInfo.index, matchInfo[0].length, domChanges);
+ },
+
+ dispose: function()
+ {
+ this.element.remove();
+ },
+
+ /**
+ * @param {!Event} event
+ */
+ _onExpandClick: function(event)
+ {
+ this._record.collapsed = !this._record.collapsed;
+ this._record.clicked = true;
+ this._scheduleRefresh();
+ event.consume(true);
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onClick: function(event)
+ {
+ this._selectRecord(this._record);
+ },
+
+ /**
+ * @param {boolean} selected
+ */
+ renderAsSelected: function(selected)
+ {
+ this.element.enableStyleClass("selected", selected);
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onMouseOver: function(event)
+ {
+ this.element.classList.add("hovered");
+ var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));
+ graphRow.element.classList.add("hovered");
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onMouseOut: function(event)
+ {
+ this.element.classList.remove("hovered");
+ var graphRow = /** @type {!WebInspector.TimelineRecordGraphRow} */ (this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));
+ graphRow.element.classList.remove("hovered");
+ }
+}
+
+/**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ * @param {!RegExp} regExp
+ */
+WebInspector.TimelineRecordListRow.testContentMatching = function(record, regExp)
+{
+ var toSearchText = record.title;
+ if (record.detailsNode())
+ toSearchText += " " + record.detailsNode().textContent;
+ return regExp.test(toSearchText);
+}
+
+/**
+ * @constructor
+ * @param {function(!WebInspector.TimelinePresentationModel.Record)} selectRecord
+ * @param {function()} scheduleRefresh
+ */
+WebInspector.TimelineRecordGraphRow = function(graphContainer, selectRecord, scheduleRefresh)
+{
+ this.element = document.createElement("div");
+ this.element.row = this;
+ this.element.addEventListener("mouseover", this._onMouseOver.bind(this), false);
+ this.element.addEventListener("mouseout", this._onMouseOut.bind(this), false);
+ this.element.addEventListener("click", this._onClick.bind(this), false);
+
+ this._barAreaElement = document.createElement("div");
+ this._barAreaElement.className = "timeline-graph-bar-area";
+ this.element.appendChild(this._barAreaElement);
+
+ this._barWithChildrenElement = document.createElement("div");
+ this._barWithChildrenElement.className = "timeline-graph-bar with-children";
+ this._barWithChildrenElement.row = this;
+ this._barAreaElement.appendChild(this._barWithChildrenElement);
+
+ this._barCpuElement = document.createElement("div");
+ this._barCpuElement.className = "timeline-graph-bar cpu"
+ this._barCpuElement.row = this;
+ this._barAreaElement.appendChild(this._barCpuElement);
+
+ this._barElement = document.createElement("div");
+ this._barElement.className = "timeline-graph-bar";
+ this._barElement.row = this;
+ this._barAreaElement.appendChild(this._barElement);
+
+ this._expandElement = new WebInspector.TimelineExpandableElement(graphContainer);
+
+ this._selectRecord = selectRecord;
+ this._scheduleRefresh = scheduleRefresh;
+}
+
+WebInspector.TimelineRecordGraphRow.prototype = {
+ update: function(record, calculator, expandOffset, index)
+ {
+ this._record = record;
+ this.element.className = "timeline-graph-side timeline-category-" + record.category.name;
+ if (record.isBackground())
+ this.element.classList.add("background");
+
+ var barPosition = calculator.computeBarGraphWindowPosition(record);
+ this._barWithChildrenElement.style.left = barPosition.left + "px";
+ this._barWithChildrenElement.style.width = barPosition.widthWithChildren + "px";
+ this._barElement.style.left = barPosition.left + "px";
+ this._barElement.style.width = barPosition.width + "px";
+ this._barCpuElement.style.left = barPosition.left + "px";
+ this._barCpuElement.style.width = barPosition.cpuWidth + "px";
+ this._expandElement._update(record, index, barPosition.left - expandOffset, barPosition.width);
+
+ this._record.setUserObject("WebInspector.TimelineRecordGraphRow", this);
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onClick: function(event)
+ {
+ // check if we click arrow and expand if yes.
+ if (this._expandElement._arrow.containsEventPoint(event))
+ this._expand();
+ this._selectRecord(this._record);
+ },
+
+ /**
+ * @param {boolean} selected
+ */
+ renderAsSelected: function(selected)
+ {
+ this.element.enableStyleClass("selected", selected);
+ },
+
+ _expand: function()
+ {
+ this._record.collapsed = !this._record.collapsed;
+ this._record.clicked = true;
+ this._scheduleRefresh();
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onMouseOver: function(event)
+ {
+ this.element.classList.add("hovered");
+ var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._record.getUserObject("WebInspector.TimelineRecordListRow"));
+ listRow.element.classList.add("hovered");
+ },
+
+ /**
+ * @param {?Event} event
+ */
+ _onMouseOut: function(event)
+ {
+ this.element.classList.remove("hovered");
+ var listRow = /** @type {!WebInspector.TimelineRecordListRow} */ (this._record.getUserObject("WebInspector.TimelineRecordListRow"));
+ listRow.element.classList.remove("hovered");
+ },
+
+ dispose: function()
+ {
+ this.element.remove();
+ this._expandElement._dispose();
+ }
+}
+
+/**
+ * @constructor
+ */
+WebInspector.TimelineExpandableElement = function(container)
+{
+ this._element = container.createChild("div", "timeline-expandable");
+ this._element.createChild("div", "timeline-expandable-left");
+ this._arrow = this._element.createChild("div", "timeline-expandable-arrow");
+}
+
+WebInspector.TimelineExpandableElement.prototype = {
+ _update: function(record, index, left, width)
+ {
+ const rowHeight = WebInspector.TimelinePanel.rowHeight;
+ if (record.visibleChildrenCount || record.expandable) {
+ this._element.style.top = index * rowHeight + "px";
+ this._element.style.left = left + "px";
+ this._element.style.width = Math.max(12, width + 25) + "px";
+ if (!record.collapsed) {
+ this._element.style.height = (record.visibleChildrenCount + 1) * rowHeight + "px";
+ this._element.classList.add("timeline-expandable-expanded");
+ this._element.classList.remove("timeline-expandable-collapsed");
+ } else {
+ this._element.style.height = rowHeight + "px";
+ this._element.classList.add("timeline-expandable-collapsed");
+ this._element.classList.remove("timeline-expandable-expanded");
+ }
+ this._element.classList.remove("hidden");
+ } else
+ this._element.classList.add("hidden");
+ },
+
+ _dispose: function()
+ {
+ this._element.remove();
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.TimelinePresentationModel.Filter}
+ */
+WebInspector.TimelineCategoryFilter = function()
+{
+}
+
+WebInspector.TimelineCategoryFilter.prototype = {
+ /**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ * @return {boolean}
+ */
+ accept: function(record)
+ {
+ return !record.category.hidden;
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.TimelinePresentationModel.Filter}
+ */
+WebInspector.TimelineIsLongFilter = function()
+{
+ this._minimumRecordDuration = 0;
+}
+
+WebInspector.TimelineIsLongFilter.prototype = {
+ /**
+ * @param {number} value
+ */
+ setMinimumRecordDuration: function(value)
+ {
+ this._minimumRecordDuration = value;
+ },
+
+ /**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ * @return {boolean}
+ */
+ accept: function(record)
+ {
+ return this._minimumRecordDuration ? ((record.lastChildEndTime - record.startTime) >= this._minimumRecordDuration) : true;
+ }
+}
+
+/**
+ * @param {!RegExp} regExp
+ * @constructor
+ * @implements {WebInspector.TimelinePresentationModel.Filter}
+ */
+WebInspector.TimelineSearchFilter = function(regExp)
+{
+ this._regExp = regExp;
+}
+
+WebInspector.TimelineSearchFilter.prototype = {
+ /**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ * @return {boolean}
+ */
+ accept: function(record)
+ {
+ return WebInspector.TimelineRecordListRow.testContentMatching(record, this._regExp);
+ }
+}
+
+/**
+ * @constructor
+ * @implements {WebInspector.TimelinePresentationModel.Filter}
+ */
+WebInspector.TimelineWindowFilter = function()
+{
+ this.reset();
+}
+
+WebInspector.TimelineWindowFilter.prototype = {
+ reset: function()
+ {
+ this._windowStartTime = 0;
+ this._windowEndTime = Infinity;
+ },
+
+ setWindowTimes: function(windowStartTime, windowEndTime)
+ {
+ this._windowStartTime = windowStartTime;
+ this._windowEndTime = windowEndTime;
+ },
+
+ /**
+ * @param {!WebInspector.TimelinePresentationModel.Record} record
+ * @return {boolean}
+ */
+ accept: function(record)
+ {
+ return record.lastChildEndTime >= this._windowStartTime && record.startTime <= this._windowEndTime;
+ }
+}
diff --git a/Source/devtools/front_end/TracingAgent.js b/Source/devtools/front_end/TracingAgent.js
index 864c637..e7ad664 100644
--- a/Source/devtools/front_end/TracingAgent.js
+++ b/Source/devtools/front_end/TracingAgent.js
@@ -64,7 +64,7 @@
},
/**
- * @return {!Array.<{cat: string, args: !Object, ph: string, ts: number}>}
+ * @return {!Array.<!{cat: string, args: !Object, ph: string, ts: number}>}
*/
events: function()
{
@@ -109,6 +109,6 @@
}
/**
- * @type {?WebInspector.TracingAgent}
+ * @type {!WebInspector.TracingAgent}
*/
-WebInspector.tracingAgent = null;
+WebInspector.tracingAgent;
diff --git a/Source/devtools/front_end/UISourceCode.js b/Source/devtools/front_end/UISourceCode.js
index 776269b..ed06b75 100644
--- a/Source/devtools/front_end/UISourceCode.js
+++ b/Source/devtools/front_end/UISourceCode.js
@@ -169,11 +169,12 @@
* @param {string=} newURL
* @param {string=} newOriginURL
* @param {!WebInspector.ResourceType=} newContentType
+ * @this {WebInspector.UISourceCode}
*/
function innerCallback(success, newName, newURL, newOriginURL, newContentType)
{
if (success)
- this._updateName(newName, newURL, newOriginURL, newContentType);
+ this._updateName(/** @type {string} */ (newName), /** @type {string} */ (newURL), /** @type {string} */ (newOriginURL), /** @type {!WebInspector.ResourceType} */ (newContentType));
callback(success);
}
},
@@ -273,6 +274,7 @@
/**
* @param {?string} updatedContent
+ * @this {WebInspector.UISourceCode}
*/
function contentLoaded(updatedContent)
{
@@ -358,11 +360,12 @@
*/
_saveURLWithFileManager: function(forceSaveAs, content)
{
- WebInspector.fileManager.save(this._url, content, forceSaveAs, callback.bind(this));
+ WebInspector.fileManager.save(this._url, /** @type {string} */ (content), forceSaveAs, callback.bind(this));
WebInspector.fileManager.close(this._url);
/**
* @param {boolean} accepted
+ * @this {WebInspector.UISourceCode}
*/
function callback(accepted)
{
@@ -393,7 +396,7 @@
{
if (this._savedWithFileManager || this.project().canSetFileContent() || !this._isEditable)
return false;
- if (WebInspector.extensionServer.hasSubscribers(WebInspector.extensionAPI.Events.ResourceContentCommitted))
+ if (this._project.workspace().hasResourceContentTrackingExtensions())
return false;
return !!this._hasCommittedChanges;
},
@@ -700,6 +703,7 @@
/**
* @param {!WebInspector.UILocation} uiLocation
+ * @return {!WebInspector.UILocation}
*/
overrideLocation: function(uiLocation)
{
@@ -927,7 +931,7 @@
*/
uiLocation: function()
{
- // Should be overridden by subclasses.
+ throw "Not implemented";
},
dispose: function()
@@ -1026,7 +1030,8 @@
revertToThis: function()
{
/**
- * @param {?string} content
+ * @param {string} content
+ * @this {WebInspector.Revision}
*/
function revert(content)
{
@@ -1053,7 +1058,7 @@
},
/**
- * @param {function(?string)} callback
+ * @param {function(string)} callback
*/
requestContent: function(callback)
{
@@ -1096,6 +1101,9 @@
}
historyItems.push({url: url, loaderId: loaderId, timestamp: timestamp, key: key});
+ /**
+ * @this {WebInspector.Revision}
+ */
function persist()
{
window.localStorage[key] = this._content;
diff --git a/Source/devtools/front_end/UISourceCodeFrame.js b/Source/devtools/front_end/UISourceCodeFrame.js
index 76a4911..4781422 100644
--- a/Source/devtools/front_end/UISourceCodeFrame.js
+++ b/Source/devtools/front_end/UISourceCodeFrame.js
@@ -42,9 +42,24 @@
this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._onWorkingCopyChanged, this);
this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._onWorkingCopyCommitted, this);
this._updateStyle();
+ this.addShortcut(WebInspector.KeyboardShortcut.makeKey("s", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta), this._commitEditing.bind(this));
}
WebInspector.UISourceCodeFrame.prototype = {
+ _commitEditing: function()
+ {
+ this.commitEditing();
+ return true;
+ },
+
+ /**
+ * @return {!WebInspector.UISourceCode}
+ */
+ uiSourceCode: function()
+ {
+ return this._uiSourceCode;
+ },
+
_enableAutocompletionIfNeeded: function()
{
this.textEditor.setCompletionDictionary(WebInspector.settings.textEditorAutocompletion.get() ? new WebInspector.SampleCompletionDictionary() : null);
@@ -86,10 +101,7 @@
this._uiSourceCode.checkContentUpdated();
},
- /**
- * @param {string} text
- */
- commitEditing: function(text)
+ commitEditing: function()
{
if (!this._uiSourceCode.isDirty())
return;
@@ -120,11 +132,14 @@
}
},
+ beforeFormattedChange: function() { },
+
/**
* @param {!WebInspector.Event} event
*/
_onFormattedChanged: function(event)
{
+ this.beforeFormattedChange();
var content = /** @type {string} */ (event.data.content);
this._textEditor.setReadOnly(this._uiSourceCode.formatted());
var selection = this._textEditor.selection();
diff --git a/Source/devtools/front_end/UIUtils.js b/Source/devtools/front_end/UIUtils.js
index 45a9992..9b88482 100644
--- a/Source/devtools/front_end/UIUtils.js
+++ b/Source/devtools/front_end/UIUtils.js
@@ -34,11 +34,14 @@
* @param {?function(!MouseEvent): boolean} elementDragStart
* @param {function(!MouseEvent)} elementDrag
* @param {?function(!MouseEvent)} elementDragEnd
- * @param {string} cursor
+ * @param {!string} cursor
+ * @param {?string=} hoverCursor
*/
-WebInspector.installDragHandle = function(element, elementDragStart, elementDrag, elementDragEnd, cursor)
+WebInspector.installDragHandle = function(element, elementDragStart, elementDrag, elementDragEnd, cursor, hoverCursor)
{
element.addEventListener("mousedown", WebInspector.elementDragStart.bind(WebInspector, elementDragStart, elementDrag, elementDragEnd, cursor), false);
+ if (hoverCursor !== null)
+ element.style.cursor = hoverCursor || cursor;
}
/**
@@ -161,95 +164,6 @@
}
}
-WebInspector.animateStyle = function(animations, duration, callback)
-{
- var startTime = new Date().getTime();
- var hasCompleted = false;
-
- const animationsLength = animations.length;
- const propertyUnit = {opacity: ""};
- const defaultUnit = "px";
-
- // Pre-process animations.
- for (var i = 0; i < animationsLength; ++i) {
- var animation = animations[i];
- var element = null, start = null, end = null, key = null;
- for (key in animation) {
- if (key === "element")
- element = animation[key];
- else if (key === "start")
- start = animation[key];
- else if (key === "end")
- end = animation[key];
- }
-
- if (!element || !end)
- continue;
-
- if (!start) {
- var computedStyle = element.ownerDocument.defaultView.getComputedStyle(element);
- start = {};
- for (key in end)
- start[key] = parseInt(computedStyle.getPropertyValue(key), 10);
- animation.start = start;
- } else
- for (key in start)
- element.style.setProperty(key, start[key] + (key in propertyUnit ? propertyUnit[key] : defaultUnit));
- }
-
- function animateLoop()
- {
- if (hasCompleted)
- return;
-
- var complete = new Date().getTime() - startTime;
-
- // Make style changes.
- for (var i = 0; i < animationsLength; ++i) {
- var animation = animations[i];
- var element = animation.element;
- var start = animation.start;
- var end = animation.end;
- if (!element || !end)
- continue;
-
- var style = element.style;
- for (key in end) {
- var endValue = end[key];
- if (complete < duration) {
- var startValue = start[key];
- // Linear animation.
- var newValue = startValue + (endValue - startValue) * complete / duration;
- style.setProperty(key, newValue + (key in propertyUnit ? propertyUnit[key] : defaultUnit));
- } else
- style.setProperty(key, endValue + (key in propertyUnit ? propertyUnit[key] : defaultUnit));
- }
- }
-
- // End condition.
- if (complete >= duration)
- hasCompleted = true;
- if (callback)
- callback(hasCompleted);
- if (!hasCompleted)
- window.requestAnimationFrame(animateLoop);
- }
-
- function forceComplete()
- {
- if (hasCompleted)
- return;
-
- duration = 0;
- animateLoop();
- }
-
- window.requestAnimationFrame(animateLoop);
- return {
- forceComplete: forceComplete
- };
-}
-
WebInspector.isBeingEdited = function(element)
{
if (element.classList.contains("text-prompt") || element.nodeName === "INPUT" || element.nodeName === "TEXTAREA")
@@ -284,66 +198,6 @@
return true;
}
-/**
- * @constructor
- * @param {function(!Element,string,string,*,string)} commitHandler
- * @param {function(!Element,*)} cancelHandler
- * @param {*=} context
- */
-WebInspector.EditingConfig = function(commitHandler, cancelHandler, context)
-{
- this.commitHandler = commitHandler;
- this.cancelHandler = cancelHandler
- this.context = context;
-
- /**
- * Handles the "paste" event, return values are the same as those for customFinishHandler
- * @type {function(!Element)|undefined}
- */
- this.pasteHandler;
-
- /**
- * Whether the edited element is multiline
- * @type {boolean|undefined}
- */
- this.multiline;
-
- /**
- * Custom finish handler for the editing session (invoked on keydown)
- * @type {function(!Element,*)|undefined}
- */
- this.customFinishHandler;
-}
-
-WebInspector.EditingConfig.prototype = {
- setPasteHandler: function(pasteHandler)
- {
- this.pasteHandler = pasteHandler;
- },
-
- /**
- * @param {string} initialValue
- * @param {!Object} mode
- * @param {string} theme
- * @param {boolean=} lineWrapping
- * @param {boolean=} smartIndent
- */
- setMultilineOptions: function(initialValue, mode, theme, lineWrapping, smartIndent)
- {
- this.multiline = true;
- this.initialValue = initialValue;
- this.mode = mode;
- this.theme = theme;
- this.lineWrapping = lineWrapping;
- this.smartIndent = smartIndent;
- },
-
- setCustomFinishHandler: function(customFinishHandler)
- {
- this.customFinishHandler = customFinishHandler;
- }
-}
-
WebInspector.CSSNumberRegex = /^(-?(?:\d+(?:\.\d+)?|\.\d+))$/;
WebInspector.StyleValueDelimiters = " \xA0\t\n\"':;,/()";
@@ -529,198 +383,6 @@
return false;
}
-/**
- * @param {!Element} element
- * @param {!WebInspector.EditingConfig=} config
- * @return {?{cancel: function(), commit: function(), codeMirror: !CodeMirror, setWidth: function(number)}}
- */
-WebInspector.startEditing = function(element, config)
-{
- if (!WebInspector.markBeingEdited(element, true))
- return null;
-
- config = config || new WebInspector.EditingConfig(function() {}, function() {});
- var committedCallback = config.commitHandler;
- var cancelledCallback = config.cancelHandler;
- var pasteCallback = config.pasteHandler;
- var context = config.context;
- var isMultiline = config.multiline || false;
- var oldText = isMultiline ? config.initialValue : getContent(element);
- var moveDirection = "";
- var oldTabIndex;
- var codeMirror;
- var cssLoadView;
-
- /**
- * @param {?Event} e
- */
- function consumeCopy(e)
- {
- e.consume();
- }
-
- if (isMultiline) {
- loadScript("CodeMirrorTextEditor.js");
- cssLoadView = new WebInspector.CodeMirrorCSSLoadView();
- cssLoadView.show(element);
- WebInspector.setCurrentFocusElement(element);
- element.addEventListener("copy", consumeCopy, false);
- codeMirror = window.CodeMirror(element, {
- mode: config.mode,
- lineWrapping: config.lineWrapping,
- smartIndent: config.smartIndent,
- autofocus: true,
- theme: config.theme,
- value: oldText
- });
- codeMirror.getWrapperElement().classList.add("source-code");
- codeMirror.on("cursorActivity", function(cm) {
- cm.display.cursor.scrollIntoViewIfNeeded(false);
- });
- } else {
- element.classList.add("editing");
-
- oldTabIndex = element.getAttribute("tabIndex");
- if (typeof oldTabIndex !== "number" || oldTabIndex < 0)
- element.tabIndex = 0;
- WebInspector.setCurrentFocusElement(element);
- }
-
- /**
- * @param {number} width
- */
- function setWidth(width)
- {
- const padding = 30;
- codeMirror.getWrapperElement().style.width = (width - codeMirror.getWrapperElement().offsetLeft - padding) + "px";
- codeMirror.refresh();
- }
-
- /**
- * @param {?Event=} e
- */
- function blurEventListener(e) {
- if (!isMultiline || !e || !e.relatedTarget || !e.relatedTarget.isSelfOrDescendant(element))
- editingCommitted.call(element);
- }
-
- function getContent(element) {
- if (isMultiline)
- return codeMirror.getValue();
-
- if (element.tagName === "INPUT" && element.type === "text")
- return element.value;
-
- return element.textContent;
- }
-
- /** @this {Element} */
- function cleanUpAfterEditing()
- {
- WebInspector.markBeingEdited(element, false);
-
- element.removeEventListener("blur", blurEventListener, isMultiline);
- element.removeEventListener("keydown", keyDownEventListener, true);
- if (pasteCallback)
- element.removeEventListener("paste", pasteEventListener, true);
-
- WebInspector.restoreFocusFromElement(element);
-
- if (isMultiline) {
- element.removeEventListener("copy", consumeCopy, false);
- cssLoadView.detach();
- return;
- }
-
- this.classList.remove("editing");
-
- if (typeof oldTabIndex !== "number")
- element.removeAttribute("tabIndex");
- else
- this.tabIndex = oldTabIndex;
- this.scrollTop = 0;
- this.scrollLeft = 0;
- }
-
- /** @this {Element} */
- function editingCancelled()
- {
- if (isMultiline)
- codeMirror.setValue(oldText);
- else {
- if (this.tagName === "INPUT" && this.type === "text")
- this.value = oldText;
- else
- this.textContent = oldText;
- }
-
- cleanUpAfterEditing.call(this);
-
- cancelledCallback(this, context);
- }
-
- /** @this {Element} */
- function editingCommitted()
- {
- cleanUpAfterEditing.call(this);
-
- committedCallback(this, getContent(this), oldText, context, moveDirection);
- }
-
- function defaultFinishHandler(event)
- {
- var isMetaOrCtrl = WebInspector.isMac() ?
- event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey :
- event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey;
- if (isEnterKey(event) && (event.isMetaOrCtrlForTest || !isMultiline || isMetaOrCtrl))
- return "commit";
- else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code || event.keyIdentifier === "U+001B")
- return "cancel";
- else if (!isMultiline && event.keyIdentifier === "U+0009") // Tab key
- return "move-" + (event.shiftKey ? "backward" : "forward");
- }
-
- function handleEditingResult(result, event)
- {
- if (result === "commit") {
- editingCommitted.call(element);
- event.consume(true);
- } else if (result === "cancel") {
- editingCancelled.call(element);
- event.consume(true);
- } else if (result && result.startsWith("move-")) {
- moveDirection = result.substring(5);
- if (event.keyIdentifier !== "U+0009")
- blurEventListener();
- }
- }
-
- function pasteEventListener(event)
- {
- var result = pasteCallback(event);
- handleEditingResult(result, event);
- }
-
- function keyDownEventListener(event)
- {
- var handler = config.customFinishHandler || defaultFinishHandler;
- var result = handler(event);
- handleEditingResult(result, event);
- }
-
- element.addEventListener("blur", blurEventListener, isMultiline);
- element.addEventListener("keydown", keyDownEventListener, true);
- if (pasteCallback)
- element.addEventListener("paste", pasteEventListener, true);
-
- return {
- cancel: editingCancelled.bind(element),
- commit: editingCommitted.bind(element),
- codeMirror: codeMirror, // For testing.
- setWidth: setWidth
- };
-}
-
/**
* @param {number} seconds
* @param {boolean=} higherResolution
@@ -806,84 +468,6 @@
return WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Copy link address" : "Copy Link Address");
}
-WebInspector.platform = function()
-{
- if (!WebInspector._platform)
- WebInspector._platform = InspectorFrontendHost.platform();
- return WebInspector._platform;
-}
-
-WebInspector.isMac = function()
-{
- if (typeof WebInspector._isMac === "undefined")
- WebInspector._isMac = WebInspector.platform() === "mac";
-
- return WebInspector._isMac;
-}
-
-WebInspector.isWin = function()
-{
- if (typeof WebInspector._isWin === "undefined")
- WebInspector._isWin = WebInspector.platform() === "windows";
-
- return WebInspector._isWin;
-}
-
-WebInspector.PlatformFlavor = {
- WindowsVista: "windows-vista",
- MacTiger: "mac-tiger",
- MacLeopard: "mac-leopard",
- MacSnowLeopard: "mac-snowleopard",
- MacLion: "mac-lion",
- MacMountainLion: "mac-mountain-lion"
-}
-
-WebInspector.platformFlavor = function()
-{
- function detectFlavor()
- {
- const userAgent = navigator.userAgent;
-
- if (WebInspector.platform() === "windows") {
- var match = userAgent.match(/Windows NT (\d+)\.(?:\d+)/);
- if (match && match[1] >= 6)
- return WebInspector.PlatformFlavor.WindowsVista;
- return null;
- } else if (WebInspector.platform() === "mac") {
- var match = userAgent.match(/Mac OS X\s*(?:(\d+)_(\d+))?/);
- if (!match || match[1] != 10)
- return WebInspector.PlatformFlavor.MacSnowLeopard;
- switch (Number(match[2])) {
- case 4:
- return WebInspector.PlatformFlavor.MacTiger;
- case 5:
- return WebInspector.PlatformFlavor.MacLeopard;
- case 6:
- return WebInspector.PlatformFlavor.MacSnowLeopard;
- case 7:
- return WebInspector.PlatformFlavor.MacLion;
- case 8:
- return WebInspector.PlatformFlavor.MacMountainLion;
- default:
- return "";
- }
- }
- }
-
- if (!WebInspector._platformFlavor)
- WebInspector._platformFlavor = detectFlavor();
-
- return WebInspector._platformFlavor;
-}
-
-WebInspector.port = function()
-{
- if (!WebInspector._port)
- WebInspector._port = InspectorFrontendHost.port();
-
- return WebInspector._port;
-}
-
WebInspector.installPortStyles = function()
{
var platform = WebInspector.platform();
@@ -1023,9 +607,29 @@
/**
* @param {!Element} element
+ * @param {string} className
+ */
+WebInspector.runCSSAnimationOnce = function(element, className)
+{
+ function animationEndCallback()
+ {
+ element.classList.remove(className);
+ element.removeEventListener("animationend", animationEndCallback, false);
+ }
+
+ if (element.classList.contains(className))
+ element.classList.remove(className);
+
+ element.addEventListener("animationend", animationEndCallback, false);
+ element.classList.add(className);
+}
+
+/**
+ * @param {!Element} element
* @param {!Array.<!WebInspector.SourceRange>} resultRanges
* @param {string} styleClass
* @param {!Array.<!Object>=} changes
+ * @return {!Array.<!Element>}
*/
WebInspector.highlightRangesWithStyleClass = function(element, resultRanges, styleClass, changes)
{
@@ -1181,26 +785,11 @@
methods.put(method);
}
-/**
- * This bogus view is needed to load/unload CodeMirror-related CSS on demand.
- *
- * @constructor
- * @extends {WebInspector.View}
- */
-WebInspector.CodeMirrorCSSLoadView = function()
-{
- WebInspector.View.call(this);
- this.element.classList.add("hidden");
- this.registerRequiredCSS("cm/codemirror.css");
- this.registerRequiredCSS("cm/cmdevtools.css");
-}
-
-WebInspector.CodeMirrorCSSLoadView.prototype = {
- __proto__: WebInspector.View.prototype
-}
-
;(function() {
+/**
+ * @this {Window}
+ */
function windowLoaded()
{
window.addEventListener("focus", WebInspector._windowFocused, false);
diff --git a/Source/devtools/front_end/View.js b/Source/devtools/front_end/View.js
index bfd7547..84168b5 100644
--- a/Source/devtools/front_end/View.js
+++ b/Source/devtools/front_end/View.js
@@ -31,6 +31,7 @@
WebInspector.View = function()
{
this.element = document.createElement("div");
+ this.element.className = "view";
this.element.__view = this;
this._visible = true;
this._isRoot = false;
@@ -52,6 +53,11 @@
this._isRoot = true;
},
+ makeLayoutBoundary: function()
+ {
+ this._isLayoutBoundary = true;
+ },
+
/**
* @return {?WebInspector.View}
*/
@@ -60,6 +66,9 @@
return this._parentView;
},
+ /**
+ * @return {boolean}
+ */
isShowing: function()
{
return this._isShowing;
@@ -141,6 +150,41 @@
this._callOnVisibleChildren(this._processOnResize);
},
+ _processDiscardCachedSize: function()
+ {
+ if (this._isLayoutBoundary) {
+ this.element.style.removeProperty("width");
+ this.element.style.removeProperty("height");
+ }
+ this._callOnVisibleChildren(this._processDiscardCachedSize);
+ },
+
+ _cacheSize: function()
+ {
+ this._prepareCacheSize();
+ this._applyCacheSize();
+ },
+
+ _prepareCacheSize: function()
+ {
+ if (this._isLayoutBoundary) {
+ this._cachedOffsetWidth = this.element.offsetWidth;
+ this._cachedOffsetHeight = this.element.offsetHeight;
+ }
+ this._callOnVisibleChildren(this._prepareCacheSize);
+ },
+
+ _applyCacheSize: function()
+ {
+ if (this._isLayoutBoundary) {
+ this.element.style.setProperty("width", this._cachedOffsetWidth + "px");
+ this.element.style.setProperty("height", this._cachedOffsetHeight + "px");
+ delete this._cachedOffsetWidth;
+ delete this._cachedOffsetHeight;
+ }
+ this._callOnVisibleChildren(this._applyCacheSize);
+ },
+
/**
* @param {function(this:WebInspector.View)} notification
*/
@@ -209,8 +253,10 @@
WebInspector.View._originalAppendChild.call(parentElement, this.element);
}
- if (this._parentIsShowing())
+ if (this._parentIsShowing()) {
this._processWasShown();
+ this._cacheSize();
+ }
},
/**
@@ -222,8 +268,10 @@
if (!parentElement)
return;
- if (this._parentIsShowing())
+ if (this._parentIsShowing()) {
+ this._processDiscardCachedSize();
this._processWillHide();
+ }
if (this._hideOnDetach && !overrideHideOnDetach) {
this.element.classList.remove("visible");
@@ -258,6 +306,9 @@
children[i].detach();
},
+ /**
+ * @return {!Array.<!Element>}
+ */
elementsToRestoreScrollPositionsFor: function()
{
return [this.element];
@@ -285,6 +336,9 @@
}
},
+ /**
+ * @return {boolean}
+ */
canHighlightPosition: function()
{
return false;
@@ -300,7 +354,13 @@
doResize: function()
{
- this._processOnResize();
+ if (!this.isShowing())
+ return;
+ this._processDiscardCachedSize();
+ // No matter what notification we are in, dispatching onResize is not needed.
+ if (!this._inNotification())
+ this._callOnVisibleChildren(this._processOnResize);
+ this._cacheSize();
},
registerRequiredCSS: function(cssFile)
@@ -483,21 +543,6 @@
}
/**
- * @interface
- */
-WebInspector.ViewFactory = function()
-{
-}
-
-WebInspector.ViewFactory.prototype = {
- /**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id) {}
-}
-
-/**
* @constructor
* @extends {WebInspector.View}
* @param {function()} resizeCallback
@@ -517,16 +562,15 @@
__proto__: WebInspector.View.prototype
}
-
Element.prototype.appendChild = function(child)
{
- WebInspector.View._assert(!child.__view, "Attempt to add view via regular DOM operation.");
+ WebInspector.View._assert(!child.__view || child.parentElement === this, "Attempt to add view via regular DOM operation.");
return WebInspector.View._originalAppendChild.call(this, child);
}
Element.prototype.insertBefore = function(child, anchor)
{
- WebInspector.View._assert(!child.__view, "Attempt to add view via regular DOM operation.");
+ WebInspector.View._assert(!child.__view || child.parentElement === this, "Attempt to add view via regular DOM operation.");
return WebInspector.View._originalInsertBefore.call(this, child, anchor);
}
diff --git a/Source/devtools/front_end/WatchExpressionsSidebarPane.js b/Source/devtools/front_end/WatchExpressionsSidebarPane.js
index 06effd0..5cea2a4 100644
--- a/Source/devtools/front_end/WatchExpressionsSidebarPane.js
+++ b/Source/devtools/front_end/WatchExpressionsSidebarPane.js
@@ -136,11 +136,21 @@
WebInspector.WatchExpressionsSection.NewWatchExpression = "\xA0";
WebInspector.WatchExpressionsSection.prototype = {
+ /**
+ * @param {?Event=} e
+ */
update: function(e)
{
if (e)
e.consume();
+ /***
+ * @param {string} expression
+ * @param {number} watchIndex
+ * @param {?WebInspector.RemoteObject} result
+ * @param {boolean} wasThrown
+ * @this {WebInspector.WatchExpressionsSection}
+ */
function appendResult(expression, watchIndex, result, wasThrown)
{
if (!result)
@@ -256,6 +266,9 @@
this.update();
},
+ /**
+ * @return {?TreeElement}
+ */
findAddedTreeElement: function()
{
var children = this.propertiesTreeOutline.children;
@@ -263,8 +276,12 @@
if (children[i].property.name === WebInspector.WatchExpressionsSection.NewWatchExpression)
return children[i];
}
+ return null;
},
+ /**
+ * @return {number}
+ */
saveExpressions: function()
{
var toSave = [];
@@ -420,6 +437,9 @@
this.treeOutline.section.updateExpression(this, null);
},
+ /**
+ * @return {boolean}
+ */
renderPromptAsBlock: function()
{
return true;
@@ -427,6 +447,7 @@
/**
* @param {!Event=} event
+ * @return {!Array.<!Element|string>}
*/
elementAndValueToEdit: function(event)
{
diff --git a/Source/devtools/front_end/WorkerFrontendManager.js b/Source/devtools/front_end/WorkerFrontendManager.js
new file mode 100644
index 0000000..0d81236
--- /dev/null
+++ b/Source/devtools/front_end/WorkerFrontendManager.js
@@ -0,0 +1,205 @@
+
+/*
+ * Copyright (C) 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+/**
+ * @constructor
+ */
+WebInspector.WorkerFrontendManager = function()
+{
+ this._workerIdToWindow = {};
+
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded, this._workerAdded, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved, this._workerRemoved, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared, this._workersCleared, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.MessageFromWorker, this._sendMessageToWorkerInspector, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerDisconnected, this._disconnectedFromWorker, this);
+
+ window.addEventListener("message", this._handleMessage.bind(this), true);
+}
+
+WebInspector.WorkerFrontendManager.prototype = {
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _workerAdded: function(event)
+ {
+ var data = /** @type {{workerId: number, url: string, inspectorConnected: boolean}} */ (event.data);
+
+ if (data.inspectorConnected)
+ this._openInspectorWindow(data.workerId, true);
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _workerRemoved: function(event)
+ {
+ var data = /** @type {{workerId: number, url: string}} */ (event.data);
+
+ this.closeWorkerInspector(data.workerId);
+ },
+
+ _workersCleared: function()
+ {
+ for (var workerId in this._workerIdToWindow)
+ this.closeWorkerInspector(workerId);
+ },
+
+ _handleMessage: function(event)
+ {
+ var data = /** @type {{workerId: string, command: string, message: !Object}} */ (event.data);
+ var workerId = data["workerId"];
+ workerId = parseInt(workerId, 10);
+ var command = data.command;
+ var message = data.message;
+
+ if (command == "sendMessageToBackend")
+ WorkerAgent.sendMessageToWorker(workerId, message);
+ },
+
+ _sendMessageToWorkerInspector: function(event)
+ {
+ var data = (event.data);
+
+ var workerInspectorWindow = this._workerIdToWindow[data.workerId];
+ if (workerInspectorWindow)
+ workerInspectorWindow.postMessage(data.message, "*");
+ },
+
+ openWorkerInspector: function(workerId)
+ {
+ var existingInspector = this._workerIdToWindow[workerId];
+ if (existingInspector) {
+ existingInspector.focus();
+ return;
+ }
+
+ this._openInspectorWindow(workerId, false);
+ WorkerAgent.connectToWorker(workerId);
+ },
+
+ _openInspectorWindow: function(workerId, workerIsPaused)
+ {
+ var search = window.location.search;
+ var hash = window.location.hash;
+ var url = window.location.href;
+ // Make sure hash is in rear
+ url = url.replace(hash, "");
+ url += (search ? "&dedicatedWorkerId=" : "?dedicatedWorkerId=") + workerId;
+ if (workerIsPaused)
+ url += "&workerPaused=true";
+ url = url.replace("docked=true&", "");
+ url = url.replace("can_dock=true&", "");
+ url += hash;
+ var width = WebInspector.settings.workerInspectorWidth.get();
+ var height = WebInspector.settings.workerInspectorHeight.get();
+ // Set location=0 just to make sure the front-end will be opened in a separate window, not in new tab.
+ var workerInspectorWindow = window.open(url, undefined, "location=0,width=" + width + ",height=" + height);
+ workerInspectorWindow.addEventListener("resize", this._onWorkerInspectorResize.bind(this, workerInspectorWindow), false);
+ this._workerIdToWindow[workerId] = workerInspectorWindow;
+ workerInspectorWindow.addEventListener("beforeunload", this._workerInspectorClosing.bind(this, workerId), true);
+
+ // Listen to beforeunload in detached state and to the InspectorClosing event in case of attached inspector.
+ window.addEventListener("unload", this._pageInspectorClosing.bind(this), true);
+ },
+
+ closeWorkerInspector: function(workerId)
+ {
+ var workerInspectorWindow = this._workerIdToWindow[workerId];
+ if (workerInspectorWindow)
+ workerInspectorWindow.close();
+ },
+
+ _onWorkerInspectorResize: function(workerInspectorWindow)
+ {
+ var doc = workerInspectorWindow.document;
+ WebInspector.settings.workerInspectorWidth.set(doc.width);
+ WebInspector.settings.workerInspectorHeight.set(doc.height);
+ },
+
+ _workerInspectorClosing: function(workerId, event)
+ {
+ if (event.target.location.href === "about:blank")
+ return;
+ if (this._ignoreWorkerInspectorClosing)
+ return;
+ delete this._workerIdToWindow[workerId];
+ WorkerAgent.disconnectFromWorker(workerId);
+ },
+
+ _disconnectedFromWorker: function()
+ {
+ var screen = new WebInspector.WorkerTerminatedScreen();
+ WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, screen.hide, screen);
+ screen.showModal();
+ },
+
+ _pageInspectorClosing: function()
+ {
+ this._ignoreWorkerInspectorClosing = true;
+ for (var workerId in this._workerIdToWindow) {
+ this._workerIdToWindow[workerId].close();
+ WorkerAgent.disconnectFromWorker(parseInt(workerId, 10));
+ }
+ }
+
+}
+/**
+ * @type {?WebInspector.WorkerFrontendManager}
+ */
+WebInspector.workerFrontendManager = null;
+
+/**
+ * @constructor
+ * @extends {WebInspector.HelpScreen}
+ */
+WebInspector.WorkerTerminatedScreen = function()
+{
+ WebInspector.HelpScreen.call(this, WebInspector.UIString("Inspected worker terminated"));
+ var p = this.contentElement.createChild("p");
+ p.classList.add("help-section");
+ p.textContent = WebInspector.UIString("Inspected worker has terminated. Once it restarts we will attach to it automatically.");
+}
+
+WebInspector.WorkerTerminatedScreen.prototype = {
+ /**
+ * @override
+ */
+ willHide: function()
+ {
+ WebInspector.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
+ WebInspector.HelpScreen.prototype.willHide.call(this);
+ },
+
+ __proto__: WebInspector.HelpScreen.prototype
+}
+
diff --git a/Source/devtools/front_end/WorkerManager.js b/Source/devtools/front_end/WorkerManager.js
index baaf0f9..abcbc1b 100644
--- a/Source/devtools/front_end/WorkerManager.js
+++ b/Source/devtools/front_end/WorkerManager.js
@@ -31,199 +31,101 @@
/**
* @constructor
* @extends {WebInspector.Object}
+ * @param {boolean} canInspectWorkers
*/
-WebInspector.WorkerManager = function()
+WebInspector.WorkerManager = function(canInspectWorkers)
{
- this._workerIdToWindow = {};
- InspectorBackend.registerWorkerDispatcher(new WebInspector.WorkerDispatcher(this));
-}
-
-WebInspector.WorkerManager.isWorkerFrontend = function()
-{
- return !!WebInspector.queryParamsObject["dedicatedWorkerId"] ||
- !!WebInspector.queryParamsObject["isSharedWorker"];
-}
-
-WebInspector.WorkerManager.isDedicatedWorkerFrontend = function()
-{
- return !!WebInspector.queryParamsObject["dedicatedWorkerId"];
-}
-
-WebInspector.WorkerManager.loaded = function()
-{
- var workerId = WebInspector.queryParamsObject["dedicatedWorkerId"];
- if (workerId)
- WebInspector.WorkerManager._initializeDedicatedWorkerFrontend(workerId);
- else
- WebInspector.workerManager = new WebInspector.WorkerManager();
-}
-
-WebInspector.WorkerManager.loadCompleted = function()
-{
- // Make sure script execution of dedicated worker is resumed and then paused
- // on the first script statement in case we autoattached to it.
- if (WebInspector.queryParamsObject["workerPaused"]) {
- DebuggerAgent.pause();
- RuntimeAgent.run(calculateTitle);
- } else if (WebInspector.WorkerManager.isWorkerFrontend())
- calculateTitle();
-
- function calculateTitle()
- {
- WebInspector.WorkerManager._calculateWorkerInspectorTitle();
- }
-
- if (WebInspector.workerManager)
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, WebInspector.workerManager._mainFrameNavigated, WebInspector.workerManager);
-}
-
-WebInspector.WorkerManager._initializeDedicatedWorkerFrontend = function(workerId)
-{
- function receiveMessage(event)
- {
- var message = event.data;
- InspectorBackend.dispatch(message);
- }
- window.addEventListener("message", receiveMessage, true);
-
-
- InspectorBackend.sendMessageObjectToBackend = function(message)
- {
- window.opener.postMessage({workerId: workerId, command: "sendMessageToBackend", message: message}, "*");
- }
-}
-
-WebInspector.WorkerManager._calculateWorkerInspectorTitle = function()
-{
- var expression = "location.href";
- if (WebInspector.queryParamsObject["isSharedWorker"])
- expression += " + (this.name ? ' (' + this.name + ')' : '')";
- RuntimeAgent.evaluate.invoke({expression:expression, doNotPauseOnExceptionsAndMuteConsole:true, returnByValue: true}, evalCallback.bind(this));
-
- /**
- * @param {?Protocol.Error} error
- * @param {!RuntimeAgent.RemoteObject} result
- * @param {boolean=} wasThrown
- */
- function evalCallback(error, result, wasThrown)
- {
- if (error || wasThrown) {
- console.error(error);
- return;
- }
- InspectorFrontendHost.inspectedURLChanged(result.value);
+ this._reset();
+ if (canInspectWorkers) {
+ WorkerAgent.enable();
+ InspectorBackend.registerWorkerDispatcher(new WebInspector.WorkerDispatcher(this));
+ WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._mainFrameNavigated, this);
}
}
WebInspector.WorkerManager.Events = {
- WorkerAdded: "worker-added",
- WorkerRemoved: "worker-removed",
- WorkersCleared: "workers-cleared",
+ WorkerAdded: "WorkerAdded",
+ WorkerRemoved: "WorkerRemoved",
+ WorkersCleared: "WorkersCleared",
+ WorkerSelectionChanged: "WorkerSelectionChanged",
+ WorkerDisconnected: "WorkerDisconnected",
+ MessageFromWorker: "MessageFromWorker",
}
+WebInspector.WorkerManager.MainThreadId = 0;
+
WebInspector.WorkerManager.prototype = {
+
+ _reset: function()
+ {
+ /** @type {!Object.<number, string>} */
+ this._threadUrlByThreadId = {};
+ this._threadUrlByThreadId[WebInspector.WorkerManager.MainThreadId] = WebInspector.UIString("Thread: Main");
+ this._threadsList = [WebInspector.WorkerManager.MainThreadId];
+ this._selectedThreadId = WebInspector.WorkerManager.MainThreadId;
+ },
+
_workerCreated: function(workerId, url, inspectorConnected)
- {
- if (inspectorConnected)
- this._openInspectorWindow(workerId, true);
+ {
+ this._threadsList.push(workerId);
+ this._threadUrlByThreadId[workerId] = url;
this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkerAdded, {workerId: workerId, url: url, inspectorConnected: inspectorConnected});
},
_workerTerminated: function(workerId)
- {
- this.closeWorkerInspector(workerId);
+ {
+ this._threadsList.remove(workerId);
+ delete this._threadUrlByThreadId[workerId];
this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkerRemoved, workerId);
- },
-
- _sendMessageToWorkerInspector: function(workerId, message)
- {
- var workerInspectorWindow = this._workerIdToWindow[workerId];
- if (workerInspectorWindow)
- workerInspectorWindow.postMessage(message, "*");
},
- openWorkerInspector: function(workerId)
+ _dispatchMessageFromWorker: function(workerId, message)
{
- var existingInspector = this._workerIdToWindow[workerId];
- if (existingInspector) {
- existingInspector.focus();
- return;
- }
-
- this._openInspectorWindow(workerId, false);
- WorkerAgent.connectToWorker(workerId);
- },
-
- _openInspectorWindow: function(workerId, workerIsPaused)
- {
- var search = window.location.search;
- var hash = window.location.hash;
- var url = window.location.href;
- // Make sure hash is in rear
- url = url.replace(hash, "");
- url += (search ? "&dedicatedWorkerId=" : "?dedicatedWorkerId=") + workerId;
- if (workerIsPaused)
- url += "&workerPaused=true";
- url = url.replace("docked=true&", "");
- url = url.replace("can_dock=true&", "");
- url += hash;
- var width = WebInspector.settings.workerInspectorWidth.get();
- var height = WebInspector.settings.workerInspectorHeight.get();
- // Set location=0 just to make sure the front-end will be opened in a separate window, not in new tab.
- var workerInspectorWindow = window.open(url, undefined, "location=0,width=" + width + ",height=" + height);
- workerInspectorWindow.addEventListener("resize", this._onWorkerInspectorResize.bind(this, workerInspectorWindow), false);
- this._workerIdToWindow[workerId] = workerInspectorWindow;
- workerInspectorWindow.addEventListener("beforeunload", this._workerInspectorClosing.bind(this, workerId), true);
-
- // Listen to beforeunload in detached state and to the InspectorClosing event in case of attached inspector.
- window.addEventListener("unload", this._pageInspectorClosing.bind(this), true);
- },
-
- closeWorkerInspector: function(workerId)
- {
- var workerInspectorWindow = this._workerIdToWindow[workerId];
- if (workerInspectorWindow)
- workerInspectorWindow.close();
- },
-
- _mainFrameNavigated: function(event)
- {
- for (var workerId in this._workerIdToWindow)
- this.closeWorkerInspector(workerId);
- this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkersCleared);
- },
-
- _pageInspectorClosing: function()
- {
- this._ignoreWorkerInspectorClosing = true;
- for (var workerId in this._workerIdToWindow) {
- this._workerIdToWindow[workerId].close();
- WorkerAgent.disconnectFromWorker(parseInt(workerId, 10));
- }
- },
-
- _onWorkerInspectorResize: function(workerInspectorWindow)
- {
- var doc = workerInspectorWindow.document;
- WebInspector.settings.workerInspectorWidth.set(doc.width);
- WebInspector.settings.workerInspectorHeight.set(doc.height);
- },
-
- _workerInspectorClosing: function(workerId, event)
- {
- if (event.target.location.href === "about:blank")
- return;
- if (this._ignoreWorkerInspectorClosing)
- return;
- delete this._workerIdToWindow[workerId];
- WorkerAgent.disconnectFromWorker(workerId);
+ this.dispatchEventToListeners(WebInspector.WorkerManager.Events.MessageFromWorker, {workerId: workerId, message: message})
},
_disconnectedFromWorker: function()
{
- var screen = new WebInspector.WorkerTerminatedScreen();
- WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, screen.hide, screen);
- screen.showModal();
+ this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkerDisconnected)
+ },
+
+ _mainFrameNavigated: function(event)
+ {
+ this._reset();
+ this.dispatchEventToListeners(WebInspector.WorkerManager.Events.WorkersCleared);
+ },
+
+ /**
+ * @return {!Array.<number>}
+ */
+ threadsList: function()
+ {
+ return this._threadsList;
+ },
+
+ /**
+ * @param {number} threadId
+ * @return {string}
+ */
+ threadUrl: function(threadId)
+ {
+ return this._threadUrlByThreadId[threadId];
+ },
+
+ /**
+ * @param {number} threadId
+ */
+ setSelectedThreadId: function(threadId)
+ {
+ this._selectedThreadId = threadId;
+ },
+
+ /**
+ * @return {number}
+ */
+ selectedThreadId: function()
+ {
+ return this._selectedThreadId;
},
__proto__: WebInspector.Object.prototype
@@ -236,20 +138,9 @@
WebInspector.WorkerDispatcher = function(workerManager)
{
this._workerManager = workerManager;
- window.addEventListener("message", this._receiveMessage.bind(this), true);
}
WebInspector.WorkerDispatcher.prototype = {
- _receiveMessage: function(event)
- {
- var workerId = event.data["workerId"];
- workerId = parseInt(workerId, 10);
- var command = event.data.command;
- var message = event.data.message;
-
- if (command == "sendMessageToBackend")
- WorkerAgent.sendMessageToWorker(workerId, message);
- },
workerCreated: function(workerId, url, inspectorConnected)
{
@@ -263,7 +154,7 @@
dispatchMessageFromWorker: function(workerId, message)
{
- this._workerManager._sendMessageToWorkerInspector(workerId, message);
+ this._workerManager._dispatchMessageFromWorker(workerId, message);
},
disconnectedFromWorker: function()
@@ -273,26 +164,6 @@
}
/**
- * @constructor
- * @extends {WebInspector.HelpScreen}
+ * @type {!WebInspector.WorkerManager}
*/
-WebInspector.WorkerTerminatedScreen = function()
-{
- WebInspector.HelpScreen.call(this, WebInspector.UIString("Inspected worker terminated"));
- var p = this.contentElement.createChild("p");
- p.classList.add("help-section");
- p.textContent = WebInspector.UIString("Inspected worker has terminated. Once it restarts we will attach to it automatically.");
-}
-
-WebInspector.WorkerTerminatedScreen.prototype = {
- /**
- * @override
- */
- willHide: function()
- {
- WebInspector.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this.hide, this);
- WebInspector.HelpScreen.prototype.willHide.call(this);
- },
-
- __proto__: WebInspector.HelpScreen.prototype
-}
+WebInspector.workerManager;
\ No newline at end of file
diff --git a/Source/devtools/front_end/WorkersSidebarPane.js b/Source/devtools/front_end/WorkersSidebarPane.js
index bf16b7a..8a4663a 100644
--- a/Source/devtools/front_end/WorkersSidebarPane.js
+++ b/Source/devtools/front_end/WorkersSidebarPane.js
@@ -30,19 +30,9 @@
/**
* @constructor
- */
-WebInspector.Worker = function(id, url, shared)
-{
- this.id = id;
- this.url = url;
- this.shared = shared;
-}
-
-/**
- * @constructor
* @extends {WebInspector.SidebarPane}
*/
-WebInspector.WorkersSidebarPane = function(workerManager)
+WebInspector.WorkersSidebarPane = function()
{
WebInspector.SidebarPane.call(this, WebInspector.UIString("Workers"));
@@ -70,17 +60,25 @@
this.bodyElement.appendChild(this._workerListElement);
this._idToWorkerItem = {};
- this._workerManager = workerManager;
- workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded, this._workerAdded, this);
- workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved, this._workerRemoved, this);
- workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared, this._workersCleared, this);
+ var threadList = WebInspector.workerManager.threadsList();
+ for (var i = 0; i < threadList.length; ++i) {
+ var threadId = threadList[i];
+ if (threadId === WebInspector.WorkerManager.MainThreadId)
+ continue;
+
+ this._addWorker(threadId, WebInspector.workerManager.threadUrl(threadId));
+ }
+
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerAdded, this._workerAdded, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkerRemoved, this._workerRemoved, this);
+ WebInspector.workerManager.addEventListener(WebInspector.WorkerManager.Events.WorkersCleared, this._workersCleared, this);
}
WebInspector.WorkersSidebarPane.prototype = {
_workerAdded: function(event)
{
- this._addWorker(event.data.workerId, event.data.url, event.data.inspectorConnected);
+ this._addWorker(event.data.workerId, event.data.url);
},
_workerRemoved: function(event)
@@ -95,7 +93,7 @@
this._workerListElement.removeChildren();
},
- _addWorker: function(workerId, url, inspectorConnected)
+ _addWorker: function(workerId, url)
{
var item = this._workerListElement.createChild("div", "dedicated-worker-item");
var link = item.createChild("a");
@@ -109,7 +107,7 @@
_workerItemClicked: function(workerId, event)
{
event.preventDefault();
- this._workerManager.openWorkerInspector(workerId);
+ WebInspector.workerFrontendManager.openWorkerInspector(workerId);
},
_autoattachToWorkersClicked: function(event)
diff --git a/Source/devtools/front_end/Workspace.js b/Source/devtools/front_end/Workspace.js
index 681dda3..d95a934 100644
--- a/Source/devtools/front_end/Workspace.js
+++ b/Source/devtools/front_end/Workspace.js
@@ -148,8 +148,8 @@
searchInFileContent: function(path, query, caseSensitive, isRegex, callback) { },
/**
- * @param {Array.<string>} queries
- * @param {Array.<string>} fileQueries
+ * @param {!Array.<string>} queries
+ * @param {!Array.<string>} fileQueries
* @param {boolean} caseSensitive
* @param {boolean} isRegex
* @param {!WebInspector.Progress} progress
@@ -171,7 +171,7 @@
*/
WebInspector.Project = function(workspace, projectDelegate)
{
- /** @type {!Object.<string, {uiSourceCode: !WebInspector.UISourceCode, index: number}>} */
+ /** @type {!Object.<string, !{uiSourceCode: !WebInspector.UISourceCode, index: number}>} */
this._uiSourceCodesMap = {};
/** @type {!Array.<!WebInspector.UISourceCode>} */
this._uiSourceCodesList = [];
@@ -265,6 +265,14 @@
},
/**
+ * @return {!WebInspector.Workspace}
+ */
+ workspace: function()
+ {
+ return this._workspace;
+ },
+
+ /**
* @param {string} path
* @return {?WebInspector.UISourceCode}
*/
@@ -333,6 +341,7 @@
/**
* @param {?string} content
+ * @this {WebInspector.Project}
*/
function onSetContent(content)
{
@@ -369,6 +378,7 @@
* @param {string=} newURL
* @param {string=} newOriginURL
* @param {!WebInspector.ResourceType=} newContentType
+ * @this {WebInspector.Project}
*/
function innerCallback(success, newName, newURL, newOriginURL, newContentType)
{
@@ -448,8 +458,8 @@
},
/**
- * @param {Array.<string>} queries
- * @param {Array.<string>} fileQueries
+ * @param {!Array.<string>} queries
+ * @param {!Array.<string>} fileQueries
* @param {boolean} caseSensitive
* @param {boolean} isRegex
* @param {!WebInspector.Progress} progress
@@ -493,6 +503,7 @@
this._fileSystemMapping = fileSystemMapping;
/** @type {!Object.<string, !WebInspector.Project>} */
this._projects = {};
+ this._hasResourceContentTrackingExtensions = false;
}
WebInspector.Workspace.Events = {
@@ -629,8 +640,6 @@
*/
hasMappingForURL: function(url)
{
- if (!InspectorFrontendHost.supportsFileSystems())
- return false;
return this._fileSystemMapping.hasMappingForURL(url);
},
@@ -652,8 +661,6 @@
*/
uiSourceCodeForURL: function(url)
{
- if (!InspectorFrontendHost.supportsFileSystems())
- return this._networkUISourceCodeForURL(url);
var file = this._fileSystemMapping.fileForURL(url);
if (!file)
return this._networkUISourceCodeForURL(url);
@@ -696,10 +703,26 @@
WebInspector.suggestReload();
},
+ /**
+ * @param {boolean} hasExtensions
+ */
+ setHasResourceContentTrackingExtensions: function(hasExtensions)
+ {
+ this._hasResourceContentTrackingExtensions = hasExtensions;
+ },
+
+ /**
+ * @return {boolean}
+ */
+ hasResourceContentTrackingExtensions: function()
+ {
+ return this._hasResourceContentTrackingExtensions;
+ },
+
__proto__: WebInspector.Object.prototype
}
/**
- * @type {?WebInspector.Workspace}
+ * @type {!WebInspector.Workspace}
*/
-WebInspector.workspace = null;
+WebInspector.workspace;
diff --git a/Source/devtools/front_end/WorkspaceController.js b/Source/devtools/front_end/WorkspaceController.js
index 588f89f..9ae5d89 100644
--- a/Source/devtools/front_end/WorkspaceController.js
+++ b/Source/devtools/front_end/WorkspaceController.js
@@ -56,6 +56,9 @@
return;
this._fileSystemRefreshTimeout = setTimeout(refreshFileSystems.bind(this), 1000);
+ /**
+ * @this {WebInspector.WorkspaceController}
+ */
function refreshFileSystems()
{
delete this._fileSystemRefreshTimeout;
@@ -65,9 +68,3 @@
}
}
}
-
-/**
- * @type {?WebInspector.WorkspaceController}
- */
-WebInspector.workspaceController = null;
-
diff --git a/Source/devtools/front_end/ZoomManager.js b/Source/devtools/front_end/ZoomManager.js
new file mode 100644
index 0000000..83aa496
--- /dev/null
+++ b/Source/devtools/front_end/ZoomManager.js
@@ -0,0 +1,42 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @constructor
+ * @extends {WebInspector.Object}
+ */
+WebInspector.ZoomManager = function()
+{
+ this._zoomFactor = InspectorFrontendHost.zoomFactor();
+ window.addEventListener("resize", this._onWindowResize.bind(this), true);
+};
+
+WebInspector.ZoomManager.Events = {
+ ZoomChanged: "ZoomChanged"
+};
+
+WebInspector.ZoomManager.prototype = {
+ /**
+ * @return {number}
+ */
+ zoomFactor: function()
+ {
+ return this._zoomFactor;
+ },
+
+ _onWindowResize: function()
+ {
+ var oldZoomFactor = this._zoomFactor;
+ this._zoomFactor = InspectorFrontendHost.zoomFactor();
+ if (oldZoomFactor !== this._zoomFactor)
+ this.dispatchEventToListeners(WebInspector.ZoomManager.Events.ZoomChanged, {from: oldZoomFactor, to: this._zoomFactor});
+ },
+
+ __proto__: WebInspector.Object.prototype
+};
+
+/**
+ * @type {!WebInspector.ZoomManager}
+ */
+WebInspector.zoomManager;
diff --git a/Source/devtools/front_end/auditsPanel.css b/Source/devtools/front_end/auditsPanel.css
index 28b9300..9231fcf 100644
--- a/Source/devtools/front_end/auditsPanel.css
+++ b/Source/devtools/front_end/auditsPanel.css
@@ -85,13 +85,13 @@
.audit-launcher-view button:active {
background-color: rgb(215, 215, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
.panel-enabler-view.audit-launcher-view label {
padding: 0 0 5px 0;
margin: 0;
- -webkit-flex: none;
+ display: flex;
}
.panel-enabler-view.audit-launcher-view label.disabled {
@@ -100,6 +100,8 @@
.audit-launcher-view input[type="checkbox"] {
margin-left: 0;
+ height: 14px;
+ width: 14px;
}
.audit-result-view {
@@ -120,7 +122,7 @@
.audit-result-view .severity-warning,
.audit-result-view .severity-info {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
display: inline-block;
width: 10px;
height: 10px;
@@ -133,7 +135,7 @@
.audit-result-view .severity-severe,
.audit-result-view .severity-warning,
.audit-result-view .severity-info {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -152,7 +154,7 @@
.audit-result-tree li.parent::before {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
float: left;
width: 8px;
@@ -167,7 +169,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.audit-result-tree li.parent::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
diff --git a/Source/devtools/front_end/cm/clike.js b/Source/devtools/front_end/cm/clike.js
index 3fcc1a7..f6626cd 100644
--- a/Source/devtools/front_end/cm/clike.js
+++ b/Source/devtools/front_end/cm/clike.js
@@ -158,7 +158,8 @@
electricChars: "{}",
blockCommentStart: "/*",
blockCommentEnd: "*/",
- lineComment: "//"
+ lineComment: "//",
+ fold: "brace"
};
});
diff --git a/Source/devtools/front_end/cm/cmdevtools.css b/Source/devtools/front_end/cm/cmdevtools.css
index 8d9501c..4856186 100644
--- a/Source/devtools/front_end/cm/cmdevtools.css
+++ b/Source/devtools/front_end/cm/cmdevtools.css
@@ -52,7 +52,7 @@
.cm-breakpoint .CodeMirror-linenumber {
color: white;
border-width: 1px 4px 1px 1px !important;
- -webkit-border-image: url(Images/breakpoint2.png) 1 4 1 1;
+ -webkit-border-image: url(Images/breakpoint.png) 1 4 1 1;
margin: 0px 0px 0px 3px !important;
padding-right: 3px;
padding-left: 1px;
@@ -61,15 +61,15 @@
}
.cm-breakpoint.cm-breakpoint-conditional .CodeMirror-linenumber {
- -webkit-border-image: url(Images/breakpointConditional2.png) 1 4 1 1;
+ -webkit-border-image: url(Images/breakpointConditional.png) 1 4 1 1;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
.cm-breakpoint .CodeMirror-linenumber {
- -webkit-border-image: url(Images/breakpoint2_2x.png) 2 8 2 2;
+ -webkit-border-image: url(Images/breakpoint_2x.png) 2 8 2 2;
}
.cm-breakpoint.cm-breakpoint-conditional .CodeMirror-linenumber {
- -webkit-border-image: url(Images/breakpointConditional2_2x.png) 2 8 2 2;
+ -webkit-border-image: url(Images/breakpointConditional_2x.png) 2 8 2 2;
}
} /* media */
diff --git a/Source/devtools/front_end/cm/codemirror.css b/Source/devtools/front_end/cm/codemirror.css
index 4e300b2..23eaf74 100644
--- a/Source/devtools/front_end/cm/codemirror.css
+++ b/Source/devtools/front_end/cm/codemirror.css
@@ -74,7 +74,6 @@
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
-.cm-s-default .cm-error {color: #f00;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
@@ -91,6 +90,7 @@
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
+.cm-s-default .cm-error {color: #f00;}
.cm-invalidchar {color: #f00;}
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
diff --git a/Source/devtools/front_end/cm/codemirror.js b/Source/devtools/front_end/cm/codemirror.js
index a14ce53..c7a5c6d 100644
--- a/Source/devtools/front_end/cm/codemirror.js
+++ b/Source/devtools/front_end/cm/codemirror.js
@@ -7,9 +7,14 @@
// Crude, but necessary to handle a number of hard-to-feature-detect
// bugs and behavior differences.
var gecko = /gecko\/\d/i.test(navigator.userAgent);
- var ie = /MSIE \d/.test(navigator.userAgent);
- var ie_lt8 = ie && (document.documentMode == null || document.documentMode < 8);
- var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);
+ // IE11 currently doesn't count as 'ie', since it has almost none of
+ // the same bugs as earlier versions. Use ie_gt10 to handle
+ // incompatibilities in that version.
+ var old_ie = /MSIE \d/.test(navigator.userAgent);
+ var ie_lt8 = old_ie && (document.documentMode == null || document.documentMode < 8);
+ var ie_lt9 = old_ie && (document.documentMode == null || document.documentMode < 9);
+ var ie_gt10 = /Trident\/([7-9]|\d{2,})\./.test(navigator.userAgent);
+ var ie = old_ie || ie_gt10;
var webkit = /WebKit\//.test(navigator.userAgent);
var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent);
var chrome = /Chrome\//.test(navigator.userAgent);
@@ -31,7 +36,7 @@
if (opera_version && opera_version >= 15) { opera = false; webkit = true; }
// Some browsers use the wrong event properties to signal cmd/ctrl on OS X
var flipCtrlCmd = mac && (qtwebkit || opera && (opera_version == null || opera_version < 12.11));
- var captureMiddleClick = gecko || (ie && !ie_lt9);
+ var captureMiddleClick = gecko || (old_ie && !ie_lt9);
// Optimize some code when these features are not used
var sawReadOnlySpans = false, sawCollapsedSpans = false;
@@ -57,7 +62,8 @@
overlays: [],
modeGen: 0,
overwrite: false, focused: false,
- suppressEdits: false, pasteIncoming: false,
+ suppressEdits: false,
+ pasteIncoming: false, cutIncoming: false,
draggingText: false,
highlight: new Delayed()};
@@ -71,7 +77,7 @@
// Override magic textarea content restore that IE sometimes does
// on our hidden textarea on reload
- if (ie) setTimeout(bind(resetInput, this, true), 20);
+ if (old_ie) setTimeout(bind(resetInput, this, true), 20);
registerEventHandlers(this);
// IE throws unspecified error in certain cases, when
@@ -191,6 +197,10 @@
function loadMode(cm) {
cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption);
+ resetModeState(cm);
+ }
+
+ function resetModeState(cm) {
cm.doc.iter(function(line) {
if (line.stateAfter) line.stateAfter = null;
if (line.styles) line.styles = null;
@@ -240,7 +250,6 @@
var map = keyMap[cm.options.keyMap], style = map.style;
cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-keymap-\S+/g, "") +
(style ? " cm-keymap-" + style : "");
- cm.state.disableInput = map.disableInput;
}
function themeChanged(cm) {
@@ -309,7 +318,7 @@
options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]);
} else if (found > -1 && !options.lineNumbers) {
options.gutters = options.gutters.slice(0);
- options.gutters.splice(i, 1);
+ options.gutters.splice(found, 1);
}
}
@@ -328,8 +337,9 @@
if (needsV) {
d.scrollbarV.style.display = "block";
d.scrollbarV.style.bottom = needsH ? scrollbarWidth(d.measure) + "px" : "0";
+ // A bug in IE8 can cause this value to be negative, so guard it.
d.scrollbarV.firstChild.style.height =
- (scrollHeight - d.scroller.clientHeight + d.scrollbarV.clientHeight) + "px";
+ Math.max(0, scrollHeight - d.scroller.clientHeight + d.scrollbarV.clientHeight) + "px";
} else {
d.scrollbarV.style.display = "";
d.scrollbarV.firstChild.style.height = "0";
@@ -353,8 +363,10 @@
d.gutterFiller.style.width = d.gutters.offsetWidth + "px";
} else d.gutterFiller.style.display = "";
- if (mac_geLion && scrollbarWidth(d.measure) === 0)
+ if (mac_geLion && scrollbarWidth(d.measure) === 0) {
d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = mac_geMountainLion ? "18px" : "12px";
+ d.scrollbarV.style.pointerEvents = d.scrollbarH.style.pointerEvents = "none";
+ }
}
function visibleLines(display, doc, viewPort) {
@@ -409,14 +421,14 @@
function updateDisplay(cm, changes, viewPort, forced) {
var oldFrom = cm.display.showingFrom, oldTo = cm.display.showingTo, updated;
var visible = visibleLines(cm.display, cm.doc, viewPort);
- for (;;) {
+ for (var first = true;; first = false) {
var oldWidth = cm.display.scroller.clientWidth;
if (!updateDisplayInner(cm, changes, visible, forced)) break;
updated = true;
changes = [];
updateSelection(cm);
updateScrollbars(cm);
- if (cm.options.lineWrapping && oldWidth != cm.display.scroller.clientWidth) {
+ if (first && cm.options.lineWrapping && oldWidth != cm.display.scroller.clientWidth) {
forced = true;
continue;
}
@@ -444,7 +456,7 @@
// updates.
function updateDisplayInner(cm, changes, visible, forced) {
var display = cm.display, doc = cm.doc;
- if (!display.wrapper.clientWidth) {
+ if (!display.wrapper.offsetWidth) {
display.showingFrom = display.showingTo = doc.first;
display.viewOffset = 0;
return;
@@ -529,6 +541,7 @@
}
display.showingFrom = from; display.showingTo = to;
+ display.gutters.style.height = "";
updateHeightsInViewport(cm);
updateViewOffset(cm);
@@ -711,9 +724,9 @@
if (bgClass)
wrap.insertBefore(elt("div", null, bgClass + " CodeMirror-linebackground"), wrap.firstChild);
if (cm.options.lineNumbers || markers) {
- var gutterWrap = wrap.insertBefore(elt("div", null, null, "position: absolute; left: " +
+ var gutterWrap = wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "position: absolute; left: " +
(cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"),
- wrap.firstChild);
+ lineElement);
if (cm.options.fixedGutter) (wrap.alignable || (wrap.alignable = [])).push(gutterWrap);
if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"]))
wrap.lineNumber = gutterWrap.appendChild(
@@ -904,7 +917,7 @@
doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.showingTo + 500), function(line) {
if (doc.frontier >= cm.display.showingFrom) { // Visible
var oldStyles = line.styles;
- line.styles = highlightLine(cm, line, state);
+ line.styles = highlightLine(cm, line, state, true);
var ischange = !oldStyles || oldStyles.length != line.styles.length;
for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];
if (ischange) {
@@ -913,7 +926,7 @@
}
line.stateAfter = copyState(doc.mode, state);
} else {
- processLine(cm, line, state);
+ processLine(cm, line.text, state);
line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;
}
++doc.frontier;
@@ -935,8 +948,9 @@
// smallest indentation, which tends to need the least context to
// parse correctly.
function findStartLine(cm, n, precise) {
- var minindent, minline, doc = cm.doc, maxScan = cm.doc.mode.innerMode ? 1000 : 100;
- for (var search = n, lim = n - maxScan; search > lim; --search) {
+ var minindent, minline, doc = cm.doc;
+ var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);
+ for (var search = n; search > lim; --search) {
if (search <= doc.first) return doc.first;
var line = getLine(doc, search - 1);
if (line.stateAfter && (!precise || search <= doc.frontier)) return search;
@@ -956,11 +970,12 @@
if (!state) state = startState(doc.mode);
else state = copyState(doc.mode, state);
doc.iter(pos, n, function(line) {
- processLine(cm, line, state);
+ processLine(cm, line.text, state);
var save = pos == n - 1 || pos % 5 == 0 || pos >= display.showingFrom && pos < display.showingTo;
line.stateAfter = save ? copyState(doc.mode, state) : null;
++pos;
});
+ if (precise) doc.frontier = pos;
return state;
}
@@ -1001,7 +1016,7 @@
var memo = cache[i];
if (memo.text == line.text && memo.markedSpans == line.markedSpans &&
cm.display.scroller.clientWidth == memo.width &&
- memo.classes == line.textClass + "|" + line.bgClass + "|" + line.wrapClass)
+ memo.classes == line.textClass + "|" + line.wrapClass)
return memo;
}
}
@@ -1021,7 +1036,7 @@
var cache = cm.display.measureLineCache;
var memo = {text: line.text, width: cm.display.scroller.clientWidth,
markedSpans: line.markedSpans, measure: measure,
- classes: line.textClass + "|" + line.bgClass + "|" + line.wrapClass};
+ classes: line.textClass + "|" + line.wrapClass};
if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo;
else cache.push(memo);
return measure;
@@ -1045,7 +1060,7 @@
// doesn't work when wrapping is on, but in that case the
// situation is slightly better, since IE does cache line-wrapping
// information and only recomputes per-line.
- if (ie && !ie_lt8 && !cm.options.lineWrapping && pre.childNodes.length > 100) {
+ if (old_ie && !ie_lt8 && !cm.options.lineWrapping && pre.childNodes.length > 100) {
var fragment = document.createDocumentFragment();
var chunk = 10, n = pre.childNodes.length;
for (var i = 0, chunks = Math.ceil(n / chunk); i < chunks; ++i) {
@@ -1105,7 +1120,7 @@
}
}
if (!rect) rect = data[i] = measureRect(getRect(node));
- if (cur.measureRight) rect.right = getRect(cur.measureRight).left;
+ if (cur.measureRight) rect.right = getRect(cur.measureRight).left - outer.left;
if (cur.leftSide) rect.leftSide = measureRect(getRect(cur.leftSide));
}
removeChildren(cm.display.measure);
@@ -1281,7 +1296,7 @@
if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) {
var ch = x < fromX || x - fromX <= toX - x ? from : to;
var xDiff = x - (ch == from ? fromX : toX);
- while (isExtendingChar.test(lineObj.text.charAt(ch))) ++ch;
+ while (isExtendingChar(lineObj.text.charAt(ch))) ++ch;
var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside,
xDiff < 0 ? -1 : xDiff ? 1 : 0);
return pos;
@@ -1379,11 +1394,14 @@
}
if (!updated && op.selectionChanged) updateSelection(cm);
if (op.updateScrollPos) {
- display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = newScrollPos.scrollTop;
- display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = newScrollPos.scrollLeft;
+ var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, newScrollPos.scrollTop));
+ var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, newScrollPos.scrollLeft));
+ display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top;
+ display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left;
alignHorizontally(cm);
if (op.scrollToPos)
- scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos), op.scrollToPosMargin);
+ scrollPosIntoView(cm, clipPos(cm.doc, op.scrollToPos.from),
+ clipPos(cm.doc, op.scrollToPos.to), op.scrollToPos.margin);
} else if (newScrollPos) {
scrollCursorIntoView(cm);
}
@@ -1470,7 +1488,7 @@
// supported or compatible enough yet to rely on.)
function readInput(cm) {
var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc, sel = doc.sel;
- if (!cm.state.focused || hasSelection(input) || isReadOnly(cm) || cm.state.disableInput) return false;
+ if (!cm.state.focused || hasSelection(input) || isReadOnly(cm) || cm.options.disableInput) return false;
if (cm.state.pasteIncoming && cm.state.fakedLastChar) {
input.value = input.value.substring(0, input.value.length - 1);
cm.state.fakedLastChar = false;
@@ -1488,22 +1506,32 @@
var same = 0, l = Math.min(prevInput.length, text.length);
while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same;
var from = sel.from, to = sel.to;
+ var inserted = text.slice(same);
if (same < prevInput.length)
from = Pos(from.line, from.ch - (prevInput.length - same));
else if (cm.state.overwrite && posEq(from, to) && !cm.state.pasteIncoming)
- to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + (text.length - same)));
+ to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + inserted.length));
var updateInput = cm.curOp.updateInput;
- var changeEvent = {from: from, to: to, text: splitLines(text.slice(same)),
- origin: cm.state.pasteIncoming ? "paste" : "+input"};
+ var changeEvent = {from: from, to: to, text: splitLines(inserted),
+ origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"};
makeChange(cm.doc, changeEvent, "end");
cm.curOp.updateInput = updateInput;
signalLater(cm, "inputRead", cm, changeEvent);
+ if (inserted && !cm.state.pasteIncoming && cm.options.electricChars &&
+ cm.options.smartIndent && sel.head.ch < 100) {
+ var electric = cm.getModeAt(sel.head).electricChars;
+ if (electric) for (var i = 0; i < electric.length; i++)
+ if (inserted.indexOf(electric.charAt(i)) > -1) {
+ indentLine(cm, sel.head.line, "smart");
+ break;
+ }
+ }
if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = "";
else cm.display.prevInput = text;
if (withOp) endOperation(cm);
- cm.state.pasteIncoming = false;
+ cm.state.pasteIncoming = cm.state.cutIncoming = false;
return true;
}
@@ -1538,7 +1566,7 @@
function registerEventHandlers(cm) {
var d = cm.display;
on(d.scroller, "mousedown", operation(cm, onMouseDown));
- if (ie)
+ if (old_ie)
on(d.scroller, "dblclick", operation(cm, function(e) {
if (signalDOMEvent(cm, e)) return;
var pos = posFromMouse(cm, e);
@@ -1601,11 +1629,11 @@
}
setTimeout(unregister, 5000);
- on(d.input, "keyup", operation(cm, function(e) {
- if (signalDOMEvent(cm, e) || cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
- if (e.keyCode == 16) cm.doc.sel.shift = false;
- }));
- on(d.input, "input", bind(fastPoll, cm));
+ on(d.input, "keyup", operation(cm, onKeyUp));
+ on(d.input, "input", function() {
+ if (ie && !ie_lt9 && cm.display.inputHasSelection) cm.display.inputHasSelection = null;
+ fastPoll(cm);
+ });
on(d.input, "keydown", operation(cm, onKeyDown));
on(d.input, "keypress", operation(cm, onKeyPress));
on(d.input, "focus", bind(onFocus, cm));
@@ -1641,21 +1669,22 @@
fastPoll(cm);
});
- function prepareCopy() {
+ function prepareCopy(e) {
if (d.inaccurateSelection) {
d.prevInput = "";
d.inaccurateSelection = false;
d.input.value = cm.getSelection();
selectInput(d.input);
}
+ if (e.type == "cut") cm.state.cutIncoming = true;
}
on(d.input, "cut", prepareCopy);
on(d.input, "copy", prepareCopy);
// Needed to handle Tab key in KHTML
if (khtml) on(d.sizer, "mouseup", function() {
- if (document.activeElement == d.input) d.input.blur();
- focusInput(cm);
+ if (document.activeElement == d.input) d.input.blur();
+ focusInput(cm);
});
}
@@ -1739,6 +1768,9 @@
e_preventDefault(e2);
extendSelection(cm.doc, start);
focusInput(cm);
+ // Work around unexplainable focus problem in IE9 (#2127)
+ if (old_ie && !ie_lt9)
+ setTimeout(function() {document.body.focus(); focusInput(cm);}, 20);
}
});
// Let the drag handler handle this.
@@ -1813,7 +1845,7 @@
}
var move = operation(cm, function(e) {
- if (!ie && !e_button(e)) done(e);
+ if (!old_ie && !e_button(e)) done(e);
else extend(e);
});
var up = operation(cm, done);
@@ -1895,7 +1927,6 @@
if (cm.state.draggingText) replaceRange(cm.doc, "", curFrom, curTo, "paste");
cm.replaceSelection(text, null, "paste");
focusInput(cm);
- onFocus(cm);
}
}
catch(e){}
@@ -1959,7 +1990,7 @@
// know one. These don't have to be accurate -- the result of them
// being wrong would just be a slight flicker on the first wheel
// scroll (if it is large enough).
- if (ie) wheelPixelsPerUnit = -.53;
+ if (old_ie) wheelPixelsPerUnit = -.53;
else if (gecko) wheelPixelsPerUnit = 15;
else if (chrome) wheelPixelsPerUnit = -.7;
else if (safari) wheelPixelsPerUnit = -1/3;
@@ -2108,12 +2139,18 @@
return handled;
}
+ function onKeyUp(e) {
+ var cm = this;
+ if (signalDOMEvent(cm, e) || cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
+ if (e.keyCode == 16) cm.doc.sel.shift = false;
+ }
+
var lastStoppedKey = null;
function onKeyDown(e) {
var cm = this;
if (!cm.state.focused) onFocus(cm);
if (signalDOMEvent(cm, e) || cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
- if (ie && e.keyCode == 27) e.returnValue = false;
+ if (old_ie && e.keyCode == 27) e.returnValue = false;
var code = e.keyCode;
// IE does strange things with escape.
cm.doc.sel.shift = code == 16 || e.shiftKey;
@@ -2134,10 +2171,6 @@
if (opera && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;}
if (((opera && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return;
var ch = String.fromCharCode(charCode == null ? keyCode : charCode);
- if (this.options.electricChars && this.doc.mode.electricChars &&
- this.options.smartIndent && !isReadOnly(this) &&
- this.doc.mode.electricChars.indexOf(ch) > -1)
- setTimeout(operation(cm, function() {indentLine(cm, cm.doc.sel.to.line, "smart");}), 75);
if (handleCharBinding(cm, e, ch)) return;
if (ie && !ie_lt9) cm.display.inputHasSelection = null;
fastPoll(cm);
@@ -2176,13 +2209,17 @@
var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;
if (!pos || opera) return; // Opera is difficult.
- if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to))
+
+ // Reset the current text selection only if the click is done outside of the selection
+ // and 'resetSelectionOnContextMenu' option is true.
+ var reset = cm.options.resetSelectionOnContextMenu;
+ if (reset && (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)))
operation(cm, setSelection)(cm.doc, pos, pos);
var oldCSS = display.input.style.cssText;
display.inputDiv.style.position = "absolute";
display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) +
- "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: white; outline: none;" +
+ "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: transparent; outline: none;" +
"border-width: 0; outline: none; overflow: hidden; opacity: .05; -ms-opacity: .05; filter: alpha(opacity=5);";
focusInput(cm);
resetInput(cm, true);
@@ -2204,10 +2241,10 @@
// Try to detect the user choosing select-all
if (display.input.selectionStart != null) {
- if (!ie || ie_lt9) prepareSelectAllHack();
+ if (!old_ie || ie_lt9) prepareSelectAllHack();
clearTimeout(detectingSelectAll);
var i = 0, poll = function(){
- if (display.prevInput == " " && display.input.selectionStart == 0)
+ if (display.prevInput == "\u200b" && display.input.selectionStart == 0)
operation(cm, commands.selectAll)(cm);
else if (i++ < 10) detectingSelectAll = setTimeout(poll, 500);
else resetInput(cm);
@@ -2216,7 +2253,7 @@
}
}
- if (ie && !ie_lt9) prepareSelectAllHack();
+ if (old_ie && !ie_lt9) prepareSelectAllHack();
if (captureMiddleClick) {
e_stop(e);
var mouseup = function() {
@@ -2326,6 +2363,7 @@
}
function makeChangeNoReadonly(doc, change, selUpdate) {
+ if (change.text.length == 1 && change.text[0] == "" && posEq(change.from, change.to)) return;
var selAfter = computeSelAfterChange(doc, change, selUpdate);
addToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);
@@ -2488,6 +2526,7 @@
function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);}
+ function cmp(a, b) {return a.line - b.line || a.ch - b.ch;}
function copyPos(x) {return Pos(x.line, x.ch);}
// SELECTION
@@ -2626,28 +2665,31 @@
// SCROLLING
function scrollCursorIntoView(cm) {
- var coords = scrollPosIntoView(cm, cm.doc.sel.head, cm.options.cursorScrollMargin);
+ var coords = scrollPosIntoView(cm, cm.doc.sel.head, null, cm.options.cursorScrollMargin);
if (!cm.state.focused) return;
var display = cm.display, box = getRect(display.sizer), doScroll = null;
if (coords.top + box.top < 0) doScroll = true;
else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false;
if (doScroll != null && !phantom) {
- var hidden = display.cursor.style.display == "none";
- if (hidden) {
- display.cursor.style.display = "";
- display.cursor.style.left = coords.left + "px";
- display.cursor.style.top = (coords.top - display.viewOffset) + "px";
- }
- display.cursor.scrollIntoView(doScroll);
- if (hidden) display.cursor.style.display = "none";
+ var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " +
+ (coords.top - display.viewOffset) + "px; height: " +
+ (coords.bottom - coords.top + scrollerCutOff) + "px; left: " +
+ coords.left + "px; width: 2px;");
+ cm.display.lineSpace.appendChild(scrollNode);
+ scrollNode.scrollIntoView(doScroll);
+ cm.display.lineSpace.removeChild(scrollNode);
}
}
- function scrollPosIntoView(cm, pos, margin) {
+ function scrollPosIntoView(cm, pos, end, margin) {
if (margin == null) margin = 0;
for (;;) {
var changed = false, coords = cursorCoords(cm, pos);
- var scrollPos = calculateScrollPos(cm, coords.left, coords.top - margin, coords.left, coords.bottom + margin);
+ var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);
+ var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),
+ Math.min(coords.top, endCoords.top) - margin,
+ Math.max(coords.left, endCoords.left),
+ Math.max(coords.bottom, endCoords.bottom) + margin);
var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;
if (scrollPos.scrollTop != null) {
setScrollTop(cm, scrollPos.scrollTop);
@@ -2718,7 +2760,10 @@
var tabSize = cm.options.tabSize;
var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);
var curSpaceString = line.text.match(/^\s*/)[0], indentation;
- if (how == "smart") {
+ if (!aggressive && !/\S/.test(line.text)) {
+ indentation = 0;
+ how = "not";
+ } else if (how == "smart") {
indentation = cm.doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);
if (indentation == Pass) {
if (!aggressive) return;
@@ -2744,6 +2789,8 @@
if (indentString != curSpaceString)
replaceRange(cm.doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input");
+ else if (doc.sel.head.line == n && doc.sel.head.ch < curSpaceString.length)
+ setSelection(doc, Pos(n, curSpaceString.length), Pos(n, curSpaceString.length), 1);
line.stateAfter = null;
}
@@ -2844,7 +2891,7 @@
CodeMirror.prototype = {
constructor: CodeMirror,
- focus: function(){window.focus(); focusInput(this); onFocus(this); fastPoll(this);},
+ focus: function(){window.focus(); focusInput(this); fastPoll(this);},
setOption: function(option, value) {
var options = this.options, old = options[option];
@@ -2898,7 +2945,7 @@
}),
indentSelection: operation(null, function(how) {
var sel = this.doc.sel;
- if (posEq(sel.from, sel.to)) return indentLine(this, sel.from.line, how);
+ if (posEq(sel.from, sel.to)) return indentLine(this, sel.from.line, how, true);
var e = sel.to.line - (sel.to.ch ? 0 : 1);
for (var i = sel.from.line; i <= e; ++i) indentLine(this, i, how);
}),
@@ -2943,11 +2990,31 @@
},
getHelper: function(pos, type) {
- if (!helpers.hasOwnProperty(type)) return;
+ return this.getHelpers(pos, type)[0];
+ },
+
+ getHelpers: function(pos, type) {
+ var found = [];
+ if (!helpers.hasOwnProperty(type)) return helpers;
var help = helpers[type], mode = this.getModeAt(pos);
- return mode[type] && help[mode[type]] ||
- mode.helperType && help[mode.helperType] ||
- help[mode.name];
+ if (typeof mode[type] == "string") {
+ if (help[mode[type]]) found.push(help[mode[type]]);
+ } else if (mode[type]) {
+ for (var i = 0; i < mode[type].length; i++) {
+ var val = help[mode[type][i]];
+ if (val) found.push(val);
+ }
+ } else if (mode.helperType && help[mode.helperType]) {
+ found.push(help[mode.helperType]);
+ } else if (help[mode.name]) {
+ found.push(help[mode.name]);
+ }
+ for (var i = 0; i < help._global.length; i++) {
+ var cur = help._global[i];
+ if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)
+ found.push(cur.val);
+ }
+ return found;
},
getStateAfter: function(line, precise) {
@@ -3093,8 +3160,13 @@
},
triggerOnKeyDown: operation(null, onKeyDown),
+ triggerOnKeyPress: operation(null, onKeyPress),
+ triggerOnKeyUp: operation(null, onKeyUp),
- execCommand: function(cmd) {return commands[cmd](this);},
+ execCommand: function(cmd) {
+ if (commands.hasOwnProperty(cmd))
+ return commands[cmd](this);
+ },
findPosH: function(from, amount, unit, visually) {
var dir = 1;
@@ -3136,14 +3208,18 @@
},
moveV: operation(null, function(dir, unit) {
- var sel = this.doc.sel;
- var pos = cursorCoords(this, sel.head, "div");
- if (sel.goalColumn != null) pos.left = sel.goalColumn;
- var target = findPosV(this, pos, dir, unit);
-
- if (unit == "page") addToScrollPos(this, 0, charCoords(this, target, "div").top - pos.top);
+ var sel = this.doc.sel, target, goal;
+ if (sel.shift || sel.extend || posEq(sel.from, sel.to)) {
+ var pos = cursorCoords(this, sel.head, "div");
+ if (sel.goalColumn != null) pos.left = sel.goalColumn;
+ target = findPosV(this, pos, dir, unit);
+ if (unit == "page") addToScrollPos(this, 0, charCoords(this, target, "div").top - pos.top);
+ goal = pos.left;
+ } else {
+ target = dir < 0 ? sel.from : sel.to;
+ }
extendSelection(this.doc, target, target, dir);
- sel.goalColumn = pos.left;
+ if (goal != null) sel.goalColumn = goal;
}),
toggleOverwrite: function(value) {
@@ -3153,7 +3229,7 @@
else
this.display.cursor.className = this.display.cursor.className.replace(" CodeMirror-overwrite", "");
},
- hasFocus: function() { return this.state.focused; },
+ hasFocus: function() { return document.activeElement == this.display.input; },
scrollTo: operation(null, function(x, y) {
updateScrollPos(this, x, y);
@@ -3165,17 +3241,23 @@
clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co};
},
- scrollIntoView: operation(null, function(pos, margin) {
- if (typeof pos == "number") pos = Pos(pos, 0);
+ scrollIntoView: operation(null, function(range, margin) {
+ if (range == null) range = {from: this.doc.sel.head, to: null};
+ else if (typeof range == "number") range = {from: Pos(range, 0), to: null};
+ else if (range.from == null) range = {from: range, to: null};
+ if (!range.to) range.to = range.from;
if (!margin) margin = 0;
- var coords = pos;
- if (!pos || pos.line != null) {
- this.curOp.scrollToPos = pos ? clipPos(this.doc, pos) : this.doc.sel.head;
- this.curOp.scrollToPosMargin = margin;
- coords = cursorCoords(this, this.curOp.scrollToPos);
+ var coords = range;
+ if (range.from.line != null) {
+ this.curOp.scrollToPos = {from: range.from, to: range.to, margin: margin};
+ coords = {from: cursorCoords(this, range.from),
+ to: cursorCoords(this, range.to)};
}
- var sPos = calculateScrollPos(this, coords.left, coords.top - margin, coords.right, coords.bottom + margin);
+ var sPos = calculateScrollPos(this, Math.min(coords.from.left, coords.to.left),
+ Math.min(coords.from.top, coords.to.top) - margin,
+ Math.max(coords.from.right, coords.to.right),
+ Math.max(coords.from.bottom, coords.to.bottom) + margin);
updateScrollPos(this, sPos.scrollLeft, sPos.scrollTop);
}),
@@ -3188,16 +3270,19 @@
if (this.options.lineWrapping)
this.display.measureLineCache.length = this.display.measureLineCachePos = 0;
this.curOp.forceUpdate = true;
+ signal(this, "refresh", this);
}),
operation: function(f){return runInOp(this, f);},
refresh: operation(null, function() {
- var badHeight = this.display.cachedTextHeight == null;
+ var oldHeight = this.display.cachedTextHeight;
clearCaches(this);
updateScrollPos(this, this.doc.scrollLeft, this.doc.scrollTop);
regChange(this);
- if (badHeight) estimateLineHeights(this);
+ if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)
+ estimateLineHeights(this);
+ signal(this, "refresh", this);
}),
swapDoc: operation(null, function(doc) {
@@ -3207,6 +3292,7 @@
clearCaches(this);
resetInput(this, true);
updateScrollPos(this, doc.scrollLeft, doc.scrollTop);
+ signalLater(this, "swapDoc", this, old);
return old;
}),
@@ -3246,12 +3332,18 @@
option("indentWithTabs", false);
option("smartIndent", true);
option("tabSize", 4, function(cm) {
- loadMode(cm);
+ resetModeState(cm);
clearCaches(cm);
regChange(cm);
}, true);
+ option("specialChars", /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\ufeff]/g, function(cm, val) {
+ cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
+ cm.refresh();
+ }, true);
+ option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);
option("electricChars", true);
option("rtlMoveVisually", !windows);
+ option("wholeLineUpdateBefore", true);
option("theme", "default", function(cm) {
themeChanged(cm);
@@ -3281,10 +3373,19 @@
option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true);
option("showCursorWhenSelecting", false, updateSelection, true);
+ option("resetSelectionOnContextMenu", true);
+
option("readOnly", false, function(cm, val) {
- if (val == "nocursor") {onBlur(cm); cm.display.input.blur();}
- else if (!val) resetInput(cm, true);
+ if (val == "nocursor") {
+ onBlur(cm);
+ cm.display.input.blur();
+ cm.display.disabled = true;
+ } else {
+ cm.display.disabled = false;
+ if (!val) resetInput(cm, true);
+ }
});
+ option("disableInput", false, function(cm, val) {if (!val) resetInput(cm, true);}, true);
option("dragDrop", true);
option("cursorBlinkRate", 530);
@@ -3292,12 +3393,13 @@
option("cursorHeight", 1);
option("workTime", 100);
option("workDelay", 100);
- option("flattenSpans", true);
+ option("flattenSpans", true, resetModeState, true);
+ option("addModeClass", false, resetModeState, true);
option("pollInterval", 100);
option("undoDepth", 40, function(cm, val){cm.doc.history.undoDepth = val;});
option("historyEventDelay", 500);
option("viewportMargin", 10, function(cm){cm.refresh();}, true);
- option("maxHighlightLength", 10000, function(cm){loadMode(cm); cm.refresh();}, true);
+ option("maxHighlightLength", 10000, resetModeState, true);
option("crudeMeasuringFrom", 10000);
option("moveInputWithCursor", true, function(cm, val) {
if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0;
@@ -3354,6 +3456,9 @@
}
}
modeObj.name = spec.name;
+ if (spec.helperType) modeObj.helperType = spec.helperType;
+ if (spec.modeProps) for (var prop in spec.modeProps)
+ modeObj[prop] = spec.modeProps[prop];
return modeObj;
};
@@ -3384,9 +3489,13 @@
var helpers = CodeMirror.helpers = {};
CodeMirror.registerHelper = function(type, name, value) {
- if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {};
+ if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []};
helpers[type][name] = value;
};
+ CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {
+ CodeMirror.registerHelper(type, name, value);
+ helpers[type]._global.push({pred: predicate, val: value});
+ };
// UTILITIES
@@ -3491,7 +3600,9 @@
indentAuto: function(cm) {cm.indentSelection("smart");},
indentMore: function(cm) {cm.indentSelection("add");},
indentLess: function(cm) {cm.indentSelection("subtract");},
- insertTab: function(cm) {cm.replaceSelection("\t", "end", "+input");},
+ insertTab: function(cm) {
+ cm.replaceSelection("\t", "end", "+input");
+ },
defaultTab: function(cm) {
if (cm.somethingSelected()) cm.indentSelection("add");
else cm.replaceSelection("\t", "end", "+input");
@@ -3517,7 +3628,8 @@
keyMap.basic = {
"Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown",
"End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown",
- "Delete": "delCharAfter", "Backspace": "delCharBefore", "Tab": "defaultTab", "Shift-Tab": "indentAuto",
+ "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore",
+ "Tab": "defaultTab", "Shift-Tab": "indentAuto",
"Enter": "newlineAndIndent", "Insert": "toggleOverwrite"
};
// Note that the save and find-related commands aren't defined by
@@ -3663,11 +3775,12 @@
this.string = string;
this.tabSize = tabSize || 8;
this.lastColumnPos = this.lastColumnValue = 0;
+ this.lineStart = 0;
}
StringStream.prototype = {
eol: function() {return this.pos >= this.string.length;},
- sol: function() {return this.pos == 0;},
+ sol: function() {return this.pos == this.lineStart;},
peek: function() {return this.string.charAt(this.pos) || undefined;},
next: function() {
if (this.pos < this.string.length)
@@ -3700,9 +3813,12 @@
this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);
this.lastColumnPos = this.start;
}
- return this.lastColumnValue;
+ return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
},
- indentation: function() {return countColumn(this.string, null, this.tabSize);},
+ indentation: function() {
+ return countColumn(this.string, null, this.tabSize) -
+ (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);
+ },
match: function(pattern, consume, caseInsensitive) {
if (typeof pattern == "string") {
var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
@@ -3718,7 +3834,12 @@
return match;
}
},
- current: function(){return this.string.slice(this.start, this.pos);}
+ current: function(){return this.string.slice(this.start, this.pos);},
+ hideFirstChars: function(n, inner) {
+ this.lineStart += n;
+ try { return inner(); }
+ finally { this.lineStart -= n; }
+ }
};
CodeMirror.StringStream = StringStream;
@@ -3770,7 +3891,7 @@
if (withOp) endOperation(cm);
};
- TextMarker.prototype.find = function() {
+ TextMarker.prototype.find = function(bothSides) {
var from, to;
for (var i = 0; i < this.lines.length; ++i) {
var line = this.lines[i];
@@ -3781,7 +3902,7 @@
if (span.to != null) to = Pos(found, span.to);
}
}
- if (this.type == "bookmark") return from;
+ if (this.type == "bookmark" && !bothSides) return from;
return from && {from: from, to: to};
};
@@ -3818,37 +3939,40 @@
}
};
+ var nextMarkerId = 0;
+
function markText(doc, from, to, options, type) {
if (options && options.shared) return markTextShared(doc, from, to, options, type);
if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);
var marker = new TextMarker(doc, type);
- if (type == "range" && !posLess(from, to)) return marker;
if (options) copyObj(options, marker);
+ if (posLess(to, from) || posEq(from, to) && marker.clearWhenEmpty !== false)
+ return marker;
if (marker.replacedWith) {
marker.collapsed = true;
marker.replacedWith = elt("span", [marker.replacedWith], "CodeMirror-widget");
if (!options.handleMouseEvents) marker.replacedWith.ignoreEvents = true;
}
- if (marker.collapsed) sawCollapsedSpans = true;
+ if (marker.collapsed) {
+ if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||
+ from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))
+ throw new Error("Inserting collapsed marker partially overlapping an existing one");
+ sawCollapsedSpans = true;
+ }
if (marker.addToHistory)
addToHistory(doc, {from: from, to: to, origin: "markText"},
{head: doc.sel.head, anchor: doc.sel.anchor}, NaN);
- var curLine = from.line, size = 0, collapsedAtStart, collapsedAtEnd, cm = doc.cm, updateMaxLine;
+ var curLine = from.line, cm = doc.cm, updateMaxLine;
doc.iter(curLine, to.line + 1, function(line) {
if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(doc, line) == cm.display.maxLine)
updateMaxLine = true;
var span = {from: null, to: null, marker: marker};
- size += line.text.length;
- if (curLine == from.line) {span.from = from.ch; size -= from.ch;}
- if (curLine == to.line) {span.to = to.ch; size -= line.text.length - to.ch;}
- if (marker.collapsed) {
- if (curLine == to.line) collapsedAtEnd = collapsedSpanAt(line, to.ch);
- if (curLine == from.line) collapsedAtStart = collapsedSpanAt(line, from.ch);
- else updateLineHeight(line, 0);
- }
+ if (curLine == from.line) span.from = from.ch;
+ if (curLine == to.line) span.to = to.ch;
+ if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);
addMarkedSpan(line, span);
++curLine;
});
@@ -3864,9 +3988,7 @@
doc.clearHistory();
}
if (marker.collapsed) {
- if (collapsedAtStart != collapsedAtEnd)
- throw new Error("Inserting collapsed marker overlapping an existing one");
- marker.size = size;
+ marker.id = ++nextMarkerId;
marker.atomic = true;
}
if (cm) {
@@ -3939,7 +4061,7 @@
if (old) for (var i = 0, nw; i < old.length; ++i) {
var span = old[i], marker = span.marker;
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
- if (startsBefore || marker.type == "bookmark" && span.from == startCh && (!isInsert || !span.marker.insertLeft)) {
+ if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) {
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);
(nw || (nw = [])).push({from: span.from,
to: endsAfter ? null : span.to,
@@ -3953,7 +4075,7 @@
if (old) for (var i = 0, nw; i < old.length; ++i) {
var span = old[i], marker = span.marker;
var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
- if (endsAfter || marker.type == "bookmark" && span.from == endCh && (!isInsert || span.marker.insertLeft)) {
+ if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) {
var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);
(nw || (nw = [])).push({from: startsBefore ? null : span.from - endCh,
to: span.to == null ? null : span.to - endCh,
@@ -4003,13 +4125,9 @@
}
}
}
- if (sameLine && first) {
- // Make sure we didn't create any zero-length spans
- for (var i = 0; i < first.length; ++i)
- if (first[i].from != null && first[i].from == first[i].to && first[i].marker.type != "bookmark")
- first.splice(i--, 1);
- if (!first.length) first = null;
- }
+ // Make sure we didn't create any zero-length spans
+ if (first) first = clearEmptySpans(first);
+ if (last && last != first) last = clearEmptySpans(last);
var newMarkers = [first];
if (!sameLine) {
@@ -4026,6 +4144,16 @@
return newMarkers;
}
+ function clearEmptySpans(spans) {
+ for (var i = 0; i < spans.length; ++i) {
+ var span = spans[i];
+ if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)
+ spans.splice(i--, 1);
+ }
+ if (!spans.length) return null;
+ return spans;
+ }
+
function mergeOldSpans(doc, change) {
var old = getOldSpans(doc, change);
var stretched = stretchSpansOverChange(doc, change);
@@ -4076,20 +4204,48 @@
return parts;
}
- function collapsedSpanAt(line, ch) {
+ function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }
+ function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }
+
+ function compareCollapsedMarkers(a, b) {
+ var lenDiff = a.lines.length - b.lines.length;
+ if (lenDiff != 0) return lenDiff;
+ var aPos = a.find(), bPos = b.find();
+ var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);
+ if (fromCmp) return -fromCmp;
+ var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);
+ if (toCmp) return toCmp;
+ return b.id - a.id;
+ }
+
+ function collapsedSpanAtSide(line, start) {
var sps = sawCollapsedSpans && line.markedSpans, found;
if (sps) for (var sp, i = 0; i < sps.length; ++i) {
sp = sps[i];
- if (!sp.marker.collapsed) continue;
- if ((sp.from == null || sp.from < ch) &&
- (sp.to == null || sp.to > ch) &&
- (!found || found.width < sp.marker.width))
+ if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&
+ (!found || compareCollapsedMarkers(found, sp.marker) < 0))
found = sp.marker;
}
return found;
}
- function collapsedSpanAtStart(line) { return collapsedSpanAt(line, -1); }
- function collapsedSpanAtEnd(line) { return collapsedSpanAt(line, line.text.length + 1); }
+ function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); }
+ function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); }
+
+ function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
+ var line = getLine(doc, lineNo);
+ var sps = sawCollapsedSpans && line.markedSpans;
+ if (sps) for (var i = 0; i < sps.length; ++i) {
+ var sp = sps[i];
+ if (!sp.marker.collapsed) continue;
+ var found = sp.marker.find(true);
+ var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);
+ var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);
+ if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue;
+ if (fromCmp <= 0 && (cmp(found.to, from) || extraRight(sp.marker) - extraLeft(marker)) > 0 ||
+ fromCmp >= 0 && (cmp(found.from, to) || extraLeft(sp.marker) - extraRight(marker)) < 0)
+ return true;
+ }
+ }
function visualLine(doc, line) {
var merged;
@@ -4119,6 +4275,7 @@
for (var sp, i = 0; i < line.markedSpans.length; ++i) {
sp = line.markedSpans[i];
if (sp.marker.collapsed && !sp.marker.replacedWith && sp.from == span.to &&
+ (sp.to == null || sp.to != span.from) &&
(sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&
lineIsHiddenInner(doc, line, sp)) return true;
}
@@ -4212,6 +4369,7 @@
this.height = estimateHeight ? estimateHeight(this) : 1;
};
eventMixin(Line);
+ Line.prototype.lineNo = function() { return lineNo(this); };
function updateLine(line, text, markedSpans, estimateHeight) {
line.text = text;
@@ -4232,7 +4390,7 @@
// Run the given mode's parser over a line, update the styles
// array, which contains alternating fragments of text and CSS
// classes.
- function runMode(cm, text, mode, state, f) {
+ function runMode(cm, text, mode, state, f, forceToEnd) {
var flattenSpans = mode.flattenSpans;
if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;
var curStart = 0, curStyle = null;
@@ -4241,11 +4399,16 @@
while (!stream.eol()) {
if (stream.pos > cm.options.maxHighlightLength) {
flattenSpans = false;
+ if (forceToEnd) processLine(cm, text, state, stream.pos);
stream.pos = text.length;
style = null;
} else {
style = mode.token(stream, state);
}
+ if (cm.options.addModeClass) {
+ var mName = CodeMirror.innerMode(mode, state).mode.name;
+ if (mName) style = "m-" + (style ? mName + " " + style : mName);
+ }
if (!flattenSpans || curStyle != style) {
if (curStart < stream.start) f(stream.start, curStyle);
curStart = stream.start; curStyle = style;
@@ -4260,12 +4423,14 @@
}
}
- function highlightLine(cm, line, state) {
+ function highlightLine(cm, line, state, forceToEnd) {
// A styles array always starts with a number identifying the
// mode/overlays that it is based on (for easy invalidation).
var st = [cm.state.modeGen];
// Compute the base array of styles
- runMode(cm, line.text, cm.doc.mode, state, function(end, style) {st.push(end, style);});
+ runMode(cm, line.text, cm.doc.mode, state, function(end, style) {
+ st.push(end, style);
+ }, forceToEnd);
// Run overlays, adjust style array.
for (var o = 0; o < cm.state.overlays.length; ++o) {
@@ -4304,21 +4469,22 @@
// Lightweight form of highlight -- proceed over this line and
// update state, but don't save a style array.
- function processLine(cm, line, state) {
+ function processLine(cm, text, state, startAt) {
var mode = cm.doc.mode;
- var stream = new StringStream(line.text, cm.options.tabSize);
- if (line.text == "" && mode.blankLine) mode.blankLine(state);
+ var stream = new StringStream(text, cm.options.tabSize);
+ stream.start = stream.pos = startAt || 0;
+ if (text == "" && mode.blankLine) mode.blankLine(state);
while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) {
mode.token(stream, state);
stream.start = stream.pos;
}
}
- var styleToClassCache = {};
+ var styleToClassCache = {}, styleToClassCacheWithMode = {};
function interpretTokenStyle(style, builder) {
if (!style) return null;
for (;;) {
- var lineClass = style.match(/(?:^|\s)line-(background-)?(\S+)/);
+ var lineClass = style.match(/(?:^|\s+)line-(background-)?(\S+)/);
if (!lineClass) break;
style = style.slice(0, lineClass.index) + style.slice(lineClass.index + lineClass[0].length);
var prop = lineClass[1] ? "bgClass" : "textClass";
@@ -4327,8 +4493,10 @@
else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(builder[prop]))
builder[prop] += " " + lineClass[2];
}
- return styleToClassCache[style] ||
- (styleToClassCache[style] = "cm-" + style.replace(/ +/g, " cm-"));
+ if (/^\s*$/.test(style)) return null;
+ var cache = builder.cm.options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
+ return cache[style] ||
+ (cache[style] = style.replace(/\S+/g, "cm-$&"));
}
function buildLineContent(cm, realLine, measure, copyWidgets) {
@@ -4345,7 +4513,7 @@
builder.measure = line == realLine && measure;
builder.pos = 0;
builder.addToken = builder.measure ? buildTokenMeasure : buildToken;
- if ((ie || webkit) && cm.getOption("lineWrapping"))
+ if ((old_ie || webkit) && cm.getOption("lineWrapping"))
builder.addToken = buildTokenSplitSpaces(builder.addToken);
var next = insertLineContent(line, builder, getLineStyles(cm, line));
if (measure && line == realLine && !builder.measuredSomething) {
@@ -4382,17 +4550,23 @@
return builder;
}
- var tokenSpecialChars = /[\t\u0000-\u0019\u00ad\u200b\u2028\u2029\uFEFF]/g;
+ function defaultSpecialCharPlaceholder(ch) {
+ var token = elt("span", "\u2022", "cm-invalidchar");
+ token.title = "\\u" + ch.charCodeAt(0).toString(16);
+ return token;
+ }
+
function buildToken(builder, text, style, startStyle, endStyle, title) {
if (!text) return;
- if (!tokenSpecialChars.test(text)) {
+ var special = builder.cm.options.specialChars;
+ if (!special.test(text)) {
builder.col += text.length;
var content = document.createTextNode(text);
} else {
var content = document.createDocumentFragment(), pos = 0;
while (true) {
- tokenSpecialChars.lastIndex = pos;
- var m = tokenSpecialChars.exec(text);
+ special.lastIndex = pos;
+ var m = special.exec(text);
var skipped = m ? m.index - pos : text.length - pos;
if (skipped) {
content.appendChild(document.createTextNode(text.slice(pos, pos + skipped)));
@@ -4405,8 +4579,7 @@
content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab"));
builder.col += tabWidth;
} else {
- var token = elt("span", "\u2022", "cm-invalidchar");
- token.title = "\\u" + m[0].charCodeAt(0).toString(16);
+ var token = builder.cm.options.specialCharPlaceholder(m[0]);
content.appendChild(token);
builder.col += 1;
}
@@ -4426,13 +4599,12 @@
function buildTokenMeasure(builder, text, style, startStyle, endStyle) {
var wrapping = builder.cm.options.lineWrapping;
for (var i = 0; i < text.length; ++i) {
- var ch = text.charAt(i), start = i == 0;
- if (ch >= "\ud800" && ch < "\udbff" && i < text.length - 1) {
- ch = text.slice(i, i + 2);
- ++i;
- } else if (i && wrapping && spanAffectsWrapping(text, i)) {
+ var start = i == 0, to = i + 1;
+ while (to < text.length && isExtendingChar(text.charAt(to))) ++to;
+ var ch = text.slice(i, to);
+ i = to - 1;
+ if (i && wrapping && spanAffectsWrapping(text, i))
builder.pre.appendChild(elt("wbr"));
- }
var old = builder.measure[builder.pos];
var span = builder.measure[builder.pos] =
buildToken(builder, ch, style,
@@ -4441,7 +4613,7 @@
// In IE single-space nodes wrap differently than spaces
// embedded in larger text nodes, except when set to
// white-space: normal (issue #1268).
- if (ie && wrapping && ch == " " && i && !/\s/.test(text.charAt(i - 1)) &&
+ if (old_ie && wrapping && ch == " " && i && !/\s/.test(text.charAt(i - 1)) &&
i < text.length - 1 && !/\s/.test(text.charAt(i + 1)))
span.style.whiteSpace = "normal";
builder.pos += ch.length;
@@ -4457,7 +4629,7 @@
return out;
}
return function(builder, text, style, startStyle, endStyle, title) {
- return inner(builder, text.replace(/ {3,}/, split), style, startStyle, endStyle, title);
+ return inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);
};
}
@@ -4509,7 +4681,7 @@
if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle;
if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle;
if (m.title && !title) title = m.title;
- if (m.collapsed && (!collapsed || collapsed.marker.size < m.size))
+ if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))
collapsed = sp;
} else if (sp.from > pos && nextChange > sp.from) {
nextChange = sp.from;
@@ -4559,7 +4731,8 @@
var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;
// First adjust the line structure
- if (from.ch == 0 && to.ch == 0 && lastText == "") {
+ if (from.ch == 0 && to.ch == 0 && lastText == "" &&
+ (!doc.cm || doc.cm.options.wholeLineUpdateBefore)) {
// This is a whole-line replace. Treated specially to make
// sure line objects move the way they are supposed to.
for (var i = 0, e = text.length - 1, added = []; i < e; ++i)
@@ -4841,10 +5014,11 @@
clearHistory: function() {this.history = makeHistory(this.history.maxGeneration);},
markClean: function() {
- this.cleanGeneration = this.changeGeneration();
+ this.cleanGeneration = this.changeGeneration(true);
},
- changeGeneration: function() {
- this.history.lastOp = this.history.lastOrigin = null;
+ changeGeneration: function(forceSplit) {
+ if (forceSplit)
+ this.history.lastOp = this.history.lastOrigin = null;
return this.history.generation;
},
isClean: function (gen) {
@@ -4866,7 +5040,8 @@
},
setBookmark: function(pos, options) {
var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),
- insertLeft: options && options.insertLeft};
+ insertLeft: options && options.insertLeft,
+ clearWhenEmpty: false};
pos = clipPos(this, pos);
return markText(this, pos, pos, realOpts, "bookmark");
},
@@ -5147,10 +5322,10 @@
anchorBefore: doc.sel.anchor, headBefore: doc.sel.head,
anchorAfter: selAfter.anchor, headAfter: selAfter.head};
hist.done.push(cur);
- hist.generation = ++hist.maxGeneration;
while (hist.done.length > hist.undoDepth)
hist.done.shift();
}
+ hist.generation = ++hist.maxGeneration;
hist.lastTime = time;
hist.lastOp = opId;
hist.lastOrigin = change.origin;
@@ -5446,7 +5621,8 @@
return true;
}
- var isExtendingChar = /[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/;
+ var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;
+ function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); }
// DOM UTILITIES
@@ -5519,7 +5695,7 @@
if (/\w/.test(str.charAt(i - 2)) && /[^\-?\.]/.test(str.charAt(i))) return true;
if (i > 2 && /[\d\.,]/.test(str.charAt(i - 2)) && /[\d\.,]/.test(str.charAt(i))) return false;
}
- return /[~!#%&*)=+}\]|\"\.>,:;][({[<]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&*(_=+{[|><]|…[\w~`@#$%\^&*(_=+{[><]/.test(str.slice(i - 1, i + 1));
+ return /[~!#%&*)=+}\]\\|\"\.>,:;][({[<]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&*(_=+{[|><]|\u2026[\w~`@#$%\^&*(_=+{[><]/.test(str.slice(i - 1, i + 1));
};
var knownScrollbarWidth;
@@ -5587,14 +5763,14 @@
var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt",
19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End",
36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert",
- 46: "Delete", 59: ";", 91: "Mod", 92: "Mod", 93: "Mod", 109: "-", 107: "=", 127: "Delete",
- 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\",
- 221: "]", 222: "'", 63276: "PageUp", 63277: "PageDown", 63275: "End", 63273: "Home",
- 63234: "Left", 63232: "Up", 63235: "Right", 63233: "Down", 63302: "Insert", 63272: "Delete"};
+ 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete",
+ 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\",
+ 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete",
+ 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"};
CodeMirror.keyNames = keyNames;
(function() {
// Number keys
- for (var i = 0; i < 10; i++) keyNames[i + 48] = String(i);
+ for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i);
// Alphabetic keys
for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i);
// Function keys
@@ -5651,29 +5827,29 @@
}
var bidiOther;
function getBidiPartAt(order, pos) {
+ bidiOther = null;
for (var i = 0, found; i < order.length; ++i) {
var cur = order[i];
- if (cur.from < pos && cur.to > pos) { bidiOther = null; return i; }
- if (cur.from == pos || cur.to == pos) {
+ if (cur.from < pos && cur.to > pos) return i;
+ if ((cur.from == pos || cur.to == pos)) {
if (found == null) {
found = i;
} else if (compareBidiLevel(order, cur.level, order[found].level)) {
- bidiOther = found;
+ if (cur.from != cur.to) bidiOther = found;
return i;
} else {
- bidiOther = i;
+ if (cur.from != cur.to) bidiOther = i;
return found;
}
}
}
- bidiOther = null;
return found;
}
function moveInLine(line, pos, dir, byUnit) {
if (!byUnit) return pos + dir;
do pos += dir;
- while (pos > 0 && isExtendingChar.test(line.text.charAt(pos)));
+ while (pos > 0 && isExtendingChar(line.text.charAt(pos)));
return pos;
}
@@ -5708,7 +5884,7 @@
function moveLogically(line, start, dir, byUnit) {
var target = start + dir;
- if (byUnit) while (target > 0 && isExtendingChar.test(line.text.charAt(target))) target += dir;
+ if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir;
return target < 0 || target > line.text.length ? null : target;
}
@@ -5800,7 +5976,7 @@
if (type == ",") types[i] = "N";
else if (type == "%") {
for (var end = i + 1; end < len && types[end] == "%"; ++end) {}
- var replace = (i && types[i-1] == "!") || (end < len - 1 && types[end] == "1") ? "1" : "N";
+ var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N";
for (var j = i; j < end; ++j) types[j] = replace;
i = end - 1;
}
@@ -5825,7 +6001,7 @@
if (isNeutral.test(types[i])) {
for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}
var before = (i ? types[i-1] : outerType) == "L";
- var after = (end < len - 1 ? types[end] : outerType) == "L";
+ var after = (end < len ? types[end] : outerType) == "L";
var replace = before || after ? "L" : "R";
for (var j = i; j < end; ++j) types[j] = replace;
i = end - 1;
@@ -5875,7 +6051,7 @@
// THE END
- CodeMirror.version = "3.16.1";
+ CodeMirror.version = "3.21.1";
return CodeMirror;
})();
diff --git a/Source/devtools/front_end/cm/coffeescript.js b/Source/devtools/front_end/cm/coffeescript.js
index 509d920..e8bfe48 100644
--- a/Source/devtools/front_end/cm/coffeescript.js
+++ b/Source/devtools/front_end/cm/coffeescript.js
@@ -2,346 +2,353 @@
* Link to the project's GitHub page:
* https://github.com/pickhardt/coffeescript-codemirror-mode
*/
-CodeMirror.defineMode('coffeescript', function(conf) {
- var ERRORCLASS = 'error';
+CodeMirror.defineMode("coffeescript", function(conf) {
+ var ERRORCLASS = "error";
- function wordRegexp(words) {
- return new RegExp("^((" + words.join(")|(") + "))\\b");
+ function wordRegexp(words) {
+ return new RegExp("^((" + words.join(")|(") + "))\\b");
+ }
+
+ var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?)/;
+ var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/;
+ var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;
+ var properties = /^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*/;
+
+ var wordOperators = wordRegexp(["and", "or", "not",
+ "is", "isnt", "in",
+ "instanceof", "typeof"]);
+ var indentKeywords = ["for", "while", "loop", "if", "unless", "else",
+ "switch", "try", "catch", "finally", "class"];
+ var commonKeywords = ["break", "by", "continue", "debugger", "delete",
+ "do", "in", "of", "new", "return", "then",
+ "this", "throw", "when", "until"];
+
+ var keywords = wordRegexp(indentKeywords.concat(commonKeywords));
+
+ indentKeywords = wordRegexp(indentKeywords);
+
+
+ var stringPrefixes = /^('{3}|\"{3}|['\"])/;
+ var regexPrefixes = /^(\/{3}|\/)/;
+ var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"];
+ var constants = wordRegexp(commonConstants);
+
+ // Tokenizers
+ function tokenBase(stream, state) {
+ // Handle scope changes
+ if (stream.sol()) {
+ if (state.scope.align === null) state.scope.align = false;
+ var scopeOffset = state.scope.offset;
+ if (stream.eatSpace()) {
+ var lineOffset = stream.indentation();
+ if (lineOffset > scopeOffset && state.scope.type == "coffee") {
+ return "indent";
+ } else if (lineOffset < scopeOffset) {
+ return "dedent";
+ }
+ return null;
+ } else {
+ if (scopeOffset > 0) {
+ dedent(stream, state);
+ }
+ }
+ }
+ if (stream.eatSpace()) {
+ return null;
}
- var singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!\?]");
- var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\},:`=;\\.]');
- var doubleOperators = new RegExp("^((\->)|(\=>)|(\\+\\+)|(\\+\\=)|(\\-\\-)|(\\-\\=)|(\\*\\*)|(\\*\\=)|(\\/\\/)|(\\/\\=)|(==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//))");
- var doubleDelimiters = new RegExp("^((\\.\\.)|(\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))");
- var tripleDelimiters = new RegExp("^((\\.\\.\\.)|(//=)|(>>=)|(<<=)|(\\*\\*=))");
- var identifiers = new RegExp("^[_A-Za-z$][_A-Za-z$0-9]*");
- var properties = new RegExp("^(@|this\.)[_A-Za-z$][_A-Za-z$0-9]*");
+ var ch = stream.peek();
- var wordOperators = wordRegexp(['and', 'or', 'not',
- 'is', 'isnt', 'in',
- 'instanceof', 'typeof']);
- var indentKeywords = ['for', 'while', 'loop', 'if', 'unless', 'else',
- 'switch', 'try', 'catch', 'finally', 'class'];
- var commonKeywords = ['break', 'by', 'continue', 'debugger', 'delete',
- 'do', 'in', 'of', 'new', 'return', 'then',
- 'this', 'throw', 'when', 'until'];
-
- var keywords = wordRegexp(indentKeywords.concat(commonKeywords));
-
- indentKeywords = wordRegexp(indentKeywords);
-
-
- var stringPrefixes = new RegExp("^('{3}|\"{3}|['\"])");
- var regexPrefixes = new RegExp("^(/{3}|/)");
- var commonConstants = ['Infinity', 'NaN', 'undefined', 'null', 'true', 'false', 'on', 'off', 'yes', 'no'];
- var constants = wordRegexp(commonConstants);
-
- // Tokenizers
- function tokenBase(stream, state) {
- // Handle scope changes
- if (stream.sol()) {
- var scopeOffset = state.scopes[0].offset;
- if (stream.eatSpace()) {
- var lineOffset = stream.indentation();
- if (lineOffset > scopeOffset) {
- return 'indent';
- } else if (lineOffset < scopeOffset) {
- return 'dedent';
- }
- return null;
- } else {
- if (scopeOffset > 0) {
- dedent(stream, state);
- }
- }
- }
- if (stream.eatSpace()) {
- return null;
- }
-
- var ch = stream.peek();
-
- // Handle docco title comment (single line)
- if (stream.match("####")) {
- stream.skipToEnd();
- return 'comment';
- }
-
- // Handle multi line comments
- if (stream.match("###")) {
- state.tokenize = longComment;
- return state.tokenize(stream, state);
- }
-
- // Single line comment
- if (ch === '#') {
- stream.skipToEnd();
- return 'comment';
- }
-
- // Handle number literals
- if (stream.match(/^-?[0-9\.]/, false)) {
- var floatLiteral = false;
- // Floats
- if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
- floatLiteral = true;
- }
- if (stream.match(/^-?\d+\.\d*/)) {
- floatLiteral = true;
- }
- if (stream.match(/^-?\.\d+/)) {
- floatLiteral = true;
- }
-
- if (floatLiteral) {
- // prevent from getting extra . on 1..
- if (stream.peek() == "."){
- stream.backUp(1);
- }
- return 'number';
- }
- // Integers
- var intLiteral = false;
- // Hex
- if (stream.match(/^-?0x[0-9a-f]+/i)) {
- intLiteral = true;
- }
- // Decimal
- if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
- intLiteral = true;
- }
- // Zero by itself with no other piece of number.
- if (stream.match(/^-?0(?![\dx])/i)) {
- intLiteral = true;
- }
- if (intLiteral) {
- return 'number';
- }
- }
-
- // Handle strings
- if (stream.match(stringPrefixes)) {
- state.tokenize = tokenFactory(stream.current(), 'string');
- return state.tokenize(stream, state);
- }
- // Handle regex literals
- if (stream.match(regexPrefixes)) {
- if (stream.current() != '/' || stream.match(/^.*\//, false)) { // prevent highlight of division
- state.tokenize = tokenFactory(stream.current(), 'string-2');
- return state.tokenize(stream, state);
- } else {
- stream.backUp(1);
- }
- }
-
- // Handle operators and delimiters
- if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
- return 'punctuation';
- }
- if (stream.match(doubleOperators)
- || stream.match(singleOperators)
- || stream.match(wordOperators)) {
- return 'operator';
- }
- if (stream.match(singleDelimiters)) {
- return 'punctuation';
- }
-
- if (stream.match(constants)) {
- return 'atom';
- }
-
- if (stream.match(keywords)) {
- return 'keyword';
- }
-
- if (stream.match(identifiers)) {
- return 'variable';
- }
-
- if (stream.match(properties)) {
- return 'property';
- }
-
- // Handle non-detected items
- stream.next();
- return ERRORCLASS;
+ // Handle docco title comment (single line)
+ if (stream.match("####")) {
+ stream.skipToEnd();
+ return "comment";
}
- function tokenFactory(delimiter, outclass) {
- var singleline = delimiter.length == 1;
- return function(stream, state) {
- while (!stream.eol()) {
- stream.eatWhile(/[^'"\/\\]/);
- if (stream.eat('\\')) {
- stream.next();
- if (singleline && stream.eol()) {
- return outclass;
- }
- } else if (stream.match(delimiter)) {
- state.tokenize = tokenBase;
- return outclass;
- } else {
- stream.eat(/['"\/]/);
- }
- }
- if (singleline) {
- if (conf.mode.singleLineStringErrors) {
- outclass = ERRORCLASS;
- } else {
- state.tokenize = tokenBase;
- }
- }
+ // Handle multi line comments
+ if (stream.match("###")) {
+ state.tokenize = longComment;
+ return state.tokenize(stream, state);
+ }
+
+ // Single line comment
+ if (ch === "#") {
+ stream.skipToEnd();
+ return "comment";
+ }
+
+ // Handle number literals
+ if (stream.match(/^-?[0-9\.]/, false)) {
+ var floatLiteral = false;
+ // Floats
+ if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) {
+ floatLiteral = true;
+ }
+ if (stream.match(/^-?\d+\.\d*/)) {
+ floatLiteral = true;
+ }
+ if (stream.match(/^-?\.\d+/)) {
+ floatLiteral = true;
+ }
+
+ if (floatLiteral) {
+ // prevent from getting extra . on 1..
+ if (stream.peek() == "."){
+ stream.backUp(1);
+ }
+ return "number";
+ }
+ // Integers
+ var intLiteral = false;
+ // Hex
+ if (stream.match(/^-?0x[0-9a-f]+/i)) {
+ intLiteral = true;
+ }
+ // Decimal
+ if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) {
+ intLiteral = true;
+ }
+ // Zero by itself with no other piece of number.
+ if (stream.match(/^-?0(?![\dx])/i)) {
+ intLiteral = true;
+ }
+ if (intLiteral) {
+ return "number";
+ }
+ }
+
+ // Handle strings
+ if (stream.match(stringPrefixes)) {
+ state.tokenize = tokenFactory(stream.current(), "string");
+ return state.tokenize(stream, state);
+ }
+ // Handle regex literals
+ if (stream.match(regexPrefixes)) {
+ if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division
+ state.tokenize = tokenFactory(stream.current(), "string-2");
+ return state.tokenize(stream, state);
+ } else {
+ stream.backUp(1);
+ }
+ }
+
+ // Handle operators and delimiters
+ if (stream.match(operators) || stream.match(wordOperators)) {
+ return "operator";
+ }
+ if (stream.match(delimiters)) {
+ return "punctuation";
+ }
+
+ if (stream.match(constants)) {
+ return "atom";
+ }
+
+ if (stream.match(keywords)) {
+ return "keyword";
+ }
+
+ if (stream.match(identifiers)) {
+ return "variable";
+ }
+
+ if (stream.match(properties)) {
+ return "property";
+ }
+
+ // Handle non-detected items
+ stream.next();
+ return ERRORCLASS;
+ }
+
+ function tokenFactory(delimiter, outclass) {
+ var singleline = delimiter.length == 1;
+ return function(stream, state) {
+ while (!stream.eol()) {
+ stream.eatWhile(/[^'"\/\\]/);
+ if (stream.eat("\\")) {
+ stream.next();
+ if (singleline && stream.eol()) {
return outclass;
- };
- }
-
- function longComment(stream, state) {
- while (!stream.eol()) {
- stream.eatWhile(/[^#]/);
- if (stream.match("###")) {
- state.tokenize = tokenBase;
- break;
- }
- stream.eatWhile("#");
- }
- return "comment";
- }
-
- function indent(stream, state, type) {
- type = type || 'coffee';
- var indentUnit = 0;
- if (type === 'coffee') {
- for (var i = 0; i < state.scopes.length; i++) {
- if (state.scopes[i].type === 'coffee') {
- indentUnit = state.scopes[i].offset + conf.indentUnit;
- break;
- }
- }
+ }
+ } else if (stream.match(delimiter)) {
+ state.tokenize = tokenBase;
+ return outclass;
} else {
- indentUnit = stream.column() + stream.current().length;
+ stream.eat(/['"\/]/);
}
- state.scopes.unshift({
- offset: indentUnit,
- type: type
- });
- }
-
- function dedent(stream, state) {
- if (state.scopes.length == 1) return;
- if (state.scopes[0].type === 'coffee') {
- var _indent = stream.indentation();
- var _indent_index = -1;
- for (var i = 0; i < state.scopes.length; ++i) {
- if (_indent === state.scopes[i].offset) {
- _indent_index = i;
- break;
- }
- }
- if (_indent_index === -1) {
- return true;
- }
- while (state.scopes[0].offset !== _indent) {
- state.scopes.shift();
- }
- return false;
+ }
+ if (singleline) {
+ if (conf.mode.singleLineStringErrors) {
+ outclass = ERRORCLASS;
} else {
- state.scopes.shift();
- return false;
+ state.tokenize = tokenBase;
}
- }
-
- function tokenLexer(stream, state) {
- var style = state.tokenize(stream, state);
- var current = stream.current();
-
- // Handle '.' connected identifiers
- if (current === '.') {
- style = state.tokenize(stream, state);
- current = stream.current();
- if (style === 'variable') {
- return 'variable';
- } else {
- return ERRORCLASS;
- }
- }
-
- // Handle scope changes.
- if (current === 'return') {
- state.dedent += 1;
- }
- if (((current === '->' || current === '=>') &&
- !state.lambda &&
- state.scopes[0].type == 'coffee' &&
- stream.peek() === '')
- || style === 'indent') {
- indent(stream, state);
- }
- var delimiter_index = '[({'.indexOf(current);
- if (delimiter_index !== -1) {
- indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1));
- }
- if (indentKeywords.exec(current)){
- indent(stream, state);
- }
- if (current == 'then'){
- dedent(stream, state);
- }
-
-
- if (style === 'dedent') {
- if (dedent(stream, state)) {
- return ERRORCLASS;
- }
- }
- delimiter_index = '])}'.indexOf(current);
- if (delimiter_index !== -1) {
- if (dedent(stream, state)) {
- return ERRORCLASS;
- }
- }
- if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'coffee') {
- if (state.scopes.length > 1) state.scopes.shift();
- state.dedent -= 1;
- }
-
- return style;
- }
-
- var external = {
- startState: function(basecolumn) {
- return {
- tokenize: tokenBase,
- scopes: [{offset:basecolumn || 0, type:'coffee'}],
- lastToken: null,
- lambda: false,
- dedent: 0
- };
- },
-
- token: function(stream, state) {
- var style = tokenLexer(stream, state);
-
- state.lastToken = {style:style, content: stream.current()};
-
- if (stream.eol() && stream.lambda) {
- state.lambda = false;
- }
-
- return style;
- },
-
- indent: function(state) {
- if (state.tokenize != tokenBase) {
- return 0;
- }
-
- return state.scopes[0].offset;
- },
-
- lineComment: "#"
+ }
+ return outclass;
};
- return external;
+ }
+
+ function longComment(stream, state) {
+ while (!stream.eol()) {
+ stream.eatWhile(/[^#]/);
+ if (stream.match("###")) {
+ state.tokenize = tokenBase;
+ break;
+ }
+ stream.eatWhile("#");
+ }
+ return "comment";
+ }
+
+ function indent(stream, state, type) {
+ type = type || "coffee";
+ var offset = 0, align = false, alignOffset = null;
+ for (var scope = state.scope; scope; scope = scope.prev) {
+ if (scope.type === "coffee") {
+ offset = scope.offset + conf.indentUnit;
+ break;
+ }
+ }
+ if (type !== "coffee") {
+ align = null;
+ alignOffset = stream.column() + stream.current().length;
+ } else if (state.scope.align) {
+ state.scope.align = false;
+ }
+ state.scope = {
+ offset: offset,
+ type: type,
+ prev: state.scope,
+ align: align,
+ alignOffset: alignOffset
+ };
+ }
+
+ function dedent(stream, state) {
+ if (!state.scope.prev) return;
+ if (state.scope.type === "coffee") {
+ var _indent = stream.indentation();
+ var matched = false;
+ for (var scope = state.scope; scope; scope = scope.prev) {
+ if (_indent === scope.offset) {
+ matched = true;
+ break;
+ }
+ }
+ if (!matched) {
+ return true;
+ }
+ while (state.scope.prev && state.scope.offset !== _indent) {
+ state.scope = state.scope.prev;
+ }
+ return false;
+ } else {
+ state.scope = state.scope.prev;
+ return false;
+ }
+ }
+
+ function tokenLexer(stream, state) {
+ var style = state.tokenize(stream, state);
+ var current = stream.current();
+
+ // Handle "." connected identifiers
+ if (current === ".") {
+ style = state.tokenize(stream, state);
+ current = stream.current();
+ if (/^\.[\w$]+$/.test(current)) {
+ return "variable";
+ } else {
+ return ERRORCLASS;
+ }
+ }
+
+ // Handle scope changes.
+ if (current === "return") {
+ state.dedent += 1;
+ }
+ if (((current === "->" || current === "=>") &&
+ !state.lambda &&
+ !stream.peek())
+ || style === "indent") {
+ indent(stream, state);
+ }
+ var delimiter_index = "[({".indexOf(current);
+ if (delimiter_index !== -1) {
+ indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1));
+ }
+ if (indentKeywords.exec(current)){
+ indent(stream, state);
+ }
+ if (current == "then"){
+ dedent(stream, state);
+ }
+
+
+ if (style === "dedent") {
+ if (dedent(stream, state)) {
+ return ERRORCLASS;
+ }
+ }
+ delimiter_index = "])}".indexOf(current);
+ if (delimiter_index !== -1) {
+ while (state.scope.type == "coffee" && state.scope.prev)
+ state.scope = state.scope.prev;
+ if (state.scope.type == current)
+ state.scope = state.scope.prev;
+ }
+ if (state.dedent > 0 && stream.eol() && state.scope.type == "coffee") {
+ if (state.scope.prev) state.scope = state.scope.prev;
+ state.dedent -= 1;
+ }
+
+ return style;
+ }
+
+ var external = {
+ startState: function(basecolumn) {
+ return {
+ tokenize: tokenBase,
+ scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false},
+ lastToken: null,
+ lambda: false,
+ dedent: 0
+ };
+ },
+
+ token: function(stream, state) {
+ var fillAlign = state.scope.align === null && state.scope;
+ if (fillAlign && stream.sol()) fillAlign.align = false;
+
+ var style = tokenLexer(stream, state);
+ if (fillAlign && style && style != "comment") fillAlign.align = true;
+
+ state.lastToken = {style:style, content: stream.current()};
+
+ if (stream.eol() && stream.lambda) {
+ state.lambda = false;
+ }
+
+ return style;
+ },
+
+ indent: function(state, text) {
+ if (state.tokenize != tokenBase) return 0;
+ var scope = state.scope;
+ var closer = text && "])}".indexOf(text.charAt(0)) > -1;
+ if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev;
+ var closes = closer && scope.type === text.charAt(0);
+ if (scope.align)
+ return scope.alignOffset - (closes ? 1 : 0);
+ else
+ return (closes ? scope.prev : scope).offset;
+ },
+
+ lineComment: "#",
+ fold: "indent"
+ };
+ return external;
});
-CodeMirror.defineMIME('text/x-coffeescript', 'coffeescript');
+CodeMirror.defineMIME("text/x-coffeescript", "coffeescript");
diff --git a/Source/devtools/front_end/cm/comment.js b/Source/devtools/front_end/cm/comment.js
index 5975b0b..cd2123e 100644
--- a/Source/devtools/front_end/cm/comment.js
+++ b/Source/devtools/front_end/cm/comment.js
@@ -96,9 +96,8 @@
for (var i = start; i <= end; ++i) {
var line = self.getLine(i);
var found = line.indexOf(lineString);
- if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;
if (found == -1 && (i != end || i == start) && nonWS.test(line)) break lineComment;
- if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;
+ if (i != start && found > -1 && nonWS.test(line.slice(0, found))) break lineComment;
lines.push(line);
}
self.operation(function() {
@@ -125,10 +124,7 @@
endLine = self.getLine(--end);
close = endLine.lastIndexOf(endString);
}
- if (open == -1 || close == -1 ||
- !/comment/.test(self.getTokenTypeAt(Pos(start, open + 1))) ||
- !/comment/.test(self.getTokenTypeAt(Pos(end, close + 1))))
- return false;
+ if (open == -1 || close == -1) return false;
self.operation(function() {
self.replaceRange("", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),
diff --git a/Source/devtools/front_end/cm/css.js b/Source/devtools/front_end/cm/css.js
index 6ad37f4..d8c30cf 100644
--- a/Source/devtools/front_end/cm/css.js
+++ b/Source/devtools/front_end/cm/css.js
@@ -1,11 +1,9 @@
-CodeMirror.defineMode("css", function(config) {
- return CodeMirror.getMode(config, "text/css");
-});
-
-CodeMirror.defineMode("css-base", function(config, parserConfig) {
+CodeMirror.defineMode("css", function(config, parserConfig) {
"use strict";
- var indentUnit = config.indentUnit,
+ if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css");
+
+ var indentUnit = config.indentUnit || config.tabSize || 2,
hooks = parserConfig.hooks || {},
atMediaTypes = parserConfig.atMediaTypes || {},
atMediaFeatures = parserConfig.atMediaFeatures || {},
@@ -39,7 +37,7 @@
stream.match(/^\s*\w*/);
return ret("keyword", "important");
}
- else if (/\d/.test(ch)) {
+ else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) {
stream.eatWhile(/[\w.%]/);
return ret("number", "unit");
}
@@ -252,7 +250,6 @@
// Push/pop context stack
if (type == "{") {
if (context == "@media" || context == "@mediaType") {
- state.stack.pop();
state.stack[state.stack.length-1] = "@media{";
}
else {
@@ -261,35 +258,57 @@
}
}
else if (type == "}") {
- var lastState = state.stack[state.stack.length - 1];
- if (lastState == "interpolation") style = "operator";
- state.stack.pop();
- if (context == "propertyValue") state.stack.pop();
+ if (context == "interpolation") style = "operator";
+ // Pop off end of array until { is reached
+ while(state.stack.length){
+ var removed = state.stack.pop();
+ if(removed.indexOf("{") > -1 || removed == "block" || removed == "rule"){
+ break;
+ }
+ }
}
else if (type == "interpolation") state.stack.push("interpolation");
else if (type == "@media") state.stack.push("@media");
else if (type == "@import") state.stack.push("@import");
else if (context == "@media" && /\b(keyword|attribute)\b/.test(style))
- state.stack.push("@mediaType");
- else if (context == "@mediaType" && stream.current() == ",") state.stack.pop();
- else if (context == "@mediaType" && type == "(") state.stack.push("@mediaType(");
- else if (context == "@mediaType(" && type == ")") state.stack.pop();
+ state.stack[state.stack.length-1] = "@mediaType";
+ else if (context == "@mediaType" && stream.current() == ",")
+ state.stack[state.stack.length-1] = "@media";
+ else if (type == "(") {
+ if (context == "@media" || context == "@mediaType") {
+ // Make sure @mediaType is used to avoid error on {
+ state.stack[state.stack.length-1] = "@mediaType";
+ state.stack.push("@mediaType(");
+ }
+ else state.stack.push("(");
+ }
+ else if (type == ")") {
+ // Pop off end of array until ( is reached
+ while(state.stack.length){
+ var removed = state.stack.pop();
+ if(removed.indexOf("(") > -1){
+ break;
+ }
+ }
+ }
else if (type == ":" && state.lastToken == "property") state.stack.push("propertyValue");
else if (context == "propertyValue" && type == ";") state.stack.pop();
else if (context == "@import" && type == ";") state.stack.pop();
+
return state.lastToken = style;
},
indent: function(state, textAfter) {
var n = state.stack.length;
if (/^\}/.test(textAfter))
- n -= state.stack[state.stack.length-1] == "propertyValue" ? 2 : 1;
+ n -= state.stack[n-1] == "propertyValue" ? 2 : 1;
return state.baseIndent + n * indentUnit;
},
electricChars: "}",
blockCommentStart: "/*",
- blockCommentEnd: "*/"
+ blockCommentEnd: "*/",
+ fold: "brace"
};
});
@@ -350,8 +369,8 @@
"drop-initial-before-align", "drop-initial-size", "drop-initial-value",
"elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
"flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
- "float", "float-offset", "font", "font-feature-settings", "font-family",
- "font-kerning", "font-language-override", "font-size", "font-size-adjust",
+ "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings",
+ "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust",
"font-stretch", "font-style", "font-synthesis", "font-variant",
"font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
"font-variant-ligatures", "font-variant-numeric", "font-variant-position",
@@ -375,25 +394,27 @@
"page", "page-break-after", "page-break-before", "page-break-inside",
"page-policy", "pause", "pause-after", "pause-before", "perspective",
"perspective-origin", "pitch", "pitch-range", "play-during", "position",
- "presentation-level", "punctuation-trim", "quotes", "rendering-intent",
- "resize", "rest", "rest-after", "rest-before", "richness", "right",
- "rotation", "rotation-point", "ruby-align", "ruby-overhang",
- "ruby-position", "ruby-span", "size", "speak", "speak-as", "speak-header",
+ "presentation-level", "punctuation-trim", "quotes", "region-break-after",
+ "region-break-before", "region-break-inside", "region-fragment",
+ "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness",
+ "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang",
+ "ruby-position", "ruby-span", "shape-inside", "shape-outside", "size",
+ "speak", "speak-as", "speak-header",
"speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
"tab-size", "table-layout", "target", "target-name", "target-new",
"target-position", "text-align", "text-align-last", "text-decoration",
"text-decoration-color", "text-decoration-line", "text-decoration-skip",
"text-decoration-style", "text-emphasis", "text-emphasis-color",
"text-emphasis-position", "text-emphasis-style", "text-height",
- "text-indent", "text-justify", "text-outline", "text-shadow",
- "text-space-collapse", "text-transform", "text-underline-position",
+ "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow",
+ "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position",
"text-wrap", "top", "transform", "transform-origin", "transform-style",
"transition", "transition-delay", "transition-duration",
"transition-property", "transition-timing-function", "unicode-bidi",
"vertical-align", "visibility", "voice-balance", "voice-duration",
"voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
"voice-volume", "volume", "white-space", "widows", "width", "word-break",
- "word-spacing", "word-wrap", "z-index",
+ "word-spacing", "word-wrap", "z-index", "zoom",
// SVG-specific
"clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color",
"flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events",
@@ -416,7 +437,7 @@
"darkslateblue", "darkslategray", "darkturquoise", "darkviolet",
"deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick",
"floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
- "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew",
+ "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
"hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
"lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
"lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink",
@@ -439,22 +460,22 @@
"above", "absolute", "activeborder", "activecaption", "afar",
"after-white-space", "ahead", "alias", "all", "all-scroll", "alternate",
"always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
- "arabic-indic", "armenian", "asterisks", "auto", "avoid", "background",
- "backwards", "baseline", "below", "bidi-override", "binary", "bengali",
- "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
- "both", "bottom", "bounding-box", "break-all", "break-word", "button", "button-bevel",
+ "arabic-indic", "armenian", "asterisks", "auto", "avoid", "avoid-column", "avoid-page",
+ "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary",
+ "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
+ "both", "bottom", "break", "break-all", "break-word", "button", "button-bevel",
"buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian",
"capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
"cell", "center", "checkbox", "circle", "cjk-earthly-branch",
"cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
- "col-resize", "collapse", "compact", "condensed", "contain", "content",
+ "col-resize", "collapse", "column", "compact", "condensed", "contain", "content",
"content-box", "context-menu", "continuous", "copy", "cover", "crop",
"cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal",
"decimal-leading-zero", "default", "default-button", "destination-atop",
"destination-in", "destination-out", "destination-over", "devanagari",
"disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted",
"double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
- "element", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
+ "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
"ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
"ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
"ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
@@ -470,7 +491,7 @@
"inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
"infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
"inline-block", "inline-table", "inset", "inside", "intrinsic", "invert",
- "italic", "justify", "kannada", "katakana", "katakana-iroha", "khmer",
+ "italic", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer",
"landscape", "lao", "large", "larger", "left", "level", "lighter",
"line-through", "linear", "lines", "list-item", "listbox", "listitem",
"local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
@@ -489,11 +510,11 @@
"no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
"ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote",
"optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
- "outside", "overlay", "overline", "padding", "padding-box", "painted",
- "paused", "persian", "plus-darker", "plus-lighter", "pointer", "portrait",
- "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button",
- "radio", "read-only", "read-write", "read-write-plaintext-only", "relative",
- "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba",
+ "outside", "outside-shape", "overlay", "overline", "padding", "padding-box",
+ "painted", "page", "paused", "persian", "plus-darker", "plus-lighter", "pointer",
+ "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button",
+ "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region",
+ "relative", "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba",
"ridge", "right", "round", "row-resize", "rtl", "run-in", "running",
"s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield",
"searchfield-cancel-button", "searchfield-decoration",
@@ -564,7 +585,7 @@
return false;
}
},
- name: "css-base"
+ name: "css"
});
CodeMirror.defineMIME("text/x-scss", {
@@ -575,6 +596,12 @@
valueKeywords: valueKeywords,
allowNested: true,
hooks: {
+ ":": function(stream) {
+ if (stream.match(/\s*{/)) {
+ return [null, "{"];
+ }
+ return false;
+ },
"$": function(stream) {
stream.match(/^[\w-]+/);
if (stream.peek() == ":") {
@@ -582,6 +609,11 @@
}
return ["variable", "variable"];
},
+ ",": function(stream, state) {
+ if (state.stack[state.stack.length - 1] == "propertyValue" && stream.match(/^ *\$/, false)) {
+ return ["operator", ";"];
+ }
+ },
"/": function(stream, state) {
if (stream.eat("/")) {
stream.skipToEnd();
@@ -602,6 +634,6 @@
}
}
},
- name: "css-base"
+ name: "css"
});
})();
diff --git a/Source/devtools/front_end/cm/headlesscodemirror.js b/Source/devtools/front_end/cm/headlesscodemirror.js
index 7caca5c..3433e8d 100644
--- a/Source/devtools/front_end/cm/headlesscodemirror.js
+++ b/Source/devtools/front_end/cm/headlesscodemirror.js
@@ -1,83 +1,155 @@
+// Content of the function is equal to runmode-standalone.js file
+// from CodeMirror distribution
(function(window) {
- window.CodeMirror = {};
+/* Just enough of CodeMirror to run runMode under node.js */
- function splitLines(string){ return string.split(/\r?\n|\r/); };
+window.CodeMirror = {};
- function StringStream(string) {
- this.pos = this.start = 0;
- this.string = string;
- }
- StringStream.prototype = {
- eol: function() {return this.pos >= this.string.length;},
- sol: function() {return this.pos == 0;},
- peek: function() {return this.string.charAt(this.pos) || null;},
- next: function() {
- if (this.pos < this.string.length)
- return this.string.charAt(this.pos++);
- },
- eat: function(match) {
- var ch = this.string.charAt(this.pos);
- if (typeof match == "string") var ok = ch == match;
- else var ok = ch && (match.test ? match.test(ch) : match(ch));
- if (ok) {++this.pos; return ch;}
- },
- eatWhile: function(match) {
- var start = this.pos;
- while (this.eat(match)){}
- return this.pos > start;
- },
- eatSpace: function() {
- var start = this.pos;
- while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
- return this.pos > start;
- },
- skipToEnd: function() {this.pos = this.string.length;},
- skipTo: function(ch) {
- var found = this.string.indexOf(ch, this.pos);
- if (found > -1) {this.pos = found; return true;}
- },
- backUp: function(n) {this.pos -= n;},
- column: function() {return this.start;},
- indentation: function() {return 0;},
- match: function(pattern, consume, caseInsensitive) {
- if (typeof pattern == "string") {
- var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
- var substr = this.string.substr(this.pos, pattern.length);
- if (cased(substr) == cased(pattern)) {
- if (consume !== false) this.pos += pattern.length;
- return true;
- }
- } else {
- var match = this.string.slice(this.pos).match(pattern);
- if (match && match.index > 0) return null;
- if (match && consume !== false) this.pos += match[0].length;
- return match;
+(function() {
+"use strict";
+
+function splitLines(string){ return string.split(/\r?\n|\r/); };
+
+function StringStream(string) {
+ this.pos = this.start = 0;
+ this.string = string;
+ this.lineStart = 0;
+}
+StringStream.prototype = {
+ eol: function() {return this.pos >= this.string.length;},
+ sol: function() {return this.pos == 0;},
+ peek: function() {return this.string.charAt(this.pos) || null;},
+ next: function() {
+ if (this.pos < this.string.length)
+ return this.string.charAt(this.pos++);
+ },
+ eat: function(match) {
+ var ch = this.string.charAt(this.pos);
+ if (typeof match == "string") var ok = ch == match;
+ else var ok = ch && (match.test ? match.test(ch) : match(ch));
+ if (ok) {++this.pos; return ch;}
+ },
+ eatWhile: function(match) {
+ var start = this.pos;
+ while (this.eat(match)){}
+ return this.pos > start;
+ },
+ eatSpace: function() {
+ var start = this.pos;
+ while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
+ return this.pos > start;
+ },
+ skipToEnd: function() {this.pos = this.string.length;},
+ skipTo: function(ch) {
+ var found = this.string.indexOf(ch, this.pos);
+ if (found > -1) {this.pos = found; return true;}
+ },
+ backUp: function(n) {this.pos -= n;},
+ column: function() {return this.start - this.lineStart;},
+ indentation: function() {return 0;},
+ match: function(pattern, consume, caseInsensitive) {
+ if (typeof pattern == "string") {
+ var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
+ var substr = this.string.substr(this.pos, pattern.length);
+ if (cased(substr) == cased(pattern)) {
+ if (consume !== false) this.pos += pattern.length;
+ return true;
}
- },
- current: function(){return this.string.slice(this.start, this.pos);}
- };
- CodeMirror.StringStream = StringStream;
+ } else {
+ var match = this.string.slice(this.pos).match(pattern);
+ if (match && match.index > 0) return null;
+ if (match && consume !== false) this.pos += match[0].length;
+ return match;
+ }
+ },
+ current: function(){return this.string.slice(this.start, this.pos);},
+ hideFirstChars: function(n, inner) {
+ this.lineStart += n;
+ try { return inner(); }
+ finally { this.lineStart -= n; }
+ }
+};
+CodeMirror.StringStream = StringStream;
- CodeMirror.startState = function (mode, a1, a2) {
- return mode.startState ? mode.startState(a1, a2) : true;
- };
+CodeMirror.startState = function (mode, a1, a2) {
+ return mode.startState ? mode.startState(a1, a2) : true;
+};
- var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};
- CodeMirror.defineMode = function (name, mode) { modes[name] = mode; };
- CodeMirror.defineMIME = function (mime, spec) { mimeModes[mime] = spec; };
- CodeMirror.defineMode("null", function() {
+var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};
+CodeMirror.defineMode = function (name, mode) { modes[name] = mode; };
+CodeMirror.defineMIME = function (mime, spec) { mimeModes[mime] = spec; };
+CodeMirror.resolveMode = function(spec) {
+ if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) {
+ spec = mimeModes[spec];
+ } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) {
+ spec = mimeModes[spec.name];
+ }
+ if (typeof spec == "string") return {name: spec};
+ else return spec || {name: "null"};
+};
+CodeMirror.getMode = function (options, spec) {
+ spec = CodeMirror.resolveMode(spec);
+ var mfactory = modes[spec.name];
+ if (!mfactory) throw new Error("Unknown mode: " + spec);
+ return mfactory(options, spec);
+};
+CodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min;
+CodeMirror.defineMode("null", function() {
return {token: function(stream) {stream.skipToEnd();}};
- });
- CodeMirror.defineMIME("text/plain", "null");
- CodeMirror.getMode = function (options, spec) {
- if (typeof spec == "string" && mimeModes.hasOwnProperty(spec))
- spec = mimeModes[spec];
- if (typeof spec == "string")
- var mname = spec, config = {};
- else if (spec != null)
- var mname = spec.name, config = spec;
- var mfactory = modes[mname];
- if (!mfactory) throw new Error("Unknown mode: " + spec);
- return mfactory(options, config || {});
- };
-}(this));
+});
+CodeMirror.defineMIME("text/plain", "null");
+
+CodeMirror.runMode = function (string, modespec, callback, options) {
+ var mode = CodeMirror.getMode({ indentUnit: 2 }, modespec);
+
+ if (callback.nodeType == 1) {
+ var tabSize = (options && options.tabSize) || 4;
+ var node = callback, col = 0;
+ node.innerHTML = "";
+ callback = function (text, style) {
+ if (text == "\n") {
+ node.appendChild(document.createElement("br"));
+ col = 0;
+ return;
+ }
+ var content = "";
+ // replace tabs
+ for (var pos = 0; ;) {
+ var idx = text.indexOf("\t", pos);
+ if (idx == -1) {
+ content += text.slice(pos);
+ col += text.length - pos;
+ break;
+ } else {
+ col += idx - pos;
+ content += text.slice(pos, idx);
+ var size = tabSize - col % tabSize;
+ col += size;
+ for (var i = 0; i < size; ++i) content += " ";
+ pos = idx + 1;
+ }
+ }
+
+ if (style) {
+ var sp = node.appendChild(document.createElement("span"));
+ sp.className = "cm-" + style.replace(/ +/g, " cm-");
+ sp.appendChild(document.createTextNode(content));
+ } else {
+ node.appendChild(document.createTextNode(content));
+ }
+ };
+ }
+
+ var lines = splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);
+ for (var i = 0, e = lines.length; i < e; ++i) {
+ if (i) callback("\n");
+ var stream = new CodeMirror.StringStream(lines[i]);
+ while (!stream.eol()) {
+ var style = mode.token(stream, state);
+ callback(stream.current(), style, i, stream.start, state);
+ stream.start = stream.pos;
+ }
+ }
+};
+})();
+}(this))
diff --git a/Source/devtools/front_end/cm/htmlmixed.js b/Source/devtools/front_end/cm/htmlmixed.js
index ec0c21d..b59ef37 100644
--- a/Source/devtools/front_end/cm/htmlmixed.js
+++ b/Source/devtools/front_end/cm/htmlmixed.js
@@ -44,7 +44,7 @@
if (close > -1) stream.backUp(cur.length - close);
else if (m = cur.match(/<\/?$/)) {
stream.backUp(cur.length);
- if (!stream.match(pat, false)) stream.match(cur[0]);
+ if (!stream.match(pat, false)) stream.match(cur);
}
return style;
}
diff --git a/Source/devtools/front_end/cm/javascript.js b/Source/devtools/front_end/cm/javascript.js
index fabe1c4..f27c063 100644
--- a/Source/devtools/front_end/cm/javascript.js
+++ b/Source/devtools/front_end/cm/javascript.js
@@ -2,6 +2,7 @@
CodeMirror.defineMode("javascript", function(config, parserConfig) {
var indentUnit = config.indentUnit;
+ var statementIndent = parserConfig.statementIndent;
var jsonMode = parserConfig.json;
var isTS = parserConfig.typescript;
@@ -20,7 +21,8 @@
"for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
"in": operator, "typeof": operator, "instanceof": operator,
"true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
- "this": kw("this")
+ "this": kw("this"), "module": kw("module"), "class": kw("class"), "super": kw("atom"),
+ "yield": C, "export": kw("export"), "import": kw("import"), "extends": C
};
// Extend the 'normal' keywords with the TypeScript language extensions
@@ -29,7 +31,6 @@
var tsKeywords = {
// object-like things
"interface": kw("interface"),
- "class": kw("class"),
"extends": kw("extends"),
"constructor": kw("constructor"),
@@ -39,8 +40,6 @@
"protected": kw("protected"),
"static": kw("static"),
- "super": kw("super"),
-
// types
"string": type, "number": type, "bool": type, "any": type
};
@@ -55,11 +54,6 @@
var isOperatorChar = /[+\-*&%=<>!?|~^]/;
- function chain(stream, state, f) {
- state.tokenize = f;
- return f(stream, state);
- }
-
function nextUntilUnescaped(stream, end) {
var escaped = false, next;
while ((next = stream.next()) != null) {
@@ -77,49 +71,51 @@
type = tp; content = cont;
return style;
}
-
- function jsTokenBase(stream, state) {
+ function tokenBase(stream, state) {
var ch = stream.next();
- if (ch == '"' || ch == "'")
- return chain(stream, state, jsTokenString(ch));
- else if (/[\[\]{}\(\),;\:\.]/.test(ch))
+ if (ch == '"' || ch == "'") {
+ state.tokenize = tokenString(ch);
+ return state.tokenize(stream, state);
+ } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
+ return ret("number", "number");
+ } else if (ch == "." && stream.match("..")) {
+ return ret("spread", "meta");
+ } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
return ret(ch);
- else if (ch == "0" && stream.eat(/x/i)) {
+ } else if (ch == "=" && stream.eat(">")) {
+ return ret("=>");
+ } else if (ch == "0" && stream.eat(/x/i)) {
stream.eatWhile(/[\da-f]/i);
return ret("number", "number");
- }
- else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) {
+ } else if (/\d/.test(ch)) {
stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
return ret("number", "number");
- }
- else if (ch == "/") {
+ } else if (ch == "/") {
if (stream.eat("*")) {
- return chain(stream, state, jsTokenComment);
- }
- else if (stream.eat("/")) {
+ state.tokenize = tokenComment;
+ return tokenComment(stream, state);
+ } else if (stream.eat("/")) {
stream.skipToEnd();
return ret("comment", "comment");
- }
- else if (state.lastType == "operator" || state.lastType == "keyword c" ||
- /^[\[{}\(,;:]$/.test(state.lastType)) {
+ } else if (state.lastType == "operator" || state.lastType == "keyword c" ||
+ state.lastType == "sof" || /^[\[{}\(,;:]$/.test(state.lastType)) {
nextUntilUnescaped(stream, "/");
stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla
return ret("regexp", "string-2");
- }
- else {
+ } else {
stream.eatWhile(isOperatorChar);
return ret("operator", null, stream.current());
}
- }
- else if (ch == "#") {
+ } else if (ch == "`") {
+ state.tokenize = tokenQuasi;
+ return tokenQuasi(stream, state);
+ } else if (ch == "#") {
stream.skipToEnd();
return ret("error", "error");
- }
- else if (isOperatorChar.test(ch)) {
+ } else if (isOperatorChar.test(ch)) {
stream.eatWhile(isOperatorChar);
return ret("operator", null, stream.current());
- }
- else {
+ } else {
stream.eatWhile(/[\w\$_]/);
var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
return (known && state.lastType != ".") ? ret(known.type, known.style, word) :
@@ -127,19 +123,19 @@
}
}
- function jsTokenString(quote) {
+ function tokenString(quote) {
return function(stream, state) {
if (!nextUntilUnescaped(stream, quote))
- state.tokenize = jsTokenBase;
+ state.tokenize = tokenBase;
return ret("string", "string");
};
}
- function jsTokenComment(stream, state) {
+ function tokenComment(stream, state) {
var maybeEnd = false, ch;
while (ch = stream.next()) {
if (ch == "/" && maybeEnd) {
- state.tokenize = jsTokenBase;
+ state.tokenize = tokenBase;
break;
}
maybeEnd = (ch == "*");
@@ -147,6 +143,50 @@
return ret("comment", "comment");
}
+ function tokenQuasi(stream, state) {
+ var escaped = false, next;
+ while ((next = stream.next()) != null) {
+ if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
+ state.tokenize = tokenBase;
+ break;
+ }
+ escaped = !escaped && next == "\\";
+ }
+ return ret("quasi", "string-2", stream.current());
+ }
+
+ var brackets = "([{}])";
+ // This is a crude lookahead trick to try and notice that we're
+ // parsing the argument patterns for a fat-arrow function before we
+ // actually hit the arrow token. It only works if the arrow is on
+ // the same line as the arguments and there's no strange noise
+ // (comments) in between. Fallback is to only notice when we hit the
+ // arrow, and not declare the arguments as locals for the arrow
+ // body.
+ function findFatArrow(stream, state) {
+ if (state.fatArrowAt) state.fatArrowAt = null;
+ var arrow = stream.string.indexOf("=>", stream.start);
+ if (arrow < 0) return;
+
+ var depth = 0, sawSomething = false;
+ for (var pos = arrow - 1; pos >= 0; --pos) {
+ var ch = stream.string.charAt(pos);
+ var bracket = brackets.indexOf(ch);
+ if (bracket >= 0 && bracket < 3) {
+ if (!depth) { ++pos; break; }
+ if (--depth == 0) break;
+ } else if (bracket >= 3 && bracket < 6) {
+ ++depth;
+ } else if (/[$\w]/.test(ch)) {
+ sawSomething = true;
+ } else if (sawSomething && !depth) {
+ ++pos;
+ break;
+ }
+ }
+ if (sawSomething && !depth) state.fatArrowAt = pos;
+ }
+
// Parser
var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true};
@@ -163,6 +203,10 @@
function inScope(state, varname) {
for (var v = state.localVars; v; v = v.next)
if (v.name == varname) return true;
+ for (var cx = state.context; cx; cx = cx.prev) {
+ for (var v = cx.vars; v; v = v.next)
+ if (v.name == varname) return true;
+ }
}
function parseJS(state, style, type, content, stream) {
@@ -209,7 +253,8 @@
state.localVars = {name: varname, next: state.localVars};
} else {
if (inList(state.globalVars)) return;
- state.globalVars = {name: varname, next: state.globalVars};
+ if (parserConfig.globalVars)
+ state.globalVars = {name: varname, next: state.globalVars};
}
}
@@ -226,8 +271,9 @@
}
function pushlex(type, info) {
var result = function() {
- var state = cx.state;
- state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info);
+ var state = cx.state, indent = state.indented;
+ if (state.lexical.type == "stat") indent = state.lexical.indented;
+ state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
};
result.lex = true;
return result;
@@ -250,61 +296,100 @@
};
}
- function statement(type) {
- if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex);
+ function statement(type, value) {
+ if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);
if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);
if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
if (type == "{") return cont(pushlex("}"), block, poplex);
if (type == ";") return cont();
- if (type == "if") return cont(pushlex("form"), expression, statement, poplex, maybeelse(cx.state.indented));
+ if (type == "if") return cont(pushlex("form"), expression, statement, poplex, maybeelse);
if (type == "function") return cont(functiondef);
- if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"),
- poplex, statement, poplex);
+ if (type == "for") return cont(pushlex("form"), forspec, poplex, statement, poplex);
if (type == "variable") return cont(pushlex("stat"), maybelabel);
if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
- block, poplex, poplex);
+ block, poplex, poplex);
if (type == "case") return cont(expression, expect(":"));
if (type == "default") return cont(expect(":"));
if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
- statement, poplex, popcontext);
+ statement, poplex, popcontext);
+ if (type == "module") return cont(pushlex("form"), pushcontext, afterModule, popcontext, poplex);
+ if (type == "class") return cont(pushlex("form"), className, objlit, poplex);
+ if (type == "export") return cont(pushlex("form"), afterExport, poplex);
+ if (type == "import") return cont(pushlex("form"), afterImport, poplex);
return pass(pushlex("stat"), expression, expect(";"), poplex);
}
function expression(type) {
- return expressionInner(type, maybeoperatorComma);
+ return expressionInner(type, false);
}
function expressionNoComma(type) {
- return expressionInner(type, maybeoperatorNoComma);
+ return expressionInner(type, true);
}
- function expressionInner(type, maybeop) {
+ function expressionInner(type, noComma) {
+ if (cx.state.fatArrowAt == cx.stream.start) {
+ var body = noComma ? arrowBodyNoComma : arrowBody;
+ if (type == "(") return cont(pushcontext, commasep(pattern, ")"), expect("=>"), body, popcontext);
+ else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
+ }
+
+ var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
if (type == "function") return cont(functiondef);
- if (type == "keyword c") return cont(maybeexpression);
- if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
- if (type == "operator") return cont(expression);
- if (type == "[") return cont(pushlex("]"), commasep(expressionNoComma, "]"), poplex, maybeop);
- if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeop);
+ if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression);
+ if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop);
+ if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
+ if (type == "[") return cont(pushlex("]"), expressionNoComma, maybeArrayComprehension, poplex, maybeop);
+ if (type == "{") return cont(commasep(objprop, "}"), maybeop);
return cont();
}
function maybeexpression(type) {
if (type.match(/[;\}\)\],]/)) return pass();
return pass(expression);
}
+ function maybeexpressionNoComma(type) {
+ if (type.match(/[;\}\)\],]/)) return pass();
+ return pass(expressionNoComma);
+ }
function maybeoperatorComma(type, value) {
- if (type == ",") return pass();
- return maybeoperatorNoComma(type, value, maybeoperatorComma);
+ if (type == ",") return cont(expression);
+ return maybeoperatorNoComma(type, value, false);
}
- function maybeoperatorNoComma(type, value, me) {
- if (!me) me = maybeoperatorNoComma;
+ function maybeoperatorNoComma(type, value, noComma) {
+ var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
+ var expr = noComma == false ? expression : expressionNoComma;
+ if (value == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
if (type == "operator") {
if (/\+\+|--/.test(value)) return cont(me);
- if (value == "?") return cont(expression, expect(":"), expression);
- return cont(expression);
+ if (value == "?") return cont(expression, expect(":"), expr);
+ return cont(expr);
}
+ if (type == "quasi") { cx.cc.push(me); return quasi(value); }
if (type == ";") return;
- if (type == "(") return cont(pushlex(")", "call"), commasep(expressionNoComma, ")"), poplex, me);
+ if (type == "(") return cont(commasep(expressionNoComma, ")", "call"), me);
if (type == ".") return cont(property, me);
- if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, me);
+ if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
+ }
+ function quasi(value) {
+ if (!value) debugger;
+ if (value.slice(value.length - 2) != "${") return cont();
+ return cont(expression, continueQuasi);
+ }
+ function continueQuasi(type) {
+ if (type == "}") {
+ cx.marked = "string-2";
+ cx.state.tokenize = tokenQuasi;
+ return cont();
+ }
+ }
+ function arrowBody(type) {
+ findFatArrow(cx.stream, cx.state);
+ if (type == "{") return pass(statement);
+ return pass(expression);
+ }
+ function arrowBodyNoComma(type) {
+ findFatArrow(cx.stream, cx.state);
+ if (type == "{") return pass(statement);
+ return pass(expressionNoComma);
}
function maybelabel(type) {
if (type == ":") return cont(poplex, statement);
@@ -319,16 +404,21 @@
if (value == "get" || value == "set") return cont(getterSetter);
} else if (type == "number" || type == "string") {
cx.marked = type + " property";
+ } else if (type == "[") {
+ return cont(expression, expect("]"), afterprop);
}
- if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expressionNoComma);
+ if (atomicTypes.hasOwnProperty(type)) return cont(afterprop);
}
function getterSetter(type) {
- if (type == ":") return cont(expression);
- if (type != "variable") return cont(expect(":"), expression);
+ if (type != "variable") return pass(afterprop);
cx.marked = "property";
return cont(functiondef);
}
- function commasep(what, end) {
+ function afterprop(type) {
+ if (type == ":") return cont(expressionNoComma);
+ if (type == "(") return pass(functiondef);
+ }
+ function commasep(what, end, info) {
function proceed(type) {
if (type == ",") {
var lex = cx.state.lexical;
@@ -340,7 +430,8 @@
}
return function(type) {
if (type == end) return cont();
- else return pass(what, proceed);
+ if (info === false) return pass(what, proceed);
+ return pass(pushlex(end, info), what, proceed, poplex);
};
}
function block(type) {
@@ -348,73 +439,121 @@
return pass(statement, block);
}
function maybetype(type) {
- if (type == ":") return cont(typedef);
- return pass();
+ if (isTS && type == ":") return cont(typedef);
}
function typedef(type) {
if (type == "variable"){cx.marked = "variable-3"; return cont();}
- return pass();
}
- function vardef1(type, value) {
- if (type == "variable") {
+ function vardef() {
+ return pass(pattern, maybetype, maybeAssign, vardefCont);
+ }
+ function pattern(type, value) {
+ if (type == "variable") { register(value); return cont(); }
+ if (type == "[") return cont(commasep(pattern, "]"));
+ if (type == "{") return cont(commasep(proppattern, "}"));
+ }
+ function proppattern(type, value) {
+ if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
register(value);
- return isTS ? cont(maybetype, vardef2) : cont(vardef2);
+ return cont(maybeAssign);
}
- return pass();
+ if (type == "variable") cx.marked = "property";
+ return cont(expect(":"), pattern, maybeAssign);
}
- function vardef2(type, value) {
- if (value == "=") return cont(expressionNoComma, vardef2);
- if (type == ",") return cont(vardef1);
+ function maybeAssign(_type, value) {
+ if (value == "=") return cont(expressionNoComma);
}
- function maybeelse(indent) {
- return function(type, value) {
- if (type == "keyword b" && value == "else") {
- cx.state.lexical = new JSLexical(indent, 0, "form", null, cx.state.lexical);
- return cont(statement, poplex);
- }
- return pass();
- };
+ function vardefCont(type) {
+ if (type == ",") return cont(vardef);
+ }
+ function maybeelse(type, value) {
+ if (type == "keyword b" && value == "else") return cont(pushlex("form"), statement, poplex);
+ }
+ function forspec(type) {
+ if (type == "(") return cont(pushlex(")"), forspec1, expect(")"));
}
function forspec1(type) {
- if (type == "var") return cont(vardef1, expect(";"), forspec2);
+ if (type == "var") return cont(vardef, expect(";"), forspec2);
if (type == ";") return cont(forspec2);
- if (type == "variable") return cont(formaybein);
+ if (type == "variable") return cont(formaybeinof);
return pass(expression, expect(";"), forspec2);
}
- function formaybein(_type, value) {
- if (value == "in") return cont(expression);
+ function formaybeinof(_type, value) {
+ if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return cont(maybeoperatorComma, forspec2);
}
function forspec2(type, value) {
if (type == ";") return cont(forspec3);
- if (value == "in") return cont(expression);
+ if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return pass(expression, expect(";"), forspec3);
}
function forspec3(type) {
if (type != ")") cont(expression);
}
function functiondef(type, value) {
+ if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
if (type == "variable") {register(value); return cont(functiondef);}
- if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext);
+ if (type == "(") return cont(pushcontext, commasep(funarg, ")"), statement, popcontext);
}
- function funarg(type, value) {
- if (type == "variable") {register(value); return isTS ? cont(maybetype) : cont();}
+ function funarg(type) {
+ if (type == "spread") return cont(funarg);
+ return pass(pattern, maybetype);
+ }
+ function className(type, value) {
+ if (type == "variable") {register(value); return cont(classNameAfter);}
+ }
+ function classNameAfter(_type, value) {
+ if (value == "extends") return cont(expression);
+ }
+ function objlit(type) {
+ if (type == "{") return cont(commasep(objprop, "}"));
+ }
+ function afterModule(type, value) {
+ if (type == "string") return cont(statement);
+ if (type == "variable") { register(value); return cont(maybeFrom); }
+ }
+ function afterExport(_type, value) {
+ if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
+ if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
+ return pass(statement);
+ }
+ function afterImport(type) {
+ if (type == "string") return cont();
+ return pass(importSpec, maybeFrom);
+ }
+ function importSpec(type, value) {
+ if (type == "{") return cont(commasep(importSpec, "}"));
+ if (type == "variable") register(value);
+ return cont();
+ }
+ function maybeFrom(_type, value) {
+ if (value == "from") { cx.marked = "keyword"; return cont(expression); }
+ }
+ function maybeArrayComprehension(type) {
+ if (type == "for") return pass(comprehension);
+ if (type == ",") return cont(commasep(expressionNoComma, "]", false));
+ return pass(commasep(expressionNoComma, "]", false));
+ }
+ function comprehension(type) {
+ if (type == "for") return cont(forspec, comprehension);
+ if (type == "if") return cont(expression, comprehension);
}
// Interface
return {
startState: function(basecolumn) {
- return {
- tokenize: jsTokenBase,
- lastType: null,
+ var state = {
+ tokenize: tokenBase,
+ lastType: "sof",
cc: [],
lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
localVars: parserConfig.localVars,
- globalVars: parserConfig.globalVars,
context: parserConfig.localVars && {vars: parserConfig.localVars},
indented: 0
};
+ if (parserConfig.globalVars) state.globalVars = parserConfig.globalVars;
+ return state;
},
token: function(stream, state) {
@@ -422,8 +561,9 @@
if (!state.lexical.hasOwnProperty("align"))
state.lexical.align = false;
state.indented = stream.indentation();
+ findFatArrow(stream, state);
}
- if (state.tokenize != jsTokenComment && stream.eatSpace()) return null;
+ if (state.tokenize != tokenComment && stream.eatSpace()) return null;
var style = state.tokenize(stream, state);
if (type == "comment") return style;
state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
@@ -431,22 +571,26 @@
},
indent: function(state, textAfter) {
- if (state.tokenize == jsTokenComment) return CodeMirror.Pass;
- if (state.tokenize != jsTokenBase) return 0;
+ if (state.tokenize == tokenComment) return CodeMirror.Pass;
+ if (state.tokenize != tokenBase) return 0;
var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;
- if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;
- var type = lexical.type, closing = firstChar == type;
- if (parserConfig.statementIndent != null) {
- if (type == ")" && lexical.prev && lexical.prev.type == "stat") lexical = lexical.prev;
- if (lexical.type == "stat") return lexical.indented + parserConfig.statementIndent;
+ // Kludge to prevent 'maybelse' from blocking lexical scope pops
+ for (var i = state.cc.length - 1; i >= 0; --i) {
+ var c = state.cc[i];
+ if (c == poplex) lexical = lexical.prev;
+ else if (c != maybeelse) break;
}
+ if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;
+ if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
+ lexical = lexical.prev;
+ var type = lexical.type, closing = firstChar == type;
- if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? 4 : 0);
+ if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);
else if (type == "form" && firstChar == "{") return lexical.indented;
else if (type == "form") return lexical.indented + indentUnit;
else if (type == "stat")
- return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? indentUnit : 0);
- else if (lexical.info == "switch" && !closing)
+ return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? statementIndent || indentUnit : 0);
+ else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
else if (lexical.align) return lexical.column + (closing ? 0 : 1);
else return lexical.indented + (closing ? 0 : indentUnit);
@@ -456,7 +600,9 @@
blockCommentStart: jsonMode ? null : "/*",
blockCommentEnd: jsonMode ? null : "*/",
lineComment: jsonMode ? null : "//",
+ fold: "brace",
+ helperType: jsonMode ? "json" : "javascript",
jsonMode: jsonMode
};
});
diff --git a/Source/devtools/front_end/cm/matchbrackets.js b/Source/devtools/front_end/cm/matchbrackets.js
index 131fe83..9d9b388 100644
--- a/Source/devtools/front_end/cm/matchbrackets.js
+++ b/Source/devtools/front_end/cm/matchbrackets.js
@@ -8,6 +8,7 @@
function findMatchingBracket(cm, where, strict) {
var state = cm.state.matchBrackets;
var maxScanLen = (state && state.maxScanLineLength) || 10000;
+ var maxScanLines = (state && state.maxScanLines) || 100;
var cur = where || cm.getCursor(), line = cm.getLineHandle(cur.line), pos = cur.ch - 1;
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
@@ -32,7 +33,7 @@
}
}
}
- for (var i = cur.line, found, e = forward ? Math.min(i + 100, cm.lineCount()) : Math.max(-1, i - 100); i != e; i+=d) {
+ for (var i = cur.line, found, e = forward ? Math.min(i + maxScanLines, cm.lineCount()) : Math.max(-1, i - maxScanLines); i != e; i+=d) {
if (i == cur.line) found = scan(line, i, pos);
else found = scan(cm.getLineHandle(i), i);
if (found) break;
diff --git a/Source/devtools/front_end/cm/php.js b/Source/devtools/front_end/cm/php.js
index fa0db5b..3555b8b 100644
--- a/Source/devtools/front_end/cm/php.js
+++ b/Source/devtools/front_end/cm/php.js
@@ -18,10 +18,10 @@
"for foreach function global goto if implements interface instanceof namespace " +
"new or private protected public static switch throw trait try use var while xor " +
"die echo empty exit eval include include_once isset list require require_once return " +
- "print unset __halt_compiler self static parent"),
- blockKeywords: keywords("catch do else elseif for foreach if switch try while"),
- atoms: keywords("true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__"),
- builtin: keywords("func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport echo print global static exit array empty eval isset unset die include require include_once require_once"),
+ "print unset __halt_compiler self static parent yield insteadof finally"),
+ blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"),
+ atoms: keywords("true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"),
+ builtin: keywords("func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once"),
multiLineStrings: true,
hooks: {
"$": function(stream) {
diff --git a/Source/devtools/front_end/cm/python.js b/Source/devtools/front_end/cm/python.js
index b623972..802c2dd 100644
--- a/Source/devtools/front_end/cm/python.js
+++ b/Source/devtools/front_end/cm/python.js
@@ -36,6 +36,12 @@
var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'],
'keywords': ['nonlocal', 'False', 'True', 'None']};
+ if(parserConf.extra_keywords != undefined){
+ commonkeywords = commonkeywords.concat(parserConf.extra_keywords);
+ }
+ if(parserConf.extra_builtins != undefined){
+ commonBuiltins = commonBuiltins.concat(parserConf.extra_builtins);
+ }
if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) {
commonkeywords = commonkeywords.concat(py3.keywords);
commonBuiltins = commonBuiltins.concat(py3.builtins);
@@ -145,6 +151,9 @@
}
if (stream.match(identifiers)) {
+ if (state.lastToken == 'def' || state.lastToken == 'class') {
+ return 'def';
+ }
return 'variable';
}
@@ -252,7 +261,7 @@
// Handle '.' connected identifiers
if (current === '.') {
style = stream.match(identifiers, false) ? null : ERRORCLASS;
- if (style === null && state.lastToken === 'meta') {
+ if (style === null && state.lastStyle === 'meta') {
// Apply 'meta' style to '.' connected identifiers when
// appropriate.
style = 'meta';
@@ -266,7 +275,7 @@
}
if ((style === 'variable' || style === 'builtin')
- && state.lastToken === 'meta') {
+ && state.lastStyle === 'meta') {
style = 'meta';
}
@@ -307,6 +316,7 @@
return {
tokenize: tokenBase,
scopes: [{offset:basecolumn || 0, type:'py'}],
+ lastStyle: null,
lastToken: null,
lambda: false,
dedent: 0
@@ -316,12 +326,16 @@
token: function(stream, state) {
var style = tokenLexer(stream, state);
- state.lastToken = style;
+ state.lastStyle = style;
- if (stream.eol() && stream.lambda) {
- state.lambda = false;
+ var current = stream.current();
+ if (current && style) {
+ state.lastToken = current;
}
+ if (stream.eol() && state.lambda) {
+ state.lambda = false;
+ }
return style;
},
@@ -333,9 +347,22 @@
return state.scopes[0].offset;
},
- lineComment: "#"
+ lineComment: "#",
+ fold: "indent"
};
return external;
});
CodeMirror.defineMIME("text/x-python", "python");
+
+(function() {
+ "use strict";
+ var words = function(str){return str.split(' ');};
+
+ CodeMirror.defineMIME("text/x-cython", {
+ name: "python",
+ extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+
+ "extern gil include nogil property public"+
+ "readonly struct union DEF IF ELIF ELSE")
+ });
+})();
diff --git a/Source/devtools/front_end/cm/xml.js b/Source/devtools/front_end/cm/xml.js
index 53285c8..4f49e07 100644
--- a/Source/devtools/front_end/cm/xml.js
+++ b/Source/devtools/front_end/cm/xml.js
@@ -76,7 +76,7 @@
tagName = "";
var c;
while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;
- if (!tagName) return "error";
+ if (!tagName) return "tag error";
type = isClose ? "closeTag" : "openTag";
state.tokenize = inTag;
return "tag";
@@ -109,7 +109,9 @@
type = "equals";
return null;
} else if (ch == "<") {
- return "error";
+ state.tokenize = inText;
+ var next = state.tokenize(stream, state);
+ return next ? next + " error" : "error";
} else if (/[\'\"]/.test(ch)) {
state.tokenize = inAttribute(ch);
state.stringStartCol = stream.column();
@@ -298,7 +300,9 @@
}
}
state.startOfLine = false;
- return setStyle || style;
+ if (setStyle)
+ style = setStyle == "error" ? style + " error" : setStyle;
+ return style;
},
indent: function(state, textAfter, fullLine) {
diff --git a/Source/devtools/front_end/cssNamedFlows.css b/Source/devtools/front_end/cssNamedFlows.css
deleted file mode 100644
index 62b530f..0000000
--- a/Source/devtools/front_end/cssNamedFlows.css
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2012 Adobe Systems Incorporated. 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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 THE
- * COPYRIGHT HOLDER 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.
- */
-
-.css-named-flow-collections-view .split-view-sidebar {
- overflow-x: hidden;
-}
-
-.css-named-flow-collections-view .tabbed-pane-header {
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(236, 236, 236)), to(rgb(217, 217, 217)));
-}
-
-.css-named-flow-collections-view .info {
- font-style: italic;
- font-size: 10px;
- margin-top: -5px;
- position: absolute;
- top: 50%;
- text-align: center;
- width: 100%;
-}
-
-.css-named-flow-collections-view .split-view-sidebar .sidebar-content {
- bottom: 0;
- left: 0;
- padding: 0;
- position: absolute;
- right: 0;
- top: 23px;
-}
-
-.css-named-flow-collections-view .split-view-sidebar .selection {
- margin-left: -12px;
- z-index: 0;
-}
-
-.css-named-flow-collections-view .split-view-contents .title {
- position: relative;
-}
-
-.css-named-flow-collections-view .split-view-sidebar .named-flow-overflow::before,
-.css-named-flow-collections-view .region-empty:before,
-.css-named-flow-collections-view .region-fit::before,
-.css-named-flow-collections-view .region-overset::before {
- cursor: default;
- float: left;
- height: 10px;
- margin-top: 1px;
- opacity: 0.75;
- position: relative;
- vertical-align: middle;
- z-index: 1;
-}
-
-.css-named-flow-collections-view .split-view-sidebar .named-flow-overflow::before {
- content: url(Images/namedFlowOverflow.png);
- margin: 2px 3px 0 -13px;
-}
-
-.css-named-flow-collections-view .region-empty::before {
- content: url(Images/regionEmpty.png);
-}
-
-.css-named-flow-collections-view .region-fit::before {
- content: url(Images/regionFit.png);
-}
-
-.css-named-flow-collections-view .region-overset::before {
- content: url(Images/regionOverset.png);
-}
-
-.css-named-flow-collections-view .split-view-contents .named-flow-element {
- margin: 0 0 0 -24px;
-}
diff --git a/Source/devtools/front_end/dataGrid.css b/Source/devtools/front_end/dataGrid.css
index 066bd39..f3ea722 100644
--- a/Source/devtools/front_end/dataGrid.css
+++ b/Source/devtools/front_end/dataGrid.css
@@ -22,7 +22,7 @@
.data-grid .data-container {
position: absolute;
- top: 16px;
+ top: 17px;
bottom: 0;
left: 0;
right: 0;
@@ -45,11 +45,12 @@
.data-grid th {
text-align: left;
- background-image: url(Images/glossyHeader.png);
- background-repeat: repeat-x;
- border-left: 1px solid rgb(179, 179, 179);
- border-bottom: 1px solid rgb(179, 179, 179);
- height: 15px;
+ background-color: rgb(236, 236, 236);
+ border: 1px solid rgb(179, 179, 179);
+ border-top: none;
+ border-right: none;
+ height: 16px;
+ line-height: 16px;
font-weight: normal;
vertical-align: middle;
padding: 0 4px;
@@ -83,8 +84,8 @@
bottom: 0;
height: 100%;
border-top: 0 none transparent;
- background-image: -webkit-gradient(linear, left top, left bottom, from(white), color-stop(0.5, white), color-stop(0.5, rgb(234, 243, 255)), to(rgb(234, 243, 255)));
- background-size: 1px 32px;
+ background-image: linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255));
+ background-size: 128px 32px;
table-layout: fixed;
}
@@ -103,7 +104,7 @@
.data-grid td {
vertical-align: top;
height: 16px; /* Keep in sync with .data-grid table.data @ background-size */
- line-height: 13px;
+ line-height: 14px;
padding: 1px 4px;
white-space: nowrap;
overflow: hidden;
@@ -140,18 +141,7 @@
}
.data-grid th.sortable:active {
- background-image: url(Images/glossyHeaderPressed.png);
-}
-.data-grid th.sort-ascending,
-.data-grid th.sort-descending {
- border-left: 1px solid rgb(107, 140, 196);
- border-bottom: 1px solid rgb(107, 140, 196);
- background-image: url(Images/glossyHeaderSelected.png);
- background-repeat: repeat-x;
-}
-
-.data-grid th.sortable.sort-ascending:active, .data-grid th.sortable.sort-descending:active {
- background-image: url(Images/glossyHeaderSelectedPressed.png);
+ background-color: rgba(0, 0, 0, 0.15);
}
.data-grid th.sort-ascending > div::after,
@@ -160,7 +150,7 @@
top: 1px;
right: 0;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
width: 8px;
height: 10px;
@@ -171,7 +161,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.data-grid th.sort-ascending > div::after,
.data-grid th.sort-descending > div::after {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -183,22 +173,19 @@
background-position: -20px -96px;
}
+.data-grid th:hover {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
.data-grid button {
line-height: 18px;
color: inherit;
}
-body.inactive .data-grid th.sort-ascending,
-body.inactive .data-grid th.sort-descending {
- background-image: url(Images/glossyHeader.png);
- border-left: 1px solid rgb(179, 179, 179);
- border-bottom: 1px solid rgb(179, 179, 179);
-}
-
.data-grid tr.parent td.disclosure::before {
-webkit-user-select: none;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
float: left;
width: 8px;
margin-right: 2px;
@@ -215,7 +202,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.data-grid tr.parent td.disclosure::before {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -257,5 +244,4 @@
bottom: 0;
width: 5px;
z-index: 500;
- cursor: col-resize;
}
diff --git a/Source/devtools/front_end/dialog.css b/Source/devtools/front_end/dialog.css
index a82792c..ff93919 100644
--- a/Source/devtools/front_end/dialog.css
+++ b/Source/devtools/front_end/dialog.css
@@ -10,7 +10,7 @@
display: -webkit-flex;
-webkit-flex-direction: column;
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#E9E9E9), to(#CFCFCF));
+ background-image: linear-gradient(to bottom, #E9E9E9, #CFCFCF);
}
.dialog-contents {
@@ -31,7 +31,7 @@
color: rgb(6, 6, 6);
border: 1px solid rgb(165, 165, 165);
background-color: rgb(237, 237, 237);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
border-radius: 12px;
-webkit-appearance: none;
@@ -41,6 +41,6 @@
.go-to-line-dialog button:active {
background-color: rgb(215, 215, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
diff --git a/Source/devtools/front_end/elementsPanel.css b/Source/devtools/front_end/elementsPanel.css
index 32eb6cd..dc44865 100644
--- a/Source/devtools/front_end/elementsPanel.css
+++ b/Source/devtools/front_end/elementsPanel.css
@@ -147,7 +147,6 @@
padding: 3px;
margin: 3px;
min-width: 80px;
- text-align: center;
overflow: visible;
}
@@ -205,7 +204,7 @@
height: 16px;
}
-.styles-section.read-only {
+.styles-section.read-only:not(.computed-style) {
background-color: rgb(240, 240, 240);
}
@@ -364,7 +363,7 @@
.styles-section.matched-styles .properties li.parent .expand-element {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
margin-right: 2px;
margin-left: -6px;
opacity: 0.55;
@@ -375,7 +374,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.styles-section.matched-styles .properties li.parent .expand-element {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -428,6 +427,10 @@
color: inherit;
}
+.styles-section.computed-style .properties {
+ margin-top: 18px;
+}
+
.styles-section.computed-style .properties .disabled {
text-decoration: none;
opacity: 0.5;
@@ -462,9 +465,9 @@
border-spacing: 0;
}
-.styles-element-state-pane input {
- margin: 2px;
- vertical-align: -2px;
+.styles-element-state-pane label {
+ display: flex;
+ margin: 1px;
}
.styles-selector {
@@ -475,7 +478,7 @@
display: none;
}
-.body.show-inherited .styles-section .properties .inherited {
+.styles-section.styles-show-inherited .properties .inherited {
display: block;
}
@@ -523,7 +526,7 @@
.event-bars .event-bar .header::before {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
content: "a";
color: transparent;
@@ -536,7 +539,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.event-bars .event-bar .header::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -615,12 +618,26 @@
border-bottom: none;
}
+.styles-section.computed-style > .header > .sidebar-pane-subtitle {
+ top: 4px;
+ left: 8px;
+ -webkit-user-select: none;
+}
+
+.styles-section.computed-style > .header > .sidebar-pane-subtitle > input {
+ vertical-align: middle;
+}
+
.sidebar-pane.composite .sidebar-pane-toolbar > .sidebar-pane-subtitle {
left: 8px;
}
-.sidebar-pane.composite .styles-section.read-only {
- background-color: inherit;
+.sidebar-pane > .body > .split-view {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
}
.panel.elements .sidebar-pane-toolbar > select {
@@ -670,3 +687,7 @@
width: 0;
opacity: 0;
}
+
+li.child-editing .styles-clipboard-only {
+ display: none;
+}
diff --git a/Source/devtools/front_end/externs.js b/Source/devtools/front_end/externs.js
index cfaaed4..6161457 100644
--- a/Source/devtools/front_end/externs.js
+++ b/Source/devtools/front_end/externs.js
@@ -31,10 +31,7 @@
// WebKit Web Facing API
/** @type {boolean} */
-Event.prototype.isMetaOrCtrlForTest = false;
-/** @param {...*} vararg */
-Event.prototype.initWebKitWheelEvent = function(vararg) {}
-Event.prototype.stopImmediatePropagation = function() {}
+Event.prototype.isMetaOrCtrlForTest;
/**
* @constructor
@@ -44,36 +41,16 @@
*/
window.KeyboardEvent = function(eventType, properties) {}
-/** @param {?Element} element */
-window.getComputedStyle = function(element) {}
+/**
+ * @type {number}
+ */
+KeyboardEvent.DOM_KEY_LOCATION_NUMPAD;
+
/** @param {*} message */
function postMessage(message) {}
/** @type {*} */
-window.testRunner = null;
-
-/**
- * @constructor
- */
-function WebKitMutation(callback)
-{
- this.type = "";
- /** @type {Node} */ this.target = null;
- /** @type {!Array.<!Node>} */ this.addedNodes = [];
- /** @type {!Array.<!Node>} */ this.removedNodes = [];
-}
-
-/**
- * @constructor
- * @param {function(!Array.<!WebKitMutation>)} callback
- */
-function WebKitMutationObserver(callback) {}
-/**
- * @param {!Node} container
- * @param {!Object} options
- */
-WebKitMutationObserver.prototype.observe = function(container, options) {}
-WebKitMutationObserver.prototype.disconnect = function() {}
+window.testRunner ;
/**
* @param {string} eventName
@@ -196,13 +173,6 @@
*/
Array.prototype.mergeOrdered = function(array, comparator) {}
-DOMApplicationCache.prototype.UNCACHED = 0;
-DOMApplicationCache.prototype.IDLE = 1;
-DOMApplicationCache.prototype.CHECKING = 2;
-DOMApplicationCache.prototype.DOWNLOADING = 3;
-DOMApplicationCache.prototype.UPDATEREADY = 4;
-DOMApplicationCache.prototype.OBSOLETE = 5;
-
// File System API
/**
* @constructor
@@ -214,13 +184,6 @@
*/
DOMFileSystem.prototype.root = null;
-/** @type {Node} */
-Range.prototype.startContainer;
-
-// Inspector Backend
-var InspectorBackend = {}
-InspectorBackend.runAfterPendingDispatches = function(message) {}
-
/** @interface */
function InspectorFrontendHostAPI() {}
/** @param {!Function=} callback callback */
@@ -229,8 +192,20 @@
InspectorFrontendHostAPI.prototype.append = function(url, content, callback) {}
/** @param {!Function=} callback callback */
InspectorFrontendHostAPI.prototype.indexPath = function(requestId, fileSystemPath, callback) {}
-/** @param {!Function=} callback callback */
-InspectorFrontendHostAPI.prototype.setWindowBounds = function(x, y, callback) {}
+/** @return {string} */
+InspectorFrontendHostAPI.prototype.getSelectionBackgroundColor = function() {}
+/** @return {string} */
+InspectorFrontendHostAPI.prototype.getSelectionForegroundColor = function() {}
+/** @return {boolean} */
+InspectorFrontendHost.isUnderTest = function() {}
+/**
+ * Requests inspected page to be placed atop of the inspector frontend
+ * with passed insets from the frontend sides, respecting minimum size passed.
+ * @param {{top: number, left: number, right: number, bottom: number}} insets
+ * @param {{width: number, height: number}} minSize
+ */
+InspectorFrontendHostAPI.prototype.setContentsResizingStrategy = function(insets, minSize) {}
+InspectorFrontendHostAPI.prototype.inspectElementCompleted = function() {}
/** @param {!Function=} callback callback */
InspectorFrontendHostAPI.prototype.moveWindowBy = function(x, y, callback) {}
/** @param {!Function=} callback callback */
@@ -247,52 +222,28 @@
InspectorFrontendHostAPI.prototype.stopIndexing = function(requestId, callback) {}
InspectorFrontendHostAPI.prototype.bringToFront = function() {}
-InspectorFrontendHostAPI.prototype.close = function(url) {}
InspectorFrontendHostAPI.prototype.closeWindow = function() {}
InspectorFrontendHostAPI.prototype.copyText = function(text) {}
InspectorFrontendHostAPI.prototype.inspectedURLChanged = function(url) {}
InspectorFrontendHostAPI.prototype.isolatedFileSystem = function(fileSystemId, registeredName) {}
InspectorFrontendHostAPI.prototype.upgradeDraggedFileSystemPermissions = function(DOMFileSystem) {}
-InspectorFrontendHostAPI.prototype.loaded = function() {}
-InspectorFrontendHostAPI.prototype.localizedStringsURL = function() {}
InspectorFrontendHostAPI.prototype.platform = function() {}
InspectorFrontendHostAPI.prototype.port = function() {}
InspectorFrontendHostAPI.prototype.recordActionTaken = function(actionCode) {}
InspectorFrontendHostAPI.prototype.recordPanelShown = function(panelCode) {}
InspectorFrontendHostAPI.prototype.recordSettingChanged = function(settingCode) {}
-InspectorFrontendHostAPI.prototype.requestSetDockSide = function(dockSide) {}
InspectorFrontendHostAPI.prototype.sendMessageToBackend = function(message) {}
InspectorFrontendHostAPI.prototype.sendMessageToEmbedder = function(message) {}
InspectorFrontendHostAPI.prototype.setInjectedScriptForOrigin = function(origin, script) {}
+InspectorFrontendHostAPI.prototype.setIsDocked = function(isDocked) {}
InspectorFrontendHostAPI.prototype.setZoomFactor = function(zoom) {}
-InspectorFrontendHostAPI.prototype.supportsFileSystems = function() {}
+InspectorFrontendHostAPI.prototype.zoomFactor = function() {}
+InspectorFrontendHostAPI.prototype.zoomIn = function() {}
+InspectorFrontendHostAPI.prototype.zoomOut = function() {}
+InspectorFrontendHostAPI.prototype.resetZoom = function() {}
/** @type {InspectorFrontendHostAPI} */
var InspectorFrontendHost;
-
-/** @constructor */
-function SourceMapV3()
-{
- /** @type {number} */ this.version;
- /** @type {string} */ this.file;
- /** @type {!Array.<string>} */ this.sources;
- /** @type {!Array.<!SourceMapV3.Section>} */ this.sections;
- /** @type {string} */ this.mappings;
- /** @type {string} */ this.sourceRoot;
-}
-
-/** @constructor */
-SourceMapV3.Section = function()
-{
- /** @type {SourceMapV3} */ this.map;
- /** @type {SourceMapV3.Offset} */ this.offset;
-}
-
-/** @constructor */
-SourceMapV3.Offset = function()
-{
- /** @type {number} */ this.line;
- /** @type {number} */ this.column;
-}
+InspectorFrontendHost.embedderMessageAck = function(id, error) {}
// FIXME: remove everything below.
var FormatterWorker = {}
@@ -324,26 +275,10 @@
WebInspector.queryParamsObject = {}
-/**
- * @param {!Element} element
- * @return {boolean}
- */
-WebInspector.showAnchorLocation = function(element) {}
-
WebInspector.Events = {
- InspectorLoaded: "InspectorLoaded",
- InspectorClosing: "InspectorClosing"
+ InspectorLoaded: "InspectorLoaded"
}
-/** @type {!WebInspector.SettingsController} */
-WebInspector.settingsController;
-
-
-/**
- * @return {number}
- */
-WebInspector.zoomFactor = function() {}
-
/** Extensions API */
/** @constructor */
@@ -367,9 +302,6 @@
var extensionServer;
-/** @type {string} */
-Location.prototype.origin = "";
-
/**
* @constructor
*/
@@ -393,12 +325,6 @@
}
/**
- * @param {!ExtensionDescriptor} extensionInfo
- * @return {string}
- */
-function buildPlatformExtensionAPI(extensionInfo) {}
-
-/**
* @type {string}
*/
WebInspector.inspectedPageDomain;
@@ -411,6 +337,16 @@
*/
WebInspector.isInspectingDevice = function() {}
+/**
+ * @return {boolean}
+ */
+WebInspector.isWorkerFrontend = function() {}
+
+/**
+ * @return {boolean}
+ */
+WebInspector.isDedicatedWorkerFrontend = function() {}
+
var InspectorTest = {}
/* jsdifflib API */
@@ -578,15 +514,12 @@
/** @type {Object.<string, !Object.<string, string>>} */
CodeMirror.keyMap;
+/** @type {{scrollLeft: number, scrollTop: number}} */
+CodeMirror.doc;
+
WebInspector.suggestReload = function() { }
WebInspector.reload = function() { }
-
-WebInspector.settings.continuousPainting = /** type {WebInspector.Setting} */ { }
-WebInspector.settings.showDebugBorders = /** type {WebInspector.Setting} */ { }
-WebInspector.settings.showScrollBottleneckRects = /** type {WebInspector.Setting} */ { }
-WebInspector.settings.forceCompositingMode = /** type {WebInspector.Setting} */ { }
-WebInspector.settings.showFPSCounter = /** type {WebInspector.Setting} */ { }
-WebInspector.settings.showPaintRects = /** type {WebInspector.Setting} */ { }
+WebInspector._inspectedTabId;
/** @type {boolean} */
window.dispatchStandaloneTestRunnerMessages;
diff --git a/Source/devtools/front_end/filter.css b/Source/devtools/front_end/filter.css
index 05d31f9..5c8f790 100644
--- a/Source/devtools/front_end/filter.css
+++ b/Source/devtools/front_end/filter.css
@@ -30,7 +30,6 @@
.filter-text-filter {
display: flex;
- margin-top: 1px;
margin-left: 1px;
margin-right: 1px;
flex: 0 0 100px;
@@ -40,16 +39,20 @@
flex: 0 0 155px;
}
+.filter-text-filter label {
+ margin: auto 0;
+}
+
.filter-bitset-filter {
- line-height: 19px;
- padding-right: 10px !important;
+ padding: 0 10px !important;
overflow: hidden;
+ display: flex !important;
}
.filter-bitset-filter li {
display: inline-block;
- margin: 2px;
- padding: 0px 6px;
+ margin: auto 2px;
+ padding: 4px 6px 3px 6px;
background: transparent;
text-shadow: rgba(255, 255, 255, 0.5) 0 1px 0;
border-radius: 8px;
@@ -59,7 +62,7 @@
background-color: #ccc;
height: 16px;
width: 1px;
- vertical-align: middle;
+ margin: auto 2px;
display: inline-block;
}
@@ -70,10 +73,6 @@
text-shadow: rgba(0, 0, 0, 0.4) 0 1px 0;
}
-.filter-bitset-filter li.all {
- margin: 1px 8px;
-}
-
.filter-bitset-filter li:hover {
background: rgba(0, 0, 0, 0.2);
}
@@ -93,12 +92,17 @@
}
.filter-checkbox-filter {
- line-height: 22px;
padding-left: 4px;
padding-right: 2px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
+ display: flex;
+}
+
+.filter-checkbox-filter > label {
+ display: flex;
+ margin: auto 0;
}
.filter-text-invalid {
@@ -108,14 +112,14 @@
.filter-checkbox-filter .checkbox-filter-checkbox {
width: 10px;
height: 10px;
- margin: 0 3px 0 3px;
+ margin: auto 3px;
padding: 0;
border-radius: 2px;
border: solid 1px;
display: inline-block;
overflow: visible;
opacity: 0.8;
- vertical-align: -1px;
+ flex-shrink: 0;
}
@@ -129,7 +133,7 @@
.filter-checkbox-filter .checkbox-filter-checkbox-checked {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
background-position: -129px -110px;
}
diff --git a/Source/devtools/front_end/flameChart.css b/Source/devtools/front_end/flameChart.css
index bc35be6..3a490f0 100644
--- a/Source/devtools/front_end/flameChart.css
+++ b/Source/devtools/front_end/flameChart.css
@@ -7,17 +7,17 @@
}
.chart-container {
- overflow: hidden;
- position: absolute;
- top: 80px;
- width: 100%;
- bottom: 0;
+ flex: auto;
}
#flame-chart-overview-grid .resources-dividers-label-bar {
pointer-events: auto;
}
+.flame-chart-overview-pane {
+ flex: 0 0 80px !important;
+}
+
#flame-chart-overview-container {
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
}
diff --git a/Source/devtools/front_end/heapProfiler.css b/Source/devtools/front_end/heapProfiler.css
index c0fba8a..a785ac2 100644
--- a/Source/devtools/front_end/heapProfiler.css
+++ b/Source/devtools/front_end/heapProfiler.css
@@ -63,16 +63,8 @@
bottom: 0;
}
-.heap-snapshot-view.visible {
- display: block;
-}
-
-.heap-snapshot-view .view {
- display: none;
-}
-
-.heap-snapshot-view .view.visible {
- display: block;
+.heap-snapshot-view .data-grid {
+ border: none;
}
.heap-snapshot-view .data-grid tr:empty {
@@ -80,8 +72,8 @@
visibility: hidden;
}
-.heap-snapshot-view .data-grid {
- border: none;
+.heap-snapshot-view .data-grid tr.selected span {
+ color: inherit;
}
.heap-snapshot-view .data-grid td.count-column {
@@ -148,95 +140,31 @@
white-space: nowrap;
}
-.heap-snapshot-view .console-formatted-id {
+.heap-snapshot-view tr:not(.selected) .console-formatted-id {
color: grey;
}
-.heap-snapshot-view .data-grid tr.selected * {
- color: inherit;
-}
-
-.heap-snapshot-view .data-grid:focus tr.selected * {
- color: white;
-}
-
.heap-snapshot-view .delimiter {
height: 24px;
background-color: #d6dde5;
}
.heap-snapshot-view .data-grid {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ flex: auto;
}
-.heap-snapshot-view .views-container {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 173px;
-}
-
-.reserve-80px-at-top {
- top: 80px !important;
-}
-
-.heap-snapshot-view .views-container .view {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
-}
-
-.heap-snapshot-view .retaining-paths-view {
- height: 150px;
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
-}
-
-.heap-snapshot-view .class-view-grid {
- top: 22px;
-}
-
-.heap-snapshot-view .class-view-toolbar {
- height: 22px;
- background-color: #DDD;
- display: block;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
-}
-
-.heap-snapshot-view .class-view-toolbar input.class-name-filter {
- width: 200px;
- height: 18px;
- font-size: 11px;
- padding: 2px;
- margin: 2px 10px;
- background-color: white;
- border: solid 1px #BBB;
+.heap-snapshot-view .heap-tracking-overview {
+ flex: 0 0 80px;
+ height: 80px;
}
.heap-snapshot-view .retainers-view-header {
- background-image: url(Images/statusbarResizerVertical.png), -webkit-linear-gradient(rgb(253,253,253), rgb(230,230,230) 75%, rgb(230,230,230));
- border-top: 1px solid rgb(202, 202, 202);
+ background-image: url(Images/statusbarResizerVertical.png);
+ background-color: rgb(236, 236, 236);
+ border-bottom: 1px solid rgb(179, 179, 179);
background-repeat: no-repeat;
background-position: right center, center;
- cursor: row-resize;
- height: 23px;
- display: block;
- position: absolute;
- left: 0;
- right: 0;
- bottom: 150px;
+ height: 21px;
}
.heap-snapshot-view .retainers-view-header .title > span {
@@ -247,6 +175,10 @@
margin-right: 8px;
}
+.heap-snapshot-view .retainers-view-header * {
+ pointer-events: none;
+}
+
.heap-snapshot-view tr:not(.selected) td.object-column span.highlight {
background-color: rgb(255, 255, 200);
}
@@ -255,10 +187,6 @@
color: gray;
}
-.heap-snapshot-help-status-bar-item .glyph {
- -webkit-mask-position: -160px -2px;
-}
-
table.heap-snapshot-help {
border-spacing: 12px 2px;
}
diff --git a/Source/devtools/front_end/helpScreen.css b/Source/devtools/front_end/helpScreen.css
index 925f063..1e797c6 100644
--- a/Source/devtools/front_end/helpScreen.css
+++ b/Source/devtools/front_end/helpScreen.css
@@ -1,5 +1,5 @@
.help-window-outer {
- position: absolute;
+ position: absolute !important;
top: 0;
left: 0;
right: 0;
@@ -40,6 +40,7 @@
overflow-x: hidden;
margin: 8px;
padding: 0 4px;
+ flex: auto;
}
.help-footnote {
@@ -58,18 +59,18 @@
}
.help-window-main .help-container-wrapper::-webkit-scrollbar-thumb:vertical {
- background: -webkit-gradient(linear, left top, right top, from(rgb(128, 128, 128)), to(rgb(128, 128, 128)), color-stop(40%, rgb(96, 96, 96)));
+ background: linear-gradient(to right, rgb(128, 128, 128), rgb(96, 96, 96) 40%, rgb(128, 128, 128));
border-radius: 5px;
min-height: 20px;
}
.help-window-main .help-container-wrapper::-webkit-scrollbar-thumb:vertical:hover,
.help-window-main .help-container-wrapper::-webkit-scrollbar-thumb:vertical:active {
- background: -webkit-gradient(linear, left top, right top, from(rgb(176, 176, 176)), to(rgb(176, 176, 176)), color-stop(40%, rgb(144, 144, 144)));
+ background: linear-gradient(to right, rgb(176, 176, 176), rgb(144, 144, 144) 40%, rgb(176, 176, 176));
}
.help-window-main .help-container-wrapper::-webkit-scrollbar-track:vertical {
- background: -webkit-gradient(linear, left top, right top, from(rgb(10, 10, 10)), to(rgb(32, 32, 32)), color-stop(25%, rgb(32, 32, 32)));
+ background: linear-gradient(to right, rgb(10, 10, 10), rgb(32, 32, 32) 25%, rgb(32, 32, 32));
border-radius: 5px;
}
@@ -105,6 +106,10 @@
-webkit-column-width: 361px;
}
+.help-no-columns {
+ -webkit-column-width: initial !important;
+}
+
.help-block {
display: block;
padding-bottom: 9px;
@@ -192,6 +197,7 @@
.settings-tab label {
padding-right: 4px;
+ display: flex;
}
#general-tab-content .help-block fieldset legend {
@@ -224,22 +230,7 @@
}
.help-content input[type=checkbox] {
- height: 13px;
- width: 13px;
- margin: 0 7px 0 0;
- vertical-align: -2px;
-}
-
-body.platform-mac .help-content input[type=checkbox] {
- vertical-align: -1px;
-}
-
-.help-content input[type=radio] {
- vertical-align: -2px;
-}
-
-body.platform-mac .help-content input[type=radio] {
- vertical-align: -1px;
+ margin-right: 7px;
}
.help-content select {
@@ -295,8 +286,7 @@
border: none transparent;
height: auto;
width: 110px;
- position: relative;
- top: 14px;
+ margin-top: 14px;
flex: auto;
}
@@ -457,7 +447,7 @@
}
.settings-tab-text-button {
- background-image: -webkit-linear-gradient(hsl(0, 0%, 93%), hsl(0, 0%, 93%) 38%, hsl(0, 0%, 87%));
+ background-image: linear-gradient(hsl(0, 0%, 93%), hsl(0, 0%, 93%) 38%, hsl(0, 0%, 87%));
border: 1px solid hsla(0, 0%, 0%, 0.25);
border-radius: 2px;
box-shadow: 0 1px 0 hsla(0, 0%, 0%, 0.08), inset 0 1px 2px hsla(0, 100%, 100%, 0.75);
@@ -471,21 +461,21 @@
}
.settings-tab-text-button:disabled {
- background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
+ background-image: linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
border-color: rgba(80, 80, 80, 0.2);
box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75);
color: #aaa;
}
.settings-tab-text-button:not(:disabled):hover {
- background-image: -webkit-linear-gradient(hsl(0, 0%, 94%), hsl(0, 0%, 94%) 38%, hsl(0, 0%, 88%));
+ background-image: linear-gradient(hsl(0, 0%, 94%), hsl(0, 0%, 94%) 38%, hsl(0, 0%, 88%));
border-color: hsla(0, 0%, 0%, 0.3);
box-shadow: 0 1px 0 hsla(0, 0%, 0%, 0.12), inset 0 1px 2px hsla(0, 100%, 100%, 0.95);
color: hsl(0, 0%, 0%);
}
.settings-tab-text-button:not(:disabled):active {
- background-image: -webkit-linear-gradient(hsl(0, 0%, 91%), hsl(0, 0%, 91%) 38%, hsl(0, 0%, 84%));
+ background-image: linear-gradient(hsl(0, 0%, 91%), hsl(0, 0%, 91%) 38%, hsl(0, 0%, 84%));
box-shadow: none;
text-shadow: none;
}
@@ -654,7 +644,6 @@
flex: 1 1 auto;
padding: 0 17px;
overflow: auto;
- margin-bottom: 10px;
}
.settings-dialog .block-header {
@@ -685,3 +674,7 @@
opacity: 0.6;
padding-left: 19px;
}
+
+.edit-file-system-dialog .section {
+ min-width: 400px;
+}
diff --git a/Source/devtools/front_end/inspector.css b/Source/devtools/front_end/inspector.css
index 8d12b6f..f60ece2 100644
--- a/Source/devtools/front_end/inspector.css
+++ b/Source/devtools/front_end/inspector.css
@@ -32,6 +32,13 @@
outline: auto 5px -webkit-focus-ring-color;
}
+input[type="checkbox"] {
+ height: 13px;
+ width: 13px;
+ margin: auto 3px;
+ flex-shrink: 0;
+}
+
.fill {
position: absolute;
top: 0;
@@ -40,14 +47,27 @@
bottom: 0;
}
+.view {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ flex: auto;
+}
+
.hbox {
- display: flex !important;
- flex-direction: row;
+ display: flex;
+ flex-direction: row !important;
+ position: relative;
}
.vbox {
- display: flex !important;
- flex-direction: column;
+ display: flex;
+ flex-direction: column !important;
+ position: relative;
+}
+
+.flex-auto {
+ flex: auto;
}
.inline-block {
@@ -66,7 +86,7 @@
}
.toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(191, 191, 191)), to(rgb(151, 151, 151)));
+ background-image: linear-gradient(to bottom, rgb(191, 191, 191), rgb(151, 151, 151));
padding: 1px 0 0 1px;
border-bottom: 1px solid rgb(80, 80, 80);
background-origin: padding-box;
@@ -112,56 +132,54 @@
}
body.inactive .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(233, 233, 233)), to(rgb(207, 207, 207)));
+ background-image: linear-gradient(to bottom, rgb(233, 233, 233), rgb(207, 207, 207));
border-bottom: 1px solid rgb(64%, 64%, 64%);
}
body.dock-to-bottom .toolbar-background {
padding-top: 0;
- border-top: 1px solid rgb(100, 100, 100);
+}
+
+body.dock-to-bottom .toolbar-background .tabbed-pane-header {
+ cursor: ns-resize;
+}
+
+body.dock-to-bottom .toolbar-background .tabbed-pane-header .tabbed-pane-header-tabs {
cursor: default;
}
-body.dock-to-bottom.platform-mac .toolbar-background {
- border-top-color: white;
-}
-
-body.dock-to-bottom.inactive .toolbar-background {
- border-top: 1px solid rgb(64%, 64%, 64%);
-}
-
body.platform-windows .toolbar-background,
body.platform-windows.inactive .toolbar-background {
background-image: none;
}
body.undocked.platform-mac-leopard .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(175, 175, 175)), to(rgb(151, 151, 151))) !important;
+ background-image: linear-gradient(to bottom, rgb(175, 175, 175), rgb(151, 151, 151)) !important;
color: #333 !important;
}
body.undocked.platform-mac-leopard.inactive .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(221, 221, 221)), to(rgb(207, 207, 207))) !important;
+ background-image: linear-gradient(to bottom, rgb(221, 221, 221), rgb(207, 207, 207)) !important;
color: #555 !important;
}
body.undocked.platform-mac-snowleopard .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(189, 189, 189)), to(rgb(167, 167, 167))) !important;
+ background-image: linear-gradient(to bottom, rgb(189, 189, 189), rgb(167, 167, 167)) !important;
color: #333 !important;
}
body.undocked.platform-mac-snowleopard.inactive .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(228, 228, 228)), to(rgb(216, 216, 216))) !important;
+ background-image: linear-gradient(to bottom, rgb(228, 228, 228), rgb(216, 216, 216)) !important;
color: #555 !important;
}
-body.undocked.platform-mac-mountain-lion .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(208, 208, 208)), to(rgb(200, 200, 200))) !important;
+body.undocked.platform-mac .toolbar-background {
+ background-image: linear-gradient(to bottom, rgb(208, 208, 208), rgb(200, 200, 200)) !important;
color: #333 !important;
}
-body.undocked.platform-mac-mountain-lion.inactive .toolbar-background {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(238, 238, 238)), to(rgb(224, 224, 224))) !important;
+body.undocked.platform-mac.inactive .toolbar-background {
+ background-image: linear-gradient(to bottom, rgb(238, 238, 238), rgb(224, 224, 224)) !important;
color: #555 !important;
}
@@ -208,18 +226,18 @@
}
.scrollable-content::-webkit-scrollbar-thumb:vertical {
- background: -webkit-gradient(linear, left top, right top, from(rgb(192, 192, 192)), to(rgb(192, 192, 192)), color-stop(40%, rgb(214, 214, 214)));
+ background: linear-gradient(to right, rgb(192, 192, 192), rgb(214, 214, 214) 40%, rgb(192, 192, 192));
border-radius: 5px;
min-height: 20px;
}
.scrollable-content::-webkit-scrollbar-thumb:vertical:hover,
.scrollable-content::-webkit-scrollbar-thumb:vertical:active {
- background: -webkit-gradient(linear, left top, right top, from(rgb(230, 230, 230)), to(rgb(230, 230, 230)), color-stop(40%, rgb(252, 252, 252)));
+ background: linear-gradient(to right, rgb(230, 230, 230), rgb(252, 252, 252) 40%, rgb(230, 230, 230));
}
.scrollable-content::-webkit-scrollbar-track:vertical {
- background: -webkit-gradient(linear, left top, right top, from(rgb(128, 128, 128)), to(rgb(164, 164, 164)), color-stop(25%, rgb(164, 164, 164)));
+ background: linear-gradient(to right, rgb(128, 128, 128), rgb(164, 164, 164) 25%, rgb(164, 164, 164));
border-radius: 5px;
}
@@ -243,9 +261,13 @@
padding: 0 5px 0 0;
}
+.toolbar-search td > span {
+ display: flex;
+}
+
.toolbar-search-navigation-controls {
vertical-align: top;
- background-image: -webkit-linear-gradient(rgb(228, 228, 228), rgb(206, 206, 206));
+ background-image: linear-gradient(rgb(228, 228, 228), rgb(206, 206, 206));
}
.toolbar-search-navigation {
@@ -263,27 +285,20 @@
}
.toolbar-search label {
- vertical-align: bottom;
-}
-
-.toolbar-search input[type="checkbox"] {
- position: relative;
- margin-top: -1px;
- margin-left: 15px;
- top: 2px;
+ margin: auto 0;
}
.toolbar-search button {
border: 1px solid rgb(163, 163, 163);
border-radius: 8px;
margin: 0;
- background-image: -webkit-linear-gradient(rgb(241, 241, 241), rgb(220, 220, 220));
+ background-image: linear-gradient(rgb(241, 241, 241), rgb(220, 220, 220));
width: 100%;
height: 20px;
}
.toolbar-search button:active {
- background-image: -webkit-linear-gradient(rgb(185, 185, 185), rgb(156, 156, 156));
+ background-image: linear-gradient(rgb(185, 185, 185), rgb(156, 156, 156));
}
.toolbar-search-control {
@@ -301,6 +316,7 @@
height: 20px;
border-radius: 2px;
width: 100%;
+ margin: auto 0;
}
.toolbar-search-navigation.enabled:active {
@@ -313,7 +329,7 @@
}
.toolbar-search-navigation.toolbar-search-navigation-prev.enabled:active {
- background-image: url(Images/searchPrev.png), -webkit-linear-gradient(rgb(168, 168, 168), rgb(116, 116, 116));
+ background-image: url(Images/searchPrev.png), linear-gradient(rgb(168, 168, 168), rgb(116, 116, 116));
}
.toolbar-search-navigation.toolbar-search-navigation-next {
@@ -322,7 +338,7 @@
}
.toolbar-search-navigation.toolbar-search-navigation-next.enabled:active {
- background-image: url(Images/searchNext.png), -webkit-linear-gradient(rgb(168, 168, 168), rgb(116, 116, 116));
+ background-image: url(Images/searchNext.png), linear-gradient(rgb(168, 168, 168), rgb(116, 116, 116));
}
.search-results-matches {
@@ -337,43 +353,43 @@
.close-button,
.close-button-gray {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
display: inline-block;
}
.close-button {
width: 14px;
height: 14px;
- background-position: -128px -216px;
+ background-position: -128px -96px;
}
.close-button-gray {
width: 13px;
height: 13px;
- background-position: -175px -216px;
+ background-position: -175px -96px;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
.close-button,
.close-button-gray {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
.close-button:hover {
- background-position: -96px -216px;
+ background-position: -96px -96px;
}
.close-button:active {
- background-position: -111px -216px;
+ background-position: -111px -96px;
}
.close-button-gray:hover {
- background-position: -143px -216px;
+ background-position: -143px -96px;
}
.close-button-gray:active {
- background-position: -160px -216px;
+ background-position: -160px -96px;
}
body.undocked .toolbar-item .close-button {
@@ -392,14 +408,16 @@
position: relative;
}
-.panel-status-bar label {
- margin: 2px 20px 0 0;
+.panel-status-bar > div {
+ margin: auto 0;
}
-.panel-status-bar label > input {
- height: 13px;
- width: 13px;
- vertical-align: -2px;
+.panel-status-bar label {
+ margin: auto 0;
+ margin-right: 20px;
+ display: flex;
+ white-space: nowrap;
+ overflow: hidden;
}
.status-bar {
@@ -414,14 +432,12 @@
}
.status-bar > div {
- display: inline-block;
- vertical-align: top;
+ display: inline-flex;
overflow: visible;
}
.status-bar-item {
display: inline-block;
- cursor: default;
height: 22px;
padding: 0;
margin-left: -1px;
@@ -435,7 +451,10 @@
.status-bar-text {
padding-left: 5px;
padding-right: 15px;
- padding-top: 3px;
+ height: auto;
+ margin: auto 0;
+ white-space: nowrap;
+ overflow: hidden;
}
#drawer-view-anchor {
@@ -468,13 +487,13 @@
background-color: rgba(0, 0, 0, 0.75);
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
-webkit-mask-position: -288px -48px;
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
z-index: 1;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
.long-click-glyph {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -518,29 +537,42 @@
}
.status-bar-select-container {
- display: inline-block;
+ display: inline-flex;
+ flex-shrink: 0;
}
.status-bar-select-arrow {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.7;
- width: 10px;
- height: 10px;
- background-position: -20px -96px;
+ width: 12px;
+ height: 12px;
+ background-position: -18px -96px;
display: inline-block;
pointer-events: none;
- position: relative;
- top: 3px;
- left: -3px;
+ margin: auto 0;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
.status-bar-select-arrow {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
+input.status-bar-item {
+ width: 200px;
+ height: 20px;
+ padding: 3px;
+ margin: 1px 3px;
+ background-color: white;
+ border: solid 1px rgb(236, 236, 236);
+}
+
+input.status-bar-item:focus,
+input.status-bar-item:hover {
+ border: solid 1px rgb(202, 202, 202);
+}
+
select.status-bar-item {
min-width: 48px;
color: rgb(48, 48, 48);
@@ -551,16 +583,18 @@
padding: 0 15px 0 5px;
margin-right: -10px;
position: relative;
- line-height: 20px;
+ line-height: 22px;
}
.status-bar-item.checkbox {
- margin: 2px 0 0 0;
+ margin: auto 0;
+ height: auto;
+ display: flex;
}
.status-bar-item > .glyph {
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
opacity: 0.8;
}
@@ -570,11 +604,11 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.status-bar-item > .glyph {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
-button.status-bar-item.dock-status-bar-item.toggled-undock .glyph {
+button.status-bar-item.dock-status-bar-item.toggled-undocked .glyph {
-webkit-mask-position: 0 -48px;
}
@@ -586,6 +620,10 @@
-webkit-mask-position: -256px -48px;
}
+button.status-bar-item.dock-status-bar-item.toggled-left .glyph {
+ -webkit-mask-position: -32px -120px;
+}
+
body.undocked .alternate-status-bar-buttons-bar {
margin-left: 1px;
}
@@ -674,10 +712,18 @@
-webkit-mask-position: -64px -24px;
}
-.screencast-status-bar-item .glyph {
+.screencast-status-bar-item.toggled-left .glyph {
-webkit-mask-position: -256px -96px;
}
+.screencast-status-bar-item.toggled-top .glyph {
+ -webkit-mask-position: -288px -96px;
+}
+
+.screencast-status-bar-item.toggled-disabled .glyph {
+ -webkit-mask-position: 0px -120px;
+}
+
.clear-status-bar-item .glyph {
-webkit-mask-position: -64px 0;
}
@@ -688,7 +734,7 @@
.green-ball,
.orange-ball {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
width: 10px;
height: 10px;
display: inline-block;
@@ -700,7 +746,7 @@
.red-ball,
.green-ball,
.orange-ball {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -747,61 +793,14 @@
margin-left: 6px;
}
-.drawer {
- display: none;
- flex: 0 0 200px;
- position: relative;
- background-color: white;
- z-index: 1;
-}
-
-#drawer-contents {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- display: flex;
-}
-
#drawer-contents > .tabbed-pane > .tabbed-pane-header {
background-color: rgb(236, 236, 236);
- cursor: ns-resize;
- border-top: 1px solid rgb(124, 124, 124);
- border-bottom: 1px solid rgb(203, 203, 203);
-}
-
-body.inactive #drawer-contents .tabbed-pane-header {
- border-top: 1px solid rgb(64%, 64%, 64%);
}
#drawer-contents .tabbed-pane-header .tabbed-pane-header-tab {
cursor: default;
}
-.drawer-resizer {
- position: absolute;
- right: 0;
- top: 8px;
- content: url(Images/statusbarResizerVertical.png);
- height: 8px;
- pointer-events: none;
-}
-
-#drawer-footer {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- font-size: 11px;
- height: 23px;
- background-color: rgb(236, 236, 236);
-}
-
-body.drawer-visible .drawer {
- display: block;
-}
-
body.platform-mac .monospace,
body.platform-mac .source-code {
font-size: 11px !important;
@@ -834,7 +833,8 @@
background-color: rgb(236, 236, 236);
}
-.console-status-bar {
+.console-status-bar,
+.console-filters-header {
flex: 0 0 23px;
overflow: hidden;
}
@@ -902,7 +902,7 @@
margin-top: -6px;
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
@@ -910,7 +910,7 @@
.console-user-command::before,
#console-prompt::before,
.console-group-title::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -918,6 +918,10 @@
top: 0;
}
+.console-message .outline-disclosure .stacktrace-entry:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
.console-message .bubble {
display: inline-block;
height: 14px;
@@ -969,7 +973,7 @@
.console-group-title::before {
-webkit-user-select: none;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
float: left;
width: 8px;
content: "a";
@@ -981,7 +985,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.console-group-title::before {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -1031,7 +1035,7 @@
.console-debug-level::before,
.console-info-level::before {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
width: 10px;
height: 10px;
}
@@ -1041,7 +1045,7 @@
.console-warning-level::before,
.console-debug-level::before,
.console-info-level::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -1071,11 +1075,17 @@
color: rgb(0, 128, 255);
}
+#console-messages .link {
+ text-decoration: underline;
+}
+
+#console-messages .link,
#console-messages a {
color: rgb(33%, 33%, 33%);
cursor: pointer;
}
+#console-messages .link:hover,
#console-messages a:hover {
color: rgb(15%, 15%, 15%);
}
@@ -1151,7 +1161,7 @@
position: relative;
display: inline-block;
vertical-align: top;
- color: #222;
+ color: inherit;
}
.console-formatted-node:hover {
@@ -1368,7 +1378,7 @@
.outline-disclosure li.parent::before {
-webkit-user-select: none;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
content: "a";
color: transparent;
text-shadow: none;
@@ -1380,7 +1390,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.outline-disclosure li.parent::before {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -1409,24 +1419,20 @@
white-space: nowrap;
}
-.placard.grouped {
- padding-left: 36px;
-}
-
.placard:nth-of-type(2n) {
background-color: rgb(234, 243, 255);
}
.placard.selected {
border-top: 1px solid rgb(172, 172, 172);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(182, 182, 182)), to(rgb(162, 162, 162)));
+ background-image: linear-gradient(to bottom, rgb(182, 182, 182), rgb(162, 162, 162));
background-origin: padding-box;
background-clip: padding-box;
}
:focus .placard.selected {
border-top: 1px solid rgb(70, 103, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(92, 147, 213)), to(rgb(56, 121, 217)));
+ background-image: linear-gradient(to bottom, rgb(92, 147, 213), rgb(56, 121, 217));
}
.placard .title {
@@ -1457,6 +1463,17 @@
color: inherit;
}
+.placard-label {
+ text-align: center;
+}
+
+.placard-label .title,
+.placard-label .subtitle {
+ font-style: italic;
+ font-weight: bold;
+ color: #999;
+}
+
.section {
position: relative;
margin-top: 1px;
@@ -1480,7 +1497,7 @@
.section > .header::before {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
content: "a";
color: transparent;
@@ -1493,7 +1510,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.section > .header::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -1588,7 +1605,7 @@
.properties-tree li.parent::before {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
content: "a";
width: 8px;
@@ -1608,7 +1625,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.properties-tree li.parent::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -1678,6 +1695,10 @@
display: none !important;
}
+.sidebar-tabbed-pane .watch-expressions {
+ margin-top: 17px;
+}
+
.properties-tree.watch-expressions {
padding-left: 0 !important;
}
@@ -1729,11 +1750,6 @@
display: none;
}
-.sidebar-tabbed-pane .watch-expressions li:first-child .delete-button {
- right: 55px;
- top: 3px;
-}
-
.section .properties li.hovered .delete-button {
display: inline;
}
@@ -1804,14 +1820,14 @@
background-color: transparent;
border: 1px solid rgb(165, 165, 165);
background-color: rgb(237, 237, 237);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
border-radius: 12px;
-webkit-appearance: none;
}
.pane-title-button:active {
background-color: rgb(215, 215, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
button.show-all-nodes {
@@ -1823,7 +1839,7 @@
background-color: transparent;
border: 1px solid rgb(165, 165, 165);
background-color: rgb(237, 237, 237);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
border-radius: 12px;
-webkit-appearance: none;
}
@@ -1832,12 +1848,12 @@
color: rgb(130, 130, 130);
border-color: rgb(212, 212, 212);
background-color: rgb(239, 239, 239);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(250, 250, 250)), to(rgb(235, 235, 235)));
+ background-image: linear-gradient(to bottom, rgb(250, 250, 250), rgb(235, 235, 235));
}
button.show-all-nodes:active {
background-color: rgb(215, 215, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
button.enable-toggle-status-bar-item .glyph {
@@ -1998,7 +2014,7 @@
height: 10px;
border: 0;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
-webkit-appearance: none;
background-color: rgba(0, 0, 0, 0.75);
position: relative;
@@ -2007,7 +2023,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.sidebar-tree-item .disclosure-button {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -2125,6 +2141,8 @@
}
.sidebar-tree-item .titles {
+ display: flex;
+ flex-direction: column;
position: relative;
top: 5px;
line-height: 12px;
@@ -2134,6 +2152,10 @@
white-space: nowrap;
}
+.titles > .title-container {
+ display: flex;
+}
+
.sidebar-tree-item .titles.no-subtitle {
top: 10px;
}
@@ -2396,7 +2418,7 @@
body.platform-mac .soft-context-menu-item-mouse-over {
border-top: 1px solid rgb(90, 131, 236);
border-bottom: 1px solid rgb(18, 88, 233);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(100, 140, 243)), to(rgb(36, 101, 243)));
+ background-image: linear-gradient(to bottom, rgb(100, 140, 243), rgb(36, 101, 243));
}
.soft-context-menu-item-checkmark {
@@ -2425,6 +2447,7 @@
.search-drawer-header {
flex: none;
padding: 4px;
+ display: flex;
}
.search-drawer-header input[type="text"].search-config-search {
@@ -2447,20 +2470,10 @@
}
.search-drawer-header label.search-config-label {
+ margin: auto 0;
margin-left: 8px;
color: #303030;
-}
-
-.search-drawer-header input[type="checkbox"].search-config-checkbox {
- vertical-align: bottom;
-}
-
-body:not(.platform-mac) .search-drawer-header input[type="checkbox"].search-config-checkbox {
- margin-bottom: 5px;
-}
-
-body.platform-mac .search-drawer-header input[type="checkbox"].search-config-checkbox {
- margin-bottom: 4px;
+ display: flex;
}
#bottom-status-bar-container {
@@ -2516,7 +2529,7 @@
#search-results-pane-file-based li.parent::before {
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
width: 8px;
content: "a";
@@ -2527,7 +2540,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
#search-results-pane-file-based li.parent::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -2774,6 +2787,7 @@
.inspector-view {
overflow: hidden;
+ position: absolute !important;
}
.inspector-footer.status-bar {
@@ -2831,3 +2845,7 @@
body.undocked .toolbar-close-button-item {
display: none;
}
+
+#inspector-split-view > .split-view-sidebar {
+ position: relative;
+}
diff --git a/Source/devtools/front_end/inspector.html b/Source/devtools/front_end/inspector.html
index 9b01cb1..0f625c7 100644
--- a/Source/devtools/front_end/inspector.html
+++ b/Source/devtools/front_end/inspector.html
@@ -37,18 +37,22 @@
<link rel="stylesheet" type="text/css" href="inspectorSyntaxHighlight.css">
<link rel="stylesheet" type="text/css" href="popover.css">
<script type="text/javascript" src="utilities.js"></script>
+ <script type="text/javascript" src="modules.js"></script>
<script type="text/javascript" src="jsdifflib.js"></script>
<script type="text/javascript" src="DOMExtension.js"></script>
<script type="text/javascript" src="treeoutline.js"></script>
<script type="text/javascript" src="inspector.js"></script>
+ <script type="text/javascript" src="ModuleManager.js"></script>
+ <script type="text/javascript" src="Platform.js"></script>
<script type="text/javascript" src="Geometry.js"></script>
<script type="text/javascript" src="UIString.js"></script>
<script type="text/javascript" src="InspectorBackend.js"></script>
<script type="text/javascript" src="InspectorBackendCommands.js"></script>
- <script type="text/javascript" src="ExtensionRegistryStub.js"></script>
<script type="text/javascript" src="InspectorFrontendAPI.js"></script>
<script type="text/javascript" src="Object.js"></script>
+ <script type="text/javascript" src="NotificationService.js"></script>
<script type="text/javascript" src="Settings.js"></script>
+ <script type="text/javascript" src="SettingsUI.js"></script>
<script type="text/javascript" src="View.js"></script>
<script type="text/javascript" src="UIUtils.js"></script>
<script type="text/javascript" src="HelpScreen.js"></script>
@@ -96,7 +100,6 @@
<script type="text/javascript" src="IndexedDBModel.js"></script>
<script type="text/javascript" src="Spectrum.js"></script>
<script type="text/javascript" src="SidebarPane.js"></script>
- <script type="text/javascript" src="ElementsTreeOutline.js"></script>
<script type="text/javascript" src="DOMPresentationUtils.js"></script>
<script type="text/javascript" src="SidebarTreeElement.js"></script>
<script type="text/javascript" src="Section.js"></script>
@@ -108,24 +111,21 @@
<script type="text/javascript" src="DOMBreakpointsSidebarPane.js"></script>
<script type="text/javascript" src="Color.js"></script>
<script type="text/javascript" src="CSSMetadata.js"></script>
+ <script type="text/javascript" src="SupportedCSSProperties.js"></script>
<script type="text/javascript" src="StatusBarButton.js"></script>
<script type="text/javascript" src="CompletionDictionary.js"></script>
+ <script type="text/javascript" src="InplaceEditor.js"></script>
<script type="text/javascript" src="TextEditor.js"></script>
<script type="text/javascript" src="SourceFrame.js"></script>
<script type="text/javascript" src="ResourceView.js"></script>
<script type="text/javascript" src="FontView.js"></script>
<script type="text/javascript" src="ImageView.js"></script>
<script type="text/javascript" src="SplitView.js"></script>
- <script type="text/javascript" src="SidebarView.js"></script>
+ <script type="text/javascript" src="StackView.js"></script>
<script type="text/javascript" src="ConsolePanel.js"></script>
- <script type="text/javascript" src="ExtensionAPI.js"></script>
- <script type="text/javascript" src="ExtensionAuditCategory.js"></script>
- <script type="text/javascript" src="ExtensionServer.js"></script>
- <script type="text/javascript" src="ExtensionView.js"></script>
- <script type="text/javascript" src="ExtensionPanel.js"></script>
+ <script type="text/javascript" src="ExtensionServerProxy.js"></script>
<script type="text/javascript" src="EmptyView.js"></script>
<script type="text/javascript" src="ScriptFormatter.js"></script>
- <script type="text/javascript" src="DOMSyntaxHighlighter.js"></script>
<script type="text/javascript" src="TempFile.js"></script>
<script type="text/javascript" src="TextRange.js"></script>
<script type="text/javascript" src="TextUtils.js"></script>
@@ -168,6 +168,7 @@
<script type="text/javascript" src="FilterBar.js"></script>
<script type="text/javascript" src="InspectElementModeController.js"></script>
<script type="text/javascript" src="WorkerManager.js"></script>
+ <script type="text/javascript" src="WorkerFrontendManager.js"></script>
<script type="text/javascript" src="UserMetrics.js"></script>
<script type="text/javascript" src="RuntimeModel.js"></script>
<script type="text/javascript" src="HandlerRegistry.js"></script>
@@ -177,18 +178,15 @@
<script type="text/javascript" src="ProgressIndicator.js"></script>
<script type="text/javascript" src="StylesSourceMapping.js"></script>
<script type="text/javascript" src="NetworkUISourceCodeProvider.js"></script>
- <script type="text/javascript" src="ElementsPanelDescriptor.js"></script>
- <script type="text/javascript" src="NetworkPanelDescriptor.js"></script>
- <script type="text/javascript" src="ProfilesPanelDescriptor.js"></script>
- <script type="text/javascript" src="SourcesPanelDescriptor.js"></script>
- <script type="text/javascript" src="TimelinePanelDescriptor.js"></script>
- <script type="text/javascript" src="LayersPanelDescriptor.js"></script>
+ <script type="text/javascript" src="CPUProfilerModel.js"></script>
<script type="text/javascript" src="DockController.js"></script>
<script type="text/javascript" src="TracingAgent.js"></script>
<script type="text/javascript" src="ScreencastView.js"></script>
- <script type="text/javascript" src="DevToolsExtensionAPI.js"></script>
<script type="text/javascript" src="Tests.js"></script>
<script type="text/javascript" src="FlameChart.js"></script>
+ <script type="text/javascript" src="PaintProfiler.js"></script>
+ <script type="text/javascript" src="HelpScreenUntilReload.js"></script>
+ <script type="text/javascript" src="ZoomManager.js"></script>
</head>
<body class="undocked" id="-blink-dev-tools"></body>
</html>
diff --git a/Source/devtools/front_end/inspector.js b/Source/devtools/front_end/inspector.js
index 8e221b8..7e53dda 100644
--- a/Source/devtools/front_end/inspector.js
+++ b/Source/devtools/front_end/inspector.js
@@ -29,30 +29,17 @@
*/
var WebInspector = {
- _panelDescriptors: function()
+ _registerModules: function()
{
- this.panels = {};
- WebInspector.inspectorView = new WebInspector.InspectorView();
- WebInspector.inspectorView.show(document.body);
-
- var elements = new WebInspector.ElementsPanelDescriptor();
- var network = new WebInspector.NetworkPanelDescriptor();
- var sources = new WebInspector.SourcesPanelDescriptor();
- var timeline = new WebInspector.TimelinePanelDescriptor();
- var profiles = new WebInspector.ProfilesPanelDescriptor();
- var resources = new WebInspector.PanelDescriptor("resources", WebInspector.UIString("Resources"), "ResourcesPanel", "ResourcesPanel.js");
- var audits = new WebInspector.PanelDescriptor("audits", WebInspector.UIString("Audits"), "AuditsPanel", "AuditsPanel.js");
- var console = new WebInspector.PanelDescriptor("console", WebInspector.UIString("Console"), "ConsolePanel");
-
- if (WebInspector.WorkerManager.isWorkerFrontend())
- return [sources, timeline, profiles, console];
-
- var panelDescriptors = [elements, network, sources, timeline, profiles, resources, audits, console];
- if (WebInspector.experimentsSettings.layersPanel.isEnabled()) {
- var layers = new WebInspector.LayersPanelDescriptor();
- panelDescriptors.push(layers);
+ var configuration;
+ if (WebInspector.isWorkerFrontend()) {
+ configuration = ["sources", "timeline", "profiles", "console", "codemirror"];
+ } else {
+ configuration = ["elements", "network", "sources", "timeline", "profiles", "resources", "audits", "console", "codemirror", "extensions"];
+ if (WebInspector.experimentsSettings.layersPanel.isEnabled())
+ configuration.push("layers");
}
- return panelDescriptors;
+ WebInspector.moduleManager.registerModules(configuration);
},
_createGlobalStatusBarItems: function()
@@ -60,20 +47,15 @@
if (this.inspectElementModeController)
this.inspectorView.appendToLeftToolbar(this.inspectElementModeController.toggleSearchButton.element);
- if (Capabilities.canScreencast) {
- this._toggleScreencastButton = new WebInspector.StatusBarButton(WebInspector.UIString("Toggle screencast."), "screencast-status-bar-item");
- this._toggleScreencastButton.addEventListener("click", this._toggleScreencastButtonClicked.bind(this), false);
- this.inspectorView.appendToLeftToolbar(this._toggleScreencastButton.element);
- }
-
this.inspectorView.appendToRightToolbar(this.settingsController.statusBarItem);
- if (WebInspector.queryParamsObject["can_dock"])
+ if (this.dockController.element)
this.inspectorView.appendToRightToolbar(this.dockController.element);
- var closeButtonToolbarItem = document.createElementWithClass("div", "toolbar-close-button-item");
- var closeButtonElement = closeButtonToolbarItem.createChild("div", "close-button");
- closeButtonElement.addEventListener("click", WebInspector.close.bind(WebInspector), true);
- this.inspectorView.appendToRightToolbar(closeButtonToolbarItem);
+ if (Capabilities.canScreencast) {
+ var placeholder = document.createElement("div");
+ this._screencastView = new WebInspector.ScreencastView(placeholder);
+ this.inspectorView.appendToRightToolbar(placeholder);
+ }
},
/**
@@ -84,99 +66,94 @@
return !!WebInspector.queryParamsObject["remoteFrontend"];
},
- _toggleScreencastButtonClicked: function()
+ /**
+ * @return {boolean}
+ */
+ isDedicatedWorkerFrontend: function()
{
- this._toggleScreencastButton.toggled = !this._toggleScreencastButton.toggled;
- WebInspector.settings.screencastEnabled.set(this._toggleScreencastButton.toggled);
+ return !!WebInspector.queryParamsObject["dedicatedWorkerId"];
+ },
- if (this._toggleScreencastButton.toggled) {
- if (!this._screencastView) {
- // Rebuild the UI upon first invocation.
- this._screencastView = new WebInspector.ScreencastView();
- this._screencastSplitView = new WebInspector.SplitView(true, WebInspector.settings.screencastSidebarWidth.name);
- this._screencastSplitView.markAsRoot();
- this._screencastSplitView.show(document.body);
+ _calculateWorkerInspectorTitle: function()
+ {
+ var expression = "location.href";
+ if (WebInspector.queryParamsObject["isSharedWorker"])
+ expression += " + (this.name ? ' (' + this.name + ')' : '')";
+ RuntimeAgent.evaluate.invoke({expression:expression, doNotPauseOnExceptionsAndMuteConsole:true, returnByValue: true}, evalCallback.bind(this));
- this._screencastView.show(this._screencastSplitView.firstElement());
-
- this.inspectorView.element.remove();
- this.inspectorView.show(this._screencastSplitView.secondElement());
+ /**
+ * @param {?Protocol.Error} error
+ * @param {!RuntimeAgent.RemoteObject} result
+ * @param {boolean=} wasThrown
+ */
+ function evalCallback(error, result, wasThrown)
+ {
+ if (error || wasThrown) {
+ console.error(error);
+ return;
}
- this._screencastSplitView.showBoth();
- } else {
- this._screencastSplitView.showOnlySecond();
+ InspectorFrontendHost.inspectedURLChanged(result.value);
}
},
+ _initializeDedicatedWorkerFrontend: function(workerId)
+ {
+ function receiveMessage(event)
+ {
+ var message = event.data;
+ InspectorBackend.dispatch(message);
+ }
+ window.addEventListener("message", receiveMessage, true);
+
+
+ InspectorBackend.sendMessageObjectToBackend = function(message)
+ {
+ window.opener.postMessage({workerId: workerId, command: "sendMessageToBackend", message: message}, "*");
+ }
+ },
+
+ _loadCompletedForWorkers: function()
+ {
+ // Make sure script execution of dedicated worker is resumed and then paused
+ // on the first script statement in case we autoattached to it.
+ if (WebInspector.queryParamsObject["workerPaused"]) {
+ DebuggerAgent.pause();
+ RuntimeAgent.run(calculateTitle);
+ } else if (WebInspector.isWorkerFrontend())
+ calculateTitle();
+
+ function calculateTitle()
+ {
+ WebInspector._calculateWorkerInspectorTitle();
+ }
+ },
+
+ /**
+ * @return {boolean}
+ */
+ isWorkerFrontend: function()
+ {
+ return !!WebInspector.queryParamsObject["dedicatedWorkerId"] ||
+ !!WebInspector.queryParamsObject["isSharedWorker"];
+ },
showConsole: function()
{
- if (this.consoleView.isShowing() && !WebInspector.inspectorView.drawer().isHiding())
+ if (this.consoleView.isShowing())
return;
this.inspectorView.showViewInDrawer("console");
},
_resetErrorAndWarningCounts: function()
{
- var errorWarningElement = document.getElementById("error-warning-count");
- if (!errorWarningElement)
- return;
-
- errorWarningElement.classList.add("hidden");
+ WebInspector.inspectorView.setErrorAndWarningCounts(0, 0);
},
_updateErrorAndWarningCounts: function()
{
var errors = WebInspector.console.errors;
var warnings = WebInspector.console.warnings;
-
- if (!errors && !warnings) {
- this._resetErrorAndWarningCounts();
- return;
- }
-
- var errorWarningElement = document.getElementById("error-warning-count");
- if (!errorWarningElement)
- return;
-
- errorWarningElement.classList.remove("hidden");
- errorWarningElement.removeChildren();
-
- if (errors) {
- var errorImageElement = errorWarningElement.createChild("div", "error-icon-small");
- var errorElement = errorWarningElement.createChild("span");
- errorElement.id = "error-count";
- errorElement.textContent = errors;
- }
-
- if (warnings) {
- var warningsImageElement = errorWarningElement.createChild("div", "warning-icon-small");
- var warningsElement = errorWarningElement.createChild("span");
- warningsElement.id = "warning-count";
- warningsElement.textContent = warnings;
- }
-
- if (errors) {
- if (warnings) {
- if (errors == 1) {
- if (warnings == 1)
- errorWarningElement.title = WebInspector.UIString("%d error, %d warning", errors, warnings);
- else
- errorWarningElement.title = WebInspector.UIString("%d error, %d warnings", errors, warnings);
- } else if (warnings == 1)
- errorWarningElement.title = WebInspector.UIString("%d errors, %d warning", errors, warnings);
- else
- errorWarningElement.title = WebInspector.UIString("%d errors, %d warnings", errors, warnings);
- } else if (errors == 1)
- errorWarningElement.title = WebInspector.UIString("%d error", errors);
- else
- errorWarningElement.title = WebInspector.UIString("%d errors", errors);
- } else if (warnings == 1)
- errorWarningElement.title = WebInspector.UIString("%d warning", warnings);
- else if (warnings)
- errorWarningElement.title = WebInspector.UIString("%d warnings", warnings);
- else
- errorWarningElement.title = null;
+ WebInspector.inspectorView.setErrorAndWarningCounts(errors, warnings);
},
get inspectedPageDomain()
@@ -192,42 +169,6 @@
callback();
},
- _zoomIn: function()
- {
- this._zoomLevel = Math.min(this._zoomLevel + 1, WebInspector.Zoom.Table.length - WebInspector.Zoom.DefaultOffset - 1);
- this._requestZoom();
- },
-
- _zoomOut: function()
- {
- this._zoomLevel = Math.max(this._zoomLevel - 1, -WebInspector.Zoom.DefaultOffset);
- this._requestZoom();
- },
-
- _resetZoom: function()
- {
- this._zoomLevel = 0;
- this._requestZoom();
- },
-
- /**
- * @return {number}
- */
- zoomFactor: function()
- {
- // For backwards compatibility, zoomLevel takes integers (with 0 being default zoom).
- var index = this._zoomLevel + WebInspector.Zoom.DefaultOffset;
- index = Math.min(WebInspector.Zoom.Table.length - 1, index);
- index = Math.max(0, index);
- return WebInspector.Zoom.Table[index];
- },
-
- _requestZoom: function()
- {
- WebInspector.settings.zoomLevel.set(this._zoomLevel);
- InspectorFrontendHost.setZoomFactor(this.zoomFactor());
- },
-
_debuggerPaused: function()
{
this.debuggerModel.removeEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
@@ -250,6 +191,18 @@
var pair = params[i].split("=");
WebInspector.queryParamsObject[pair[0]] = pair[1];
}
+
+ // Patch settings from the URL param (for tests).
+ var settingsParam = WebInspector.queryParamsObject["settings"];
+ if (settingsParam) {
+ try {
+ var settings = JSON.parse(window.decodeURI(settingsParam));
+ for (var key in settings)
+ localStorage[key] = settings[key];
+ } catch(e) {
+ // Ignore malformed settings.
+ }
+ }
})();}
WebInspector.suggestReload = function()
@@ -261,19 +214,7 @@
WebInspector.reload = function()
{
InspectorAgent.reset();
-
- var queryParams = window.location.search;
- var url = window.location.href;
- url = url.substring(0, url.length - queryParams.length);
- var queryParamsObject = {};
- for (var name in WebInspector.queryParamsObject)
- queryParamsObject[name] = WebInspector.queryParamsObject[name];
- if (this.dockController)
- queryParamsObject["dockSide"] = this.dockController.dockSide();
- var names = Object.keys(queryParamsObject);
- for (var i = 0; i < names.length; ++i)
- url += (i ? "&" : "?") + names[i] + "=" + queryParamsObject[names[i]];
- document.location = url;
+ window.location.reload();
}
WebInspector.loaded = function()
@@ -289,7 +230,7 @@
InspectorBackend.loadFromJSONIfNeeded("../protocol.json");
WebInspector.dockController = new WebInspector.DockController();
- if (WebInspector.WorkerManager.isDedicatedWorkerFrontend()) {
+ if (WebInspector.isDedicatedWorkerFrontend()) {
// Do not create socket for the worker front-end.
WebInspector.doLoadedDone();
return;
@@ -338,7 +279,9 @@
if (WebInspector.queryParamsObject.toolbarColor && WebInspector.queryParamsObject.textColor)
WebInspector.setToolbarColors(WebInspector.queryParamsObject.toolbarColor, WebInspector.queryParamsObject.textColor);
- WebInspector.WorkerManager.loaded();
+ var workerId = WebInspector.queryParamsObject["dedicatedWorkerId"];
+ if (workerId)
+ this._initializeDedicatedWorkerFrontend(workerId);
PageAgent.canScreencast(WebInspector._initializeCapability.bind(WebInspector, "canScreencast", null));
WorkerAgent.canInspectWorkers(WebInspector._initializeCapability.bind(WebInspector, "canInspectWorkers", WebInspector._doLoadedDoneWithCapabilities.bind(WebInspector)));
@@ -354,6 +297,7 @@
// set order of some sections explicitly
WebInspector.shortcutsScreen.section(WebInspector.UIString("Console"));
WebInspector.shortcutsScreen.section(WebInspector.UIString("Elements Panel"));
+ WebInspector.ShortcutsScreen.registerShortcuts();
this.console = new WebInspector.ConsoleModel();
this.console.addEventListener(WebInspector.ConsoleModel.Events.ConsoleCleared, this._resetErrorAndWarningCounts, this);
@@ -366,16 +310,13 @@
this.networkLog = new WebInspector.NetworkLog();
this.domAgent = new WebInspector.DOMAgent();
this.domAgent.addEventListener(WebInspector.DOMAgent.Events.InspectNodeRequested, this._inspectNodeRequested, this);
+ this.workerManager = new WebInspector.WorkerManager(Capabilities.canInspectWorkers);
this.runtimeModel = new WebInspector.RuntimeModel(this.resourceTreeModel);
- var panelDescriptors = this._panelDescriptors();
+ this.zoomManager = new WebInspector.ZoomManager();
+
this.advancedSearchController = new WebInspector.AdvancedSearchController();
- for (var i = 0; i < panelDescriptors.length; ++i)
- panelDescriptors[i].registerShortcuts();
-
- WebInspector.CSSMetadata.requestCSSShorthandData();
-
- this.consoleView = new WebInspector.ConsoleView(WebInspector.WorkerManager.isWorkerFrontend());
+ this.consoleView = new WebInspector.ConsoleView(WebInspector.isWorkerFrontend());
InspectorBackend.registerInspectorDispatcher(this);
@@ -385,26 +326,24 @@
this.cssModel = new WebInspector.CSSStyleModel(this.workspace);
this.timelineManager = new WebInspector.TimelineManager();
- this.profileManager = new WebInspector.ProfileManager();
this.tracingAgent = new WebInspector.TracingAgent();
- if (!WebInspector.WorkerManager.isWorkerFrontend())
+ if (!WebInspector.isWorkerFrontend()) {
this.inspectElementModeController = new WebInspector.InspectElementModeController();
+ this.workerFrontendManager = new WebInspector.WorkerFrontendManager();
+ }
this.settingsController = new WebInspector.SettingsController();
this.domBreakpointsSidebarPane = new WebInspector.DOMBreakpointsSidebarPane();
- this._zoomLevel = WebInspector.settings.zoomLevel.get();
- if (this._zoomLevel)
- this._requestZoom();
-
var autoselectPanel = WebInspector.UIString("a panel chosen automatically");
var openAnchorLocationSetting = WebInspector.settings.createSetting("openLinkHandler", autoselectPanel);
this.openAnchorLocationRegistry = new WebInspector.HandlerRegistry(openAnchorLocationSetting);
this.openAnchorLocationRegistry.registerHandler(autoselectPanel, function() { return false; });
+ WebInspector.Linkifier.setLinkHandler(new WebInspector.HandlerRegistry.LinkHandler());
- this.workspaceController = new WebInspector.WorkspaceController(this.workspace);
+ new WebInspector.WorkspaceController(this.workspace);
this.fileSystemWorkspaceProvider = new WebInspector.FileSystemWorkspaceProvider(this.isolatedFileSystemManager, this.workspace);
@@ -418,17 +357,20 @@
this.overridesSupport = new WebInspector.OverridesSupport();
this.overridesSupport.applyInitialOverrides();
- new WebInspector.DebuggerScriptMapping(this.workspace, this.networkWorkspaceProvider);
+ new WebInspector.DebuggerScriptMapping(this.debuggerModel, this.workspace, this.networkWorkspaceProvider);
this.liveEditSupport = new WebInspector.LiveEditSupport(this.workspace);
new WebInspector.CSSStyleSheetMapping(this.cssModel, this.workspace, this.networkWorkspaceProvider);
new WebInspector.PresentationConsoleMessageHelper(this.workspace);
- this._createGlobalStatusBarItems();
+ // Create settings before loading modules.
+ WebInspector.settings.initializeBackendSettings();
- WebInspector.startBatchUpdate();
- for (var i = 0; i < panelDescriptors.length; ++i)
- WebInspector.inspectorView.addPanel(panelDescriptors[i]);
- WebInspector.endBatchUpdate();
+ this._registerModules();
+
+ this.panels = {};
+ WebInspector.inspectorView = new WebInspector.InspectorView();
+ WebInspector.inspectorView.show(document.body);
+ this._createGlobalStatusBarItems();
this.addMainEventListeners(document);
@@ -438,41 +380,46 @@
errorWarningCount.addEventListener("click", this.showConsole.bind(this), false);
this._updateErrorAndWarningCounts();
- this.extensionServer.initExtensions();
+ WebInspector.extensionServerProxy.setFrontendReady();
this.console.enableAgent();
- InspectorAgent.enable(WebInspector.inspectorView.showInitialPanel.bind(WebInspector.inspectorView));
this.databaseModel = new WebInspector.DatabaseModel();
this.domStorageModel = new WebInspector.DOMStorageModel();
+ this.cpuProfilerModel = new WebInspector.CPUProfilerModel();
- ProfilerAgent.enable();
- HeapProfilerAgent.enable();
-
- WebInspector.settings.showPaintRects = WebInspector.settings.createBackendSetting("showPaintRects", false, PageAgent.setShowPaintRects.bind(PageAgent));
- WebInspector.settings.showDebugBorders = WebInspector.settings.createBackendSetting("showDebugBorders", false, PageAgent.setShowDebugBorders.bind(PageAgent));
- WebInspector.settings.continuousPainting = WebInspector.settings.createBackendSetting("continuousPainting", false, PageAgent.setContinuousPaintingEnabled.bind(PageAgent));
- WebInspector.settings.showFPSCounter = WebInspector.settings.createBackendSetting("showFPSCounter", false, PageAgent.setShowFPSCounter.bind(PageAgent));
- WebInspector.settings.showScrollBottleneckRects = WebInspector.settings.createBackendSetting("showScrollBottleneckRects", false, PageAgent.setShowScrollBottleneckRects.bind(PageAgent));
-
- if (WebInspector.settings.showPaintRects.get() || WebInspector.settings.showDebugBorders.get() || WebInspector.settings.continuousPainting.get() ||
- WebInspector.settings.showFPSCounter.get() || WebInspector.settings.showScrollBottleneckRects.get()) {
- WebInspector.settings.showRenderingViewInDrawer.set(true);
- }
-
- WebInspector.settings.showMetricsRulers.addChangeListener(showRulersChanged);
- function showRulersChanged()
+ InspectorAgent.enable(inspectorAgentEnableCallback.bind(this));
+ /**
+ * @this {WebInspector}
+ */
+ function inspectorAgentEnableCallback()
{
- PageAgent.setShowViewportSizeOnResize(true, WebInspector.settings.showMetricsRulers.get());
+ WebInspector.inspectorView.showInitialPanel();
+
+ if (WebInspector.overridesSupport.hasActiveOverrides()) {
+ if (!WebInspector.settings.showEmulationViewInDrawer.get())
+ WebInspector.settings.showEmulationViewInDrawer.set(true);
+ WebInspector.inspectorView.showViewInDrawer("emulation", true);
+ }
+
+ if (WebInspector.settings.showPaintRects.get() || WebInspector.settings.showDebugBorders.get() || WebInspector.settings.continuousPainting.get() ||
+ WebInspector.settings.showFPSCounter.get() || WebInspector.settings.showScrollBottleneckRects.get()) {
+ WebInspector.settings.showRenderingViewInDrawer.set(true);
+ }
+
+ WebInspector.settings.showMetricsRulers.addChangeListener(showRulersChanged);
+ function showRulersChanged()
+ {
+ PageAgent.setShowViewportSizeOnResize(true, WebInspector.settings.showMetricsRulers.get());
+ }
+ showRulersChanged();
+
+ if (Capabilities.canScreencast)
+ this._screencastView.initialize();
}
- showRulersChanged();
- WebInspector.WorkerManager.loadCompleted();
+ this._loadCompletedForWorkers()
InspectorFrontendAPI.loadCompleted();
-
- if (Capabilities.canScreencast && WebInspector.settings.screencastEnabled.get())
- this._toggleScreencastButtonClicked();
-
WebInspector.notifications.dispatchEventToListeners(WebInspector.Events.InspectorLoaded);
}
@@ -506,12 +453,8 @@
WebInspector.windowResize = function(event)
{
- if (WebInspector.inspectorView)
- WebInspector.inspectorView.onResize();
if (WebInspector.settingsController)
WebInspector.settingsController.resize();
- if (WebInspector._screencastSplitView)
- WebInspector._screencastSplitView.doResize();
}
WebInspector.close = function(event)
@@ -522,7 +465,7 @@
WebInspector.documentClick = function(event)
{
var anchor = event.target.enclosingNodeOrSelfWithNodeName("a");
- if (!anchor || (anchor.target === "_blank"))
+ if (!anchor || !anchor.href || (anchor.target === "_blank"))
return;
// Prevent the link from navigating, since we don't do any navigation by following links normally.
@@ -534,25 +477,24 @@
return;
if (WebInspector.openAnchorLocationRegistry.dispatch({ url: anchor.href, lineNumber: anchor.lineNumber}))
return;
- if (WebInspector.showAnchorLocation(anchor))
- return;
- const profileMatch = WebInspector.ProfilesPanelDescriptor.ProfileURLRegExp.exec(anchor.href);
- if (profileMatch) {
- WebInspector.showPanel("profiles").showProfile(profileMatch[1], profileMatch[2]);
+ var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(anchor.href);
+ if (uiSourceCode) {
+ WebInspector.Revealer.reveal(new WebInspector.UILocation(uiSourceCode, anchor.lineNumber || 0, anchor.columnNumber || 0));
return;
}
- var parsedURL = anchor.href.asParsedURL();
- if (parsedURL && parsedURL.scheme === "webkit-link-action") {
- if (parsedURL.host === "show-panel") {
- var panel = parsedURL.path.substring(1);
- if (WebInspector.panel(panel))
- WebInspector.showPanel(panel);
- }
+ var resource = WebInspector.resourceForURL(anchor.href);
+ if (resource) {
+ WebInspector.Revealer.reveal(resource);
return;
}
+ var request = WebInspector.networkLog.requestForURL(anchor.href);
+ if (request) {
+ WebInspector.Revealer.reveal(request);
+ return;
+ }
InspectorFrontendHost.openInNewTab(anchor.href);
}
@@ -595,11 +537,11 @@
];
section.addRelatedKeys(keys, WebInspector.UIString("Go back/forward in panel history"));
- var toggleConsoleLabel = WebInspector.UIString("Toggle console");
- if (WebInspector.experimentsSettings.openConsoleWithCtrlTilde.isEnabled())
- section.addKey(shortcut.makeDescriptor(shortcut.Keys.Esc), toggleConsoleLabel);
- else
- section.addKey(shortcut.makeDescriptor(shortcut.Keys.Tilde, shortcut.Modifiers.CtrlOrMeta), toggleConsoleLabel);
+ var toggleConsoleLabel = WebInspector.UIString("Show console");
+ section.addKey(shortcut.makeDescriptor(shortcut.Keys.Tilde, shortcut.Modifiers.Ctrl), toggleConsoleLabel);
+ var doNotOpenDrawerOnEsc = WebInspector.experimentsSettings.doNotOpenDrawerOnEsc.isEnabled();
+ var toggleDrawerLabel = doNotOpenDrawerOnEsc ? WebInspector.UIString("Hide drawer") : WebInspector.UIString("Toggle drawer");
+ section.addKey(shortcut.makeDescriptor(shortcut.Keys.Esc), toggleDrawerLabel);
section.addKey(shortcut.makeDescriptor("f", shortcut.Modifiers.CtrlOrMeta), WebInspector.UIString("Search"));
var advancedSearchShortcut = WebInspector.AdvancedSearchController.createShortcut();
@@ -629,15 +571,33 @@
section.addAlternateKeys(keys, WebInspector.UIString("Show general settings"));
}
-WebInspector.documentKeyDown = function(event)
+WebInspector.handleZoomEvent = function(event)
{
- if (WebInspector.currentFocusElement() && WebInspector.currentFocusElement().handleKeyEvent) {
- WebInspector.currentFocusElement().handleKeyEvent(event);
- if (event.handled) {
- event.consume(true);
- return;
+ switch (event.keyCode) {
+ case 107: // +
+ case 187: // +
+ InspectorFrontendHost.zoomIn();
+ return true;
+ case 109: // -
+ case 189: // -
+ InspectorFrontendHost.zoomOut();
+ return true;
+ case 48: // 0
+ case 96: // Numpad 0
+ // Zoom reset shortcut does not allow "Shift" when handled by the browser.
+ if (!event.shiftKey) {
+ InspectorFrontendHost.resetZoom();
+ return true;
}
+ break;
}
+ return false;
+};
+
+WebInspector.postDocumentKeyDown = function(event)
+{
+ if (event.handled)
+ return;
if (WebInspector.inspectorView.currentPanel()) {
WebInspector.inspectorView.currentPanel().handleShortcut(event);
@@ -682,65 +642,29 @@
var isValidZoomShortcut = WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) &&
!event.altKey &&
!InspectorFrontendHost.isStub;
- switch (event.keyCode) {
- case 107: // +
- case 187: // +
- if (isValidZoomShortcut) {
- WebInspector._zoomIn();
- event.consume(true);
- }
- break;
- case 109: // -
- case 189: // -
- if (isValidZoomShortcut) {
- WebInspector._zoomOut();
- event.consume(true);
- }
- break;
- case 48: // 0
- case 96: // Numpad 0
- // Zoom reset shortcut does not allow "Shift" when handled by the browser.
- if (isValidZoomShortcut && !event.shiftKey) {
- WebInspector._resetZoom();
- event.consume(true);
- }
- break;
+ if (isValidZoomShortcut && WebInspector.handleZoomEvent(event)) {
+ event.consume(true);
+ return;
}
-}
-
-WebInspector.postDocumentKeyDown = function(event)
-{
- const helpKey = WebInspector.isMac() ? "U+003F" : "U+00BF"; // "?" for both platforms
-
- if (event.keyIdentifier === "F1" ||
- (event.keyIdentifier === helpKey && event.shiftKey && (!WebInspector.isBeingEdited(event.target) || event.metaKey))) {
+ if (event.keyCode === WebInspector.KeyboardShortcut.Keys.F1.code ||
+ (event.keyCode === WebInspector.KeyboardShortcut.Keys.QuestionMark.code && event.shiftKey && (!WebInspector.isBeingEdited(event.target) || event.metaKey))) {
this.settingsController.showSettingsScreen(WebInspector.SettingsScreen.Tabs.General);
event.consume(true);
return;
}
- const Esc = "U+001B";
-
- if (event.handled)
- return;
-
- var openConsoleWithCtrlTildeEnabled = WebInspector.experimentsSettings.openConsoleWithCtrlTilde.isEnabled();
+ var Esc = "U+001B";
+ var doNotOpenDrawerOnEsc = WebInspector.experimentsSettings.doNotOpenDrawerOnEsc.isEnabled();
if (event.keyIdentifier === Esc) {
- if (this.inspectorView.drawer().visible())
- this.inspectorView.drawer().hide();
- else if (!openConsoleWithCtrlTildeEnabled)
- this.inspectorView.drawer().show();
+ if (this.inspectorView.drawerVisible())
+ this.inspectorView.closeDrawer();
+ else if (!doNotOpenDrawerOnEsc)
+ this.inspectorView.showDrawer();
}
- if (openConsoleWithCtrlTildeEnabled) {
- if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Tilde.code && WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event)) {
- if (this.inspectorView.drawer().visible())
- this.inspectorView.drawer().hide();
- else
- this.showConsole();
- }
- }
+ if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Tilde.code && event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
+ this.showConsole();
}
WebInspector.documentCanCopy = function(event)
@@ -761,11 +685,17 @@
event.preventDefault();
}
+/**
+ * @param {string} panel
+ */
WebInspector.showPanel = function(panel)
{
return WebInspector.inspectorView.showPanel(panel);
}
+/**
+ * @param {string} panel
+ */
WebInspector.panel = function(panel)
{
return WebInspector.inspectorView.panel(panel);
@@ -864,6 +794,7 @@
function callback(nodeId)
{
WebInspector._updateFocusedNode(nodeId);
+ InspectorFrontendHost.inspectElementCompleted();
object.release();
}
object.pushNodeToFrontend(callback);
@@ -895,11 +826,7 @@
return;
}
- if (hints.databaseId)
- WebInspector.showPanel("resources").selectDatabase(WebInspector.databaseModel.databaseForId(hints.databaseId));
- else if (hints.domStorageId)
- WebInspector.showPanel("resources").selectDOMStorage(WebInspector.domStorageModel.storageForId(hints.domStorageId));
- else if (hints.copyToClipboard)
+ if (hints.copyToClipboard)
InspectorFrontendHost.copyText(object.value);
object.release();
}
@@ -932,36 +859,6 @@
WebInspector.showPanel("elements").revealAndSelectNode(nodeId);
}
-WebInspector.showAnchorLocation = function(anchor)
-{
- var preferredPanel = this.panels[anchor.preferredPanel];
- if (preferredPanel && WebInspector._showAnchorLocationInPanel(anchor, preferredPanel))
- return true;
- if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("sources")))
- return true;
- if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("resources")))
- return true;
- if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("network")))
- return true;
- return false;
-}
-
-WebInspector._showAnchorLocationInPanel = function(anchor, panel)
-{
- if (!panel)
- return false;
-
- var result = panel.showAnchorLocation(anchor);
- if (result) {
- // FIXME: support webkit-html-external-link links here.
- if (anchor.classList.contains("webkit-html-external-link")) {
- anchor.classList.remove("webkit-html-external-link");
- anchor.classList.add("webkit-html-resource-link");
- }
- }
- return result;
-}
-
WebInspector.evaluateInConsole = function(expression, showResultOnly)
{
this.showConsole();
@@ -970,52 +867,11 @@
WebInspector.addMainEventListeners = function(doc)
{
- doc.addEventListener("keydown", this.documentKeyDown.bind(this), true);
doc.addEventListener("keydown", this.postDocumentKeyDown.bind(this), false);
doc.addEventListener("beforecopy", this.documentCanCopy.bind(this), true);
doc.addEventListener("copy", this.documentCopy.bind(this), false);
doc.addEventListener("contextmenu", this.contextMenuEventFired.bind(this), true);
- doc.addEventListener("click", this.documentClick.bind(this), true);
-}
-
-WebInspector.Zoom = {
- Table: [0.25, 0.33, 0.5, 0.66, 0.75, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5],
- DefaultOffset: 6
-}
-
-
-// Ex-DevTools.js content
-
-/**
- * @param {!ExtensionDescriptor} extensionInfo
- * @return {string}
- */
-function buildPlatformExtensionAPI(extensionInfo)
-{
- return "var extensionInfo = " + JSON.stringify(extensionInfo) + ";" +
- "var tabId = " + WebInspector._inspectedTabId + ";" +
- platformExtensionAPI.toString();
-}
-
-WebInspector.setInspectedTabId = function(tabId)
-{
- WebInspector._inspectedTabId = tabId;
-}
-
-/**
- * @return {string}
- */
-WebInspector.getSelectionBackgroundColor = function()
-{
- return InspectorFrontendHost.getSelectionBackgroundColor();
-}
-
-/**
- * @return {string}
- */
-WebInspector.getSelectionForegroundColor = function()
-{
- return InspectorFrontendHost.getSelectionForegroundColor();
+ doc.addEventListener("click", this.documentClick.bind(this), false);
}
window.DEBUG = true;
diff --git a/Source/devtools/front_end/inspectorCommon.css b/Source/devtools/front_end/inspectorCommon.css
index 421a555..cfc4ba9 100644
--- a/Source/devtools/front_end/inspectorCommon.css
+++ b/Source/devtools/front_end/inspectorCommon.css
@@ -32,14 +32,6 @@
font-family: 'Segoe UI', Tahoma, sans-serif;
}
-body.dock-to-right:not(.undocked) {
- border-left: 1px solid rgb(80, 80, 80);
-}
-
-body.dock-to-right.inactive:not(.undocked) {
- border-left: 1px solid rgb(64%, 64%, 64%);
-}
-
* {
box-sizing: border-box;
}
@@ -108,10 +100,6 @@
overflow: hidden;
}
-.resize-enabled .resources-dividers-label-bar {
- cursor: move;
-}
-
.resources-divider {
position: absolute;
width: 1px;
@@ -208,6 +196,12 @@
padding: 0;
}
+.network-timing-table td.caution {
+ font-weight: bold;
+ color: rgb(255, 128, 0);
+ padding: 2px 0;
+}
+
.network-timing-row {
position: relative;
height: 16px;
diff --git a/Source/devtools/front_end/inspectorSyntaxHighlight.css b/Source/devtools/front_end/inspectorSyntaxHighlight.css
index 7d904c0..e29896c 100644
--- a/Source/devtools/front_end/inspectorSyntaxHighlight.css
+++ b/Source/devtools/front_end/inspectorSyntaxHighlight.css
@@ -66,9 +66,14 @@
color: brown;
}
+.webkit-html-text-node {
+ unicode-bidi: -webkit-isolate;
+}
+
.webkit-html-entity-value {
/* This one is non-standard. */
background-color: rgba(0, 0, 0, 0.15);
+ unicode-bidi: -webkit-isolate;
}
.webkit-html-doctype {
@@ -79,11 +84,13 @@
.webkit-html-attribute-name {
/* Keep this in sync with view-source.css (.webkit-html-attribute-name) */
color: rgb(153, 69, 0);
+ unicode-bidi: -webkit-isolate;
}
.webkit-html-attribute-value {
/* Keep this in sync with view-source.css (.webkit-html-attribute-value) */
color: rgb(26, 26, 166);
+ unicode-bidi: -webkit-isolate;
}
.webkit-html-external-link,
@@ -92,6 +99,12 @@
color: #00e;
}
+.webkit-html-resource-link {
+ /* Required for consistency with view-source.css, since anchors may not have href attributes */
+ text-decoration: underline;
+ cursor: pointer;
+}
+
.webkit-html-external-link {
/* Keep this in sync with view-source.css (.webkit-html-external-link) */
text-decoration: none;
diff --git a/Source/devtools/front_end/layersPanel.css b/Source/devtools/front_end/layersPanel.css
index 3420420..c558fb8 100644
--- a/Source/devtools/front_end/layersPanel.css
+++ b/Source/devtools/front_end/layersPanel.css
@@ -143,4 +143,22 @@
font-weight: bold;
}
+.paint-profiler-view canvas {
+ z-index: 200;
+ opacity: 0.8;
+ background-color: white;
+}
+
+.paint-profiler-view {
+ overflow: hidden;
+}
+
+.paint-profiler-view .overview-grid-dividers-background,
+.paint-profiler-view .overview-grid-window {
+ bottom: 0;
+ height: auto;
+}
+
+.paint-profiler-view .overview-grid-window-resizer {
+ z-index: 2000;
}
diff --git a/Source/devtools/front_end/modules.js b/Source/devtools/front_end/modules.js
new file mode 100644
index 0000000..1fe1cde
--- /dev/null
+++ b/Source/devtools/front_end/modules.js
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2014 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS
+ * "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 GOOGLE INC.
+ * OR ITS 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.
+ */
+
+/**
+ * @type {!Array.<!WebInspector.ModuleManager.ModuleDescriptor>}
+ */
+var allDescriptors = [
+ {
+ name: "elements",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "elements",
+ title: "Elements",
+ order: 0,
+ className: "WebInspector.ElementsPanel"
+ },
+ {
+ type: "@WebInspector.ContextMenu.Provider",
+ contextTypes: ["WebInspector.RemoteObject", "WebInspector.DOMNode"],
+ className: "WebInspector.ElementsPanel.ContextMenuProvider"
+ },
+ {
+ type: "@WebInspector.Drawer.ViewFactory",
+ name: "emulation",
+ title: "Emulation",
+ order: "10",
+ setting: "showEmulationViewInDrawer",
+ className: "WebInspector.ElementsPanel.OverridesViewFactory"
+ },
+ {
+ type: "@WebInspector.Drawer.ViewFactory",
+ name: "rendering",
+ title: "Rendering",
+ order: "11",
+ setting: "showRenderingViewInDrawer",
+ className: "WebInspector.ElementsPanel.RenderingViewFactory"
+ },
+ {
+ type: "@WebInspector.Renderer",
+ contextTypes: ["WebInspector.DOMNode"],
+ className: "WebInspector.ElementsTreeOutline.Renderer"
+ },
+ {
+ type: "@WebInspector.Revealer",
+ contextTypes: ["WebInspector.DOMNode"],
+ className: "WebInspector.ElementsPanel.DOMNodeRevealer"
+ }
+ ],
+ scripts: [ "ElementsPanel.js" ]
+ },
+ {
+ name: "network",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "network",
+ title: "Network",
+ order: 1,
+ className: "WebInspector.NetworkPanel"
+ },
+ {
+ type: "@WebInspector.ContextMenu.Provider",
+ contextTypes: ["WebInspector.NetworkRequest", "WebInspector.Resource", "WebInspector.UISourceCode"],
+ className: "WebInspector.NetworkPanel.ContextMenuProvider"
+ },
+ {
+ type: "@WebInspector.Revealer",
+ contextTypes: ["WebInspector.NetworkRequest"],
+ className: "WebInspector.NetworkPanel.RequestRevealer"
+ }
+ ],
+ scripts: [ "NetworkPanel.js" ]
+ },
+ {
+ name: "codemirror",
+ extensions: [
+ {
+ type: "@WebInspector.InplaceEditor",
+ className: "WebInspector.CodeMirrorUtils"
+ },
+ {
+ type: "@WebInspector.TokenizerFactory",
+ className: "WebInspector.CodeMirrorUtils.TokenizerFactory"
+ },
+ ],
+ scripts: [ "CodeMirrorTextEditor.js" ]
+ },
+ {
+ name: "sources",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "sources",
+ title: "Sources",
+ order: 2,
+ className: "WebInspector.SourcesPanel"
+ },
+ {
+ type: "@WebInspector.ContextMenu.Provider",
+ contextTypes: ["WebInspector.UISourceCode", "WebInspector.RemoteObject"],
+ className: "WebInspector.SourcesPanel.ContextMenuProvider"
+ },
+ {
+ type: "@WebInspector.SearchScope",
+ className: "WebInspector.SourcesSearchScope"
+ },
+ {
+ type: "@WebInspector.Drawer.ViewFactory",
+ name: "search",
+ title: "Search",
+ order: "1",
+ className: "WebInspector.AdvancedSearchController.ViewFactory"
+ },
+ {
+ type: "@WebInspector.Revealer",
+ contextTypes: ["WebInspector.UILocation"],
+ className: "WebInspector.SourcesPanel.UILocationRevealer"
+ }
+ ],
+ scripts: [ "SourcesPanel.js" ]
+ },
+ {
+ name: "timeline",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "timeline",
+ title: "Timeline",
+ order: 3,
+ className: "WebInspector.TimelinePanel"
+ }
+ ],
+ scripts: [ "TimelinePanel.js" ]
+ },
+ {
+ name: "profiles",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "profiles",
+ title: "Profiles",
+ order: 4,
+ className: "WebInspector.ProfilesPanel"
+ },
+ {
+ type: "@WebInspector.ContextMenu.Provider",
+ contextTypes: ["WebInspector.RemoteObject"],
+ className: "WebInspector.ProfilesPanel.ContextMenuProvider"
+ }
+ ],
+ scripts: [ "ProfilesPanel.js" ]
+ },
+ {
+ name: "resources",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "resources",
+ title: "Resources",
+ order: 5,
+ className: "WebInspector.ResourcesPanel"
+ },
+ {
+ type: "@WebInspector.Revealer",
+ contextTypes: ["WebInspector.Resource"],
+ className: "WebInspector.ResourcesPanel.ResourceRevealer"
+ }
+ ],
+ scripts: [ "ResourcesPanel.js" ]
+ },
+ {
+ name: "audits",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "audits",
+ title: "Audits",
+ order: 6,
+ className: "WebInspector.AuditsPanel"
+ }
+ ],
+ scripts: [ "AuditsPanel.js" ]
+ },
+ {
+ name: "console",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "console",
+ title: "Console",
+ order: 20,
+ className: "WebInspector.ConsolePanel"
+ },
+ {
+ type: "@WebInspector.Drawer.ViewFactory",
+ name: "console",
+ title: "Console",
+ order: "0",
+ className: "WebInspector.ConsolePanel.ViewFactory"
+ }
+ ]
+ },
+ {
+ extensions: [
+ {
+ type: "@WebInspector.ExtensionServerAPI",
+ className: "WebInspector.ExtensionServer"
+ }
+ ],
+ name: "extensions",
+ scripts: [ "ExtensionServer.js" ]
+ },
+ {
+ name: "layers",
+ extensions: [
+ {
+ type: "@WebInspector.Panel",
+ name: "layers",
+ title: "Layers",
+ order: 7,
+ className: "WebInspector.LayersPanel"
+ }
+ ],
+ scripts: [ "LayersPanel.js" ]
+ },
+ {
+ name: "handler-registry",
+ extensions: [
+ {
+ type: "@WebInspector.ContextMenu.Provider",
+ contextTypes: ["WebInspector.UISourceCode", "WebInspector.Resource", "WebInspector.NetworkRequest", "Node"],
+ className: "WebInspector.HandlerRegistry.ContextMenuProvider"
+ }
+ ]
+ }
+];
diff --git a/Source/devtools/front_end/networkLogView.css b/Source/devtools/front_end/networkLogView.css
index c34afbc..8cfa70c 100644
--- a/Source/devtools/front_end/networkLogView.css
+++ b/Source/devtools/front_end/networkLogView.css
@@ -49,12 +49,7 @@
}
.network-log-grid.data-grid table.data {
- background-size: 1px 82px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0.05)), to(rgba(0, 0, 0, 0.05)));
-}
-
-.network-log-grid.data-grid.small table.data {
- background-size: 1px 42px;
+ background: transparent;
}
.network-log-grid.data-grid td {
@@ -85,7 +80,7 @@
}
.network-log-grid.data-grid .data-container {
- top: 31px;
+ top: 33px;
}
.network-log-grid.data-grid.small .data-container {
@@ -108,6 +103,10 @@
height: 41px;
}
+.network-log-grid.data-grid tr.odd:not(.selected) {
+ background-color: #f3f3f3;
+}
+
.network-log-grid.data-grid tr.offscreen > td > div {
display: none;
}
@@ -343,11 +342,16 @@
top: 0;
bottom: 0;
margin: auto -7px;
- border-width: 6px 7px;
- height: 0;
+ height: 12px;
min-width: 14px;
opacity: 0.65;
- -webkit-border-image: url(Images/timelinePillGray.png) 7 7 7 7;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 7px / 6px;
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8);
+
+ border-color: hsl(0, 0%, 65%);
+ background: linear-gradient(0deg, hsl(0, 0%, 73%), hsl(0, 0%, 78%));
}
.network-graph-bar.waiting,
@@ -359,63 +363,94 @@
.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillGray.png) 7 7 7 7;
+ background: hsl(0, 0%, 90%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(0, 0%, 73%),
+ inset 0 1px 0 2px hsla(0, 0%, 76%, 0.85);
}
.network-type-document .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillBlue.png) 7 7 7 7;
+ border-color: hsl(215, 49%, 52%);
+ background: linear-gradient(0deg, hsl(215, 72%, 61%), hsl(215, 100%, 69%));
}
.network-type-document.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillBlue.png) 7 7 7 7;
+ background: hsl(215, 99%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(215, 71%, 61%),
+ inset 0 1px 0 2px hsla(215, 58%, 65%, 0.85);
}
.network-type-stylesheet .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillGreen.png) 7 7 7 7;
+ border-color: hsl(99, 34%, 52%);
+ background: linear-gradient(0deg, hsl(100, 50%, 61%), hsl(90, 50%, 64%));
}
.network-type-stylesheet.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillGreen.png) 7 7 7 7;
+ background: hsl(99, 100%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(99, 72%, 61%),
+ inset 0 1px 0 2px hsla(99, 59%, 65%, 0.85);
}
.network-type-image .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillPurple.png) 6 7 6 7;
+ border-color: hsl(272, 31%, 52%);
+ background: linear-gradient(0deg, hsl(272, 46%, 61%), hsl(272, 64%, 69%));
}
.network-type-image.resource-cached .network-graph-bar {
- border-image: url(Images/timelineHollowPillPurple.png) 7 7 7 7;
+ background: hsl(272, 65%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(272, 47%, 61%),
+ inset 0 1px 0 2px hsla(273, 38%, 65%, 0.85);
}
.network-type-font .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillRed.png) 7 7 7 7;
+ border-color: hsl(8, 49%, 52%);
+ background: linear-gradient(0deg, hsl(8, 72%, 61%), hsl(8, 100%, 69%));
}
.network-type-font.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillRed.png) 7 7 7 7;
+ background: hsl(8, 100%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(8, 72%, 61%),
+ inset 0 1px 0 2px hsla(8, 59%, 65%, 0.85);
}
.network-type-script .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillOrange.png) 7 7 7 7;
+ border-color: hsl(31, 49%, 52%);
+ background: linear-gradient(0deg, hsl(31, 72%, 61%), hsl(31, 100%, 69%));
}
.network-type-script.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillOrange.png) 7 7 7 7;
+ background: hsl(31, 100%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(31, 78%, 61%),
+ inset 0 1px 0 2px hsla(31, 64%, 65%, 0.85);
}
.network-type-xhr .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillYellow.png) 7 7 7 7;
+ border-color: hsl(53, 49%, 52%);
+ background: linear-gradient(0deg, hsl(53, 72%, 61%), hsl(53, 100%, 69%));
}
.network-type-xhr.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillYellow.png) 7 7 7 7;
+ background: hsl(53, 100%, 86%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(53, 72%, 61%),
+ inset 0 1px 0 2px hsla(54, 59%, 65%, 0.85);
}
.network-type-websocket .network-graph-bar {
- -webkit-border-image: url(Images/timelinePillGray.png) 7 7 7 7;
+ border-color: hsl(0, 0%, 65%);
+ background: linear-gradient(0deg, hsl(0, 0%, 73%), hsl(0, 0%, 78%));
}
.network-type-websocket.resource-cached .network-graph-bar {
- -webkit-border-image: url(Images/timelineHollowPillGray.png) 7 7 7 7;
+ background: hsl(0, 0%, 90%);
+ box-shadow: inset 0 1px 1px 0px rgba(255, 255, 255, 0.8),
+ inset 0 0 0 2px hsl(0, 0%, 73%),
+ inset 0 1px 0 2px hsla(0, 0%, 76%, 0.85);
}
.network-dim-cell {
diff --git a/Source/devtools/front_end/networkPanel.css b/Source/devtools/front_end/networkPanel.css
index e52a63b..cf7fa8f 100644
--- a/Source/devtools/front_end/networkPanel.css
+++ b/Source/devtools/front_end/networkPanel.css
@@ -51,6 +51,10 @@
display: block;
}
+.network.panel .panel-status-bar {
+ border-bottom: 1px solid rgb(179, 179, 179);
+}
+
.network.panel .sidebar {
position: absolute;
top: 0;
@@ -85,12 +89,7 @@
.network-item-view {
display: none;
- position: absolute;
background: white;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
}
.network-item-view.visible {
@@ -192,10 +191,11 @@
}
.resource-cookies-view.visible {
- display: block;
+ display: flex;
}
.resource-cookies-view .data-grid {
+ flex: auto;
height: 100%;
}
@@ -227,33 +227,33 @@
.resource-timing-view .network-timing-bar.blocking,
.resource-timing-view .network-timing-bar.proxy {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(242, 242, 194)), to(rgb(204, 204, 102)));
+ background-image: linear-gradient(to bottom, rgb(242, 242, 194), rgb(204, 204, 102));
border-left: 1px solid rgb(204, 204, 102);
}
.resource-timing-view .network-timing-bar.dns {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 242, 194)), to(rgb(102, 204, 102)));
+ background-image: linear-gradient(to bottom, rgb(194, 242, 194), rgb(102, 204, 102));
border-left: 1px solid rgb(102, 204, 102);
}
.resource-timing-view .network-timing-bar.connecting,
.resource-timing-view .network-timing-bar.ssl {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 242, 242)), to(rgb(102, 204, 204)));
+ background-image: linear-gradient(to bottom, rgb(194, 242, 242), rgb(102, 204, 204));
border-left: 1px solid rgb(102, 204, 204);
}
.resource-timing-view .network-timing-bar.sending {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 242)), to(rgb(102, 102, 204)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 242), rgb(102, 102, 204));
border-left: 1px solid rgb(102, 102, 204);
}
.resource-timing-view .network-timing-bar.waiting {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(242, 194, 242)), to(rgb(204, 102, 204)));
+ background-image: linear-gradient(to bottom, rgb(242, 194, 242), rgb(204, 102, 204));
border-left: 1px solid rgb(204, 102, 204);
}
.resource-timing-view .network-timing-bar.receiving {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(242, 194, 194)), to(rgb(204, 102, 102)));
+ background-image: linear-gradient(to bottom, rgb(242, 194, 194), rgb(204, 102, 102));
border-left: 1px solid rgb(204, 102, 102);
}
diff --git a/Source/devtools/front_end/overrides.css b/Source/devtools/front_end/overrides.css
index 993ad43..684cbba 100644
--- a/Source/devtools/front_end/overrides.css
+++ b/Source/devtools/front_end/overrides.css
@@ -30,7 +30,7 @@
.overrides-view .tabbed-pane {
- flex-direction: row;
+ flex-direction: row !important;
}
.overrides-view .tabbed-pane-header {
@@ -113,7 +113,7 @@
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
- padding-top: 3px;
+ margin-top: 10px;
}
.overrides-viewport {
@@ -132,9 +132,13 @@
height: 20px;
}
+.overrides-view label {
+ display: flex;
+ height: auto;
+}
+
.overrides-viewport label {
- display: block;
- margin-bottom: 5px;
+ margin-bottom: 10px;
}
.overrides-viewport table {
@@ -161,10 +165,13 @@
}
.overrides-sensors > label {
- display: block;
margin-bottom: 10px;
}
+.overrides-device, .overrides-viewport, .overrides-user-agent, .overrides-sensors {
+ flex: none !important;
+}
+
.overrides-sensors input {
text-align: right;
}
@@ -216,7 +223,7 @@
.overrides-view .overrides-footer::before {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
width: 10px;
height: 10px;
content: "";
diff --git a/Source/devtools/front_end/panelEnablerView.css b/Source/devtools/front_end/panelEnablerView.css
index 7274383..7e37cc8 100644
--- a/Source/devtools/front_end/panelEnablerView.css
+++ b/Source/devtools/front_end/panelEnablerView.css
@@ -90,7 +90,7 @@
color: rgb(6, 6, 6);
border: 1px solid rgb(165, 165, 165);
background-color: rgb(237, 237, 237);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
border-radius: 12px;
-webkit-appearance: none;
}
@@ -100,19 +100,19 @@
color: rgb(130, 130, 130);
border-color: rgb(212, 212, 212);
background-color: rgb(239, 239, 239);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(250, 250, 250)), to(rgb(235, 235, 235)));
+ background-image: linear-gradient(to bottom, rgb(250, 250, 250), rgb(235, 235, 235));
}
.panel-enabler-view button:active:not(.status-bar-item) {
background-color: rgb(215, 215, 215);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
.panel-enabler-view input[type="radio"] {
height: 17px;
width: 17px;
border: 1px solid rgb(165, 165, 165);
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
border-radius: 8px;
-webkit-appearance: none;
vertical-align: middle;
@@ -120,15 +120,15 @@
}
.panel-enabler-view input[type="radio"]:active:not(:disabled) {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
.panel-enabler-view input[type="radio"]:checked {
background: url(Images/radioDot.png) center no-repeat,
- -webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)));
+ linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223));
}
.panel-enabler-view input[type="radio"]:checked:active {
background: url(Images/radioDot.png) center no-repeat,
- -webkit-gradient(linear, left top, left bottom, from(rgb(194, 194, 194)), to(rgb(239, 239, 239)));
+ linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239));
}
diff --git a/Source/devtools/front_end/profilesPanel.css b/Source/devtools/front_end/profilesPanel.css
index 7ce4bac..fb38dda 100644
--- a/Source/devtools/front_end/profilesPanel.css
+++ b/Source/devtools/front_end/profilesPanel.css
@@ -34,6 +34,19 @@
position: relative;
}
+.profile-view .data-grid table.data {
+ background: white;
+}
+
+.profile-view .data-grid tr:not(.filler):hover td {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.profiles.panel .status-bar {
+ border-bottom: 1px solid rgb(202, 202, 202);
+ border-top: none;
+}
+
.profiles-status-bar {
background-color: rgb(236, 236, 236);
flex: 0 0 23px;
@@ -49,6 +62,11 @@
flex: auto;
}
+.profiles-sidebar-tree-box > ol {
+ overflow: auto;
+ flex: auto;
+}
+
.profile-sidebar-tree-item .icon {
content: url(Images/profileIcon.png);
}
@@ -61,7 +79,17 @@
content: url(Images/profileGroupIcon.png);
}
-.profile-view {
+.sidebar-tree-item .title-container > .save-link {
+ text-decoration: underline;
+ margin-left: auto;
+ display: none;
+}
+
+.sidebar-tree-item.selected .title-container > .save-link {
+ display: block;
+}
+
+.cpu-profile-view {
display: none;
overflow: hidden;
position: absolute;
@@ -71,57 +99,57 @@
bottom: 0;
}
-.profile-view.visible {
- display: block;
+.cpu-profile-view.visible {
+ display: flex;
}
-.profile-view .data-grid {
+.cpu-profile-view .data-grid {
border: none;
- height: 100%;
+ flex: auto;
}
-.profile-view .data-grid th.average-column {
+.cpu-profile-view .data-grid th.average-column {
text-align: center;
}
-.profile-view .data-grid td.average-column {
+.cpu-profile-view .data-grid td.average-column {
text-align: right;
}
-.profile-view .data-grid th.self-column {
+.cpu-profile-view .data-grid th.self-column {
text-align: center;
}
-.profile-view .data-grid td.self-column {
+.cpu-profile-view .data-grid td.self-column {
text-align: right;
}
-.profile-view .data-grid th.total-column {
+.cpu-profile-view .data-grid th.total-column {
text-align: center;
}
-.profile-view .data-grid td.total-column {
+.cpu-profile-view .data-grid td.total-column {
text-align: right;
}
-.profile-view .data-grid .calls-column {
+.cpu-profile-view .data-grid .calls-column {
text-align: center;
}
.profile-node-file {
float: right;
color: gray;
- margin-top: -1px;
}
.profile-warn-marker {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
- background-position: -201px -105px;
- padding-left: 14px;
+ background-size: 320px 144px;
+ background-position: -202px -107px;
width: 10px;
height: 10px;
vertical-align: -1px;
+ margin-right: 2px;
+ display: inline-block;
}
.data-grid tr.selected .profile-node-file {
@@ -159,6 +187,11 @@
.control-profiling {
-webkit-align-self: flex-start;
+ margin-right: 50px;
+}
+
+.profile-launcher-view > .profile-launcher-view-content > .load-profile {
+ margin-left: 20px;
}
.profile-launcher-view-content h1 {
@@ -181,11 +214,6 @@
margin-left: 22px;
}
-.panel-enabler-view.profile-launcher-view button:not(.status-bar-item) {
- color: rgb(6, 6, 6);
- margin: 0 0 16px;
-}
-
.profile-launcher-view-content button.running:not(.status-bar-item) {
color: red;
}
@@ -206,6 +234,7 @@
.profile-canvas-decoration .warning-icon-small {
margin-right: 4px;
}
+
.profile-canvas-decoration {
color: red;
margin: -14px 0 13px 22px;
@@ -215,3 +244,9 @@
.profile-canvas-decoration button {
margin: 0 0 0 10px !important;
}
+
+.profile-entry-info {
+ position: absolute;
+ top: 20px;
+ left: 20px;
+}
diff --git a/Source/devtools/front_end/resourceView.css b/Source/devtools/front_end/resourceView.css
index 30fa31e..7c75a6c 100644
--- a/Source/devtools/front_end/resourceView.css
+++ b/Source/devtools/front_end/resourceView.css
@@ -29,16 +29,11 @@
.resource-view {
display: none;
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
overflow: auto;
}
.resource-view.visible {
- display: block;
+ display: flex;
}
.resource-view.font {
diff --git a/Source/devtools/front_end/resourcesPanel.css b/Source/devtools/front_end/resourcesPanel.css
index 5ec05ce..6a9bcbe 100644
--- a/Source/devtools/front_end/resourcesPanel.css
+++ b/Source/devtools/front_end/resourcesPanel.css
@@ -34,6 +34,7 @@
.resources.panel .sidebar {
padding-left: 0;
z-index: 10;
+ display: block;
}
.resources.panel .sidebar li {
@@ -47,18 +48,18 @@
}
.resources.panel .sidebar li.selected .selection {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(162, 177, 207)), to(rgb(120, 138, 177)));
+ background-image: linear-gradient(to bottom, rgb(162, 177, 207), rgb(120, 138, 177));
border-top: 1px solid #979797;
height: 18px;
}
.resources.panel .sidebar :focus li.selected .selection {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(92, 147, 213)), to(rgb(21, 83, 170)));
+ background-image: linear-gradient(to bottom, rgb(92, 147, 213), rgb(21, 83, 170));
border-top: 1px solid rgb(68, 128, 200);
}
body.inactive .resources.panel .sidebar li.selected .selection {
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(180, 180, 180)), to(rgb(138, 138, 138)));
+ background-image: linear-gradient(to bottom, rgb(180, 180, 180), rgb(138, 138, 138));
border-top: 1px solid rgb(151, 151, 151);
}
@@ -82,6 +83,7 @@
bottom: 23px;
left: 0;
right: 0;
+ display: flex;
}
.resources-status-bar {
@@ -127,7 +129,7 @@
}
.storage-view.visible {
- display: block;
+ display: flex;
}
.storage-view {
@@ -136,7 +138,7 @@
.storage-view .data-grid:not(.inline) {
border: none;
- height: 100%;
+ flex: auto;
}
.storage-view .storage-table-error {
@@ -171,14 +173,14 @@
margin-top: -7px;
-webkit-user-select: none;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
.database-user-query::before,
.database-query-prompt::before,
.database-query-result::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
diff --git a/Source/devtools/front_end/sidebarPane.css b/Source/devtools/front_end/sidebarPane.css
index 84d9aab..906ccf0 100644
--- a/Source/devtools/front_end/sidebarPane.css
+++ b/Source/devtools/front_end/sidebarPane.css
@@ -29,7 +29,6 @@
.sidebar-pane {
position: relative;
- flex: auto;
}
.sidebar-pane > .body {
@@ -90,7 +89,7 @@
.sidebar-pane-title::before {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
float: left;
width: 11px;
@@ -104,7 +103,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.sidebar-pane-title::before {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -169,12 +168,10 @@
background-image: url(Images/paneRefreshButtons.png);
}
-.sidebar-pane-toolbar > label > input {
- vertical-align: -2px;
-}
-
.sidebar-pane-toolbar > label.scripts-callstack-async {
+ margin: auto;
margin-right: 5px;
+ display: flex;
}
.sidebar-pane-subtitle {
diff --git a/Source/devtools/front_end/sourcesPanel.css b/Source/devtools/front_end/sourcesPanel.css
index af8f122..d4a2dca 100644
--- a/Source/devtools/front_end/sourcesPanel.css
+++ b/Source/devtools/front_end/sourcesPanel.css
@@ -31,14 +31,10 @@
-webkit-mask-position: -256px 0;
}
-.scripts-pause-on-exceptions-status-bar-item.toggled-all .glyph {
+.scripts-pause-on-exceptions-status-bar-item.toggled-on .glyph {
background-color: rgb(66, 129, 235);
}
-.scripts-pause-on-exceptions-status-bar-item.toggled-uncaught .glyph {
- background-color: purple;
-}
-
.evaluate-snippet-status-bar-item .glyph {
-webkit-mask-position: -64px -48px;
}
@@ -47,12 +43,32 @@
background-color: rgb(66, 129, 235);
}
-#scripts-debug-toolbar {
- position: relative;
- margin-top: -1px;
- height: 24px;
- border-bottom: 1px solid rgb(202, 202, 202);
+.scripts-debug-toolbar {
+ position: absolute;
+ top: 0;
+ width: 100%;
background-color: rgb(236, 236, 236);
+ overflow: hidden;
+}
+
+.scripts-debug-toolbar-drawer {
+ flex: 0 0 46px;
+ -webkit-transition: margin-top 0.1s ease-in-out;
+ margin-top: -23px;
+ line-height: 23px;
+ padding-top: 22px;
+ border-bottom: 1px solid rgb(202, 202, 202);
+ background-color: white;
+ overflow: hidden;
+}
+
+.scripts-debug-toolbar-drawer.expanded {
+ margin-top: 0;
+}
+
+.scripts-debug-toolbar-drawer > label {
+ display: flex;
+ padding-left: 3px;
}
#scripts-editor-toolbar {
@@ -126,15 +142,10 @@
.script-view {
display: none;
overflow: hidden;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
}
.script-view.visible {
- display: block;
+ display: flex;
}
.dedicated-worker-item {
@@ -179,12 +190,6 @@
right: 0;
}
-div.sidebar-pane-stack#scripts-debug-sidebar-contents,
-#scripts-sidebar-stack-pane {
- top: 23px;
- overflow: auto;
-}
-
.workers-list > li {
overflow: hidden;
text-overflow: ellipsis;
@@ -229,15 +234,18 @@
.editor-container-unsaved-committed-changes-icon {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
background-position: -202px -107px;
}
+.sources-status-bar {
+ display: flex;
+}
+
.sources-status-bar div.resizer-widget {
width: 18px;
height: 16px;
-webkit-transform: rotate(90deg);
- cursor: ns-resize;
top: 2px;
right: 17px;
}
@@ -248,3 +256,12 @@
-webkit-transform: rotate(90deg);
right: 0 !important;
}
+
+.panel.sources .sidebar-pane-stack {
+ overflow: auto;
+}
+
+.threads-toolbar {
+ padding-left: 10px;
+ margin-top: -1px;
+}
diff --git a/Source/devtools/front_end/sourcesView.css b/Source/devtools/front_end/sourcesView.css
index 84a0200..413f26b 100644
--- a/Source/devtools/front_end/sourcesView.css
+++ b/Source/devtools/front_end/sourcesView.css
@@ -53,6 +53,11 @@
height: 20px;
}
+#sources-panel-sources-view .sources-status-bar .status-bar-item.status-bar-text {
+ margin: auto 0;
+ height: auto;
+}
+
#sources-panel-sources-view .source-frame-cursor-position {
-webkit-user-select: text;
}
@@ -65,7 +70,7 @@
background-color: rgb(66, 129, 235);
}
-#sources-panel-sources-view .drag-mask
+#sources-panel-sources-view .drag-mask {
background-color: transparent;
z-index: 1000;
}
diff --git a/Source/devtools/front_end/spectrum.css b/Source/devtools/front_end/spectrum.css
index e5aae8c..b9331fb 100644
--- a/Source/devtools/front_end/spectrum.css
+++ b/Source/devtools/front_end/spectrum.css
@@ -75,15 +75,15 @@
}
.spectrum-sat {
- background-image: -webkit-linear-gradient(left, white, rgba(204, 154, 129, 0));
+ background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));
}
.spectrum-val {
- background-image: -webkit-linear-gradient(bottom, black, rgba(204, 154, 129, 0));
+ background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));
}
.spectrum-hue {
- background: -webkit-linear-gradient(bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
+ background: linear-gradient(to top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
}
.spectrum-dragger {
diff --git a/Source/devtools/front_end/splitView.css b/Source/devtools/front_end/splitView.css
index eef9641..136b44d 100644
--- a/Source/devtools/front_end/splitView.css
+++ b/Source/devtools/front_end/splitView.css
@@ -32,8 +32,9 @@
.split-view-contents {
overflow: auto;
- cursor: default;
+ display: flex;
position: relative;
+ flex-direction: column;
}
.split-view-sidebar {
@@ -76,6 +77,10 @@
z-index: 1500;
}
+.split-view.split-view-no-resizer > .split-view-resizer {
+ display: none;
+}
+
.sidebar-overlay {
position: absolute;
top: 0;
diff --git a/Source/devtools/front_end/tabbedPane.css b/Source/devtools/front_end/tabbedPane.css
index 164e28f..1973cf3 100644
--- a/Source/devtools/front_end/tabbedPane.css
+++ b/Source/devtools/front_end/tabbedPane.css
@@ -30,6 +30,7 @@
.tabbed-pane {
flex: auto;
+ overflow: hidden;
}
.tabbed-pane-content {
@@ -37,6 +38,7 @@
overflow: auto;
flex: auto;
display: flex;
+ flex-direction: column;
}
.tabbed-pane-content.has-no-tabs {
diff --git a/Source/devtools/front_end/test-runner.html b/Source/devtools/front_end/test-runner.html
deleted file mode 100644
index bdbe4bb..0000000
--- a/Source/devtools/front_end/test-runner.html
+++ /dev/null
@@ -1,366 +0,0 @@
-<html>
-<script src="jsdifflib.js"></script>
-<script src="utilities.js"></script>
-<script src="DOMExtension.js"></script>
-<script src="treeoutline.js"></script>
-
-<link rel="stylesheet" type="text/css" href="inspector.css">
-<style>
-:focus {
- outline: none;
-}
-
-.failed {
- color: red;
-}
-
-.timeout {
- color: brown;
-}
-
-iframe {
- width: 0;
- height: 0;
- opacity: 0;
-}
-
-</style>
-
-<script>
-
-var layoutTestsServer = "http://localhost:8002/";
-var scannerServer = "http://localhost:8002/";
-var remoteDebuggingServer = "http://localhost:9222/";
-
-var tests = [];
-var skipList = [
- // HALT
- "inspector/console/console-api-on-call-frame.html",
-
- // FAILED
- "inspector/console/console-dir-global.html",
- "inspector/console/console-log-toString-object.html",
- "inspector/console/console-uncaught-exception-in-eval.html",
- "inspector/elements/edit-dom-actions.html",
- "inspector/elements/highlight-node-scaled.html",
- "inspector/elements/highlight-node-scroll.html",
- "inspector/elements/highlight-node.html",
- "inspector/elements/highlight-svg-root.html",
- "inspector/network-status-non-http.html",
- "inspector/storage-panel-dom-storage-update.html",
- "inspector/styles/inject-stylesheet.html",
- "inspector/styles/protocol-css-regions-commands.html",
- "inspector/styles/region-style-crash.html",
- "inspector/styles/styles-disable-then-enable-overriden-ua.html",
- "inspector/styles/styles-url-linkify.html",
- "inspector/styles/vendor-prefixes.html",
- "inspector/timeline/timeline-event-dispatch.html",
- "inspector/timeline/timeline-frames.html",
- "inspector/timeline/timeline-network-resource.html",
- "inspector/timeline/timeline-paint.html",
- "inspector/timeline/timeline-receive-response-event.html",
-
- // TIMEOUT
- "inspector/profiler/cpu-profiler-profiling-without-inspector.html",
- "inspector/profiler/heap-snapshot-inspect-dom-wrapper.html",
- "inspector/timeline/timeline-network-received-data.html",
-];
-var treeOutline = null;
-
-function run(debug)
-{
- if (window.runner && debug) {
- window.runner.continueDebugging();
- return;
- }
-
- if (window.testScannerIframe)
- document.body.removeChild(window.testScannerIframe);
-
- if (window.runner)
- window.runner.cleanup();
-
- window.testScannerIframe = document.createElement("iframe");
- window.testScannerIframe.src = scannerServer + "LayoutTests/http/tests/inspector/resources/test-scanner.html";
- document.body.appendChild(window.testScannerIframe);
- window.debug = debug;
-}
-
-function runTests()
-{
- document.getElementById("outline").removeChildren();
- treeOutline = new TreeOutline(document.getElementById("outline"));
-
- document.getElementById("pass").textContent = 0;
- document.getElementById("skip").textContent = 0;
- document.getElementById("fail").textContent = 0;
- document.getElementById("timeout").textContent = 0;
- document.getElementById("remaining").textContent = tests.length;
-
- runNextTest();
-}
-
-function interrupt()
-{
- tests = [];
-}
-
-function runNextTest(lastResult)
-{
- if (lastResult) {
- var element = document.getElementById(lastResult);
- element.textContent = parseInt(element.textContent) + 1;
-
- element = document.getElementById("remaining");
- element.textContent = parseInt(element.textContent) - 1;
- if (window.debug) {
- document.getElementById("debug").textContent = "Debug";
- return;
- }
- }
-
- var test;
- var filter = document.getElementById("filter").value;
- while (test = tests.shift()) {
- if (!filter || test[0].match(filter)) {
- new StandaloneTestRunner(layoutTestsServer + test[0], test[1], runNextTest.bind(null));
- return;
- }
- }
-}
-
-function StandaloneTestRunner(testPath, expected, next)
-{
- this._testPath = testPath;
- this._next = next;
- this._expected = expected;
- this._pendingMessages = [];
-
- this._treeElement = new TreeElement(testPath);
- treeOutline.appendChild(this._treeElement);
-
- for (var i = 0; !window.debug && i < skipList.length; ++i) {
- if (testPath.indexOf(skipList[i]) !== -1) {
- this._treeElement.title = testPath + ": SKIPPED";
- this._next("skip");
- return;
- }
- }
- window.runner = this;
- this._testPage = window.open("about:blank", "inspected", "width=800,height=600");
-
- window.remoteDebuggingHandshake = this._remoteDebuggingHandshake.bind(this);
- var script = document.createElement("script");
- script.src = remoteDebuggingServer + "json?jsonp=remoteDebuggingHandshake";
- document.head.appendChild(script);
-}
-
-StandaloneTestRunner.FrontendLocation = "inspector.html";
-
-StandaloneTestRunner.prototype = {
- _remoteDebuggingHandshake: function(data)
- {
- for (var i = 0; i < data.length; ++i) {
- if (data[i].url !== "about:blank")
- continue;
- this._debuggerURL = data[i].webSocketDebuggerUrl.replace("://", "=");
- this._navigateTestPage();
- break;
- }
- },
-
- _navigateTestPage: function()
- {
- this._testPage.location.href = this._testPath;
- var width = localStorage.getItem('inspectorWidth') || 600;
- var height = localStorage.getItem('inspectorHeight') || 400;
- var features = "width=" + Math.max(width , 600) + ",height=" + Math.max(height, 400);
- this._inspectorWindowLoading = window.open(StandaloneTestRunner.FrontendLocation + "?" + this._debuggerURL, "inspector", features);
- this._inspectorWindowLoading.dispatchStandaloneTestRunnerMessages = true;
-
- window.addEventListener('unload', this.cleanup.bind(this));
-
- if (!window.debug)
- this._watchDog = setTimeout(this._timeout.bind(this), 10000);
- },
-
- loadCompleted: function()
- {
- if (!window.debug) {
- this._loadCompleted(this);
- return;
- }
- document.getElementById("debug").textContent = "Continue";
- },
-
- continueDebugging: function()
- {
- this._loadCompleted();
- },
-
- _loadCompleted: function()
- {
- this._inspectorWindow = this._inspectorWindowLoading;
- for (var i = 0; i < this._pendingMessages.length; ++i)
- this._inspectorWindow.postMessage(this._pendingMessages[i], "*");
- this._pendingMessages = [];
- },
-
- closeWebInspector: function()
- {
- if (!window.debug)
- this._inspectorWindow.close();
- },
-
- notifyDone: function(actual)
- {
- if (this._done)
- return;
- this._done = true;
-
- if (!window.debug)
- this.cleanup()
-
- clearTimeout(this._watchDog);
-
- this._treeElement.onselect = this.onTreeElementSelect.bind(this);
-
- // TODO pavel is the RHS || condition wanted?
- if (actual === this._expected || actual === this._expected + "\n") {
- this._treeElement.title = this._testPath + ": SUCCESS";
- this._next("pass");
- return;
- }
-
- this._treeElement.title = this._testPath + ": FAILED";
- this._treeElement.listItemElement.classList.add("failed");
-
- var baseLines = difflib.stringAsLines(this._expected);
- var newLines = difflib.stringAsLines(actual);
- var sm = new difflib.SequenceMatcher(baseLines, newLines);
- var opcodes = sm.get_opcodes();
- var lastWasSeparator = false;
-
- for (var idx = 0; idx < opcodes.length; idx++) {
- var code = opcodes[idx];
- var change = code[0];
- var b = code[1];
- var be = code[2];
- var n = code[3];
- var ne = code[4];
- var rowCount = Math.max(be - b, ne - n);
- var topRows = [];
- var bottomRows = [];
- for (var i = 0; i < rowCount; i++) {
- if (change === "delete" || (change === "replace" && b < be)) {
- var lineNumber = b++;
- this._treeElement.appendChild(new TreeElement("- [" + lineNumber + "] " + baseLines[lineNumber]));
- }
-
- if (change === "insert" || (change === "replace" && n < ne)) {
- var lineNumber = n++;
- this._treeElement.appendChild(new TreeElement("+ [" + lineNumber + "] " + newLines[lineNumber]));
- }
-
- if (change === "equal") {
- b++;
- n++;
- }
- }
- }
-
- this._next("fail");
- },
-
- evaluateInWebInspector: function(callId, script)
- {
- if (this._inspectorWindow)
- this._inspectorWindow.postMessage(["evaluateForTest", callId, script], "*");
- else
- this._pendingMessages.push(["evaluateForTest", callId, script]);
- },
-
- _timeout: function()
- {
- this._treeElement.title = this._testPath + ": TIMEOUT";
- this._treeElement.listItemElement.classList.add("timeout");
- this._done = true;
- this.cleanup();
- this._next("timeout");
- },
-
- cleanup: function ()
- {
- localStorage.setItem('inspectorWidth', this._inspectorWindowLoading.outerWidth);
- localStorage.setItem('inspectorHeight', this._inspectorWindowLoading.outerHeight);
- this._inspectorWindowLoading.close();
- this._testPage.close();
- delete window.runner;
- },
-
- onTreeElementSelect: function ()
- {
- var baseEndSentinel = '/inspector/';
- var baseChars = this._testPath.indexOf(baseEndSentinel) + baseEndSentinel.length;
- if (baseChars > 0)
- document.getElementById("filter").value = this._testPath.substr(baseChars);
- },
-
- display: function() { }
-}
-
-function onMessageFromTestPage(event)
-{
- var signature = event.data;
- var method = signature.shift();
- if (method === "tests") {
- tests = signature[0];
- runTests();
- return;
- }
-
- if (window.runner)
- window.runner[method].apply(window.runner, signature);
-}
-
-function onload()
-{
- var queryParamsObject = {};
- var queryParams = window.location.search;
- if (!queryParams)
- return;
- var params = queryParams.substring(1).split("&");
- for (var i = 0; i < params.length; ++i) {
- var pair = params[i].split("=");
- queryParamsObject[pair[0]] = pair[1];
- }
- if ("filter" in queryParamsObject)
- document.getElementById("filter").value = queryParamsObject["filter"];
-}
-
-window.addEventListener("message", onMessageFromTestPage, true);
-
-</script>
-<body onload="onload()">
-This is a standalone test suite for inspector front-end. Here is how you run it:
-<ul>
-<li>Check out WebKit source tree: git clone http://git.chromium.org/external/Webkit.git</li>
-<li>Run "Tools/Scripts/new-run-webkit-httpd --root=. --port=8002 --server=start"</li>
-<li>Run Chrome Canary (ToT Chromium) with following flags: "--remote-debugging-port=9222 --user-data-dir=testProfile http://localhost:8002/Source/devtools/front_end/test-runner.html"</li>
-</ul>
-
-<button onclick="run()">Run</button>
-<button id="debug" onclick="run(true)">Debug</button>
-<button onclick="interrupt()">Interrupt</button>
-Filter: <input id="filter" type="text" size="40"></input><small><i>Click on results to load filter</i></small><br>
-
-<span>Passed: <span id="pass">0</span></span>
-<span>Failed: <span id="fail">0</span></span>
-<span>Timeout: <span id="timeout">0</span></span>
-<span>Skipped: <span id="skip">0</span></span>
-<span>Remaining: <span id="remaining">0</span><br>
-
-<ol id="outline" style="font-size: 12px !important" class="source-code outline-disclosure"></ol>
-
-</body>
-</html>
diff --git a/Source/devtools/front_end/timelinePanel.css b/Source/devtools/front_end/timelinePanel.css
index 60b66f2..37778cd 100644
--- a/Source/devtools/front_end/timelinePanel.css
+++ b/Source/devtools/front_end/timelinePanel.css
@@ -61,7 +61,11 @@
background-color: rgb(255, 255, 255);
}
-.timeline-frame-overview #timeline-overview-grid {
+.timeline-frames-view .timeline-records-counter {
+ display: none;
+}
+
+.timeline-frames-view #timeline-overview-grid {
display: none;
}
@@ -69,10 +73,9 @@
pointer-events: auto;
}
-.timeline-frame-overview .overview-grid-window,
-.timeline-frame-overview .overview-grid-dividers-background,
-.timeline-frame-overview .overview-grid-window-resizer {
- height: 15px;
+.timeline-frames-view .overview-grid-window,
+.timeline-frames-view .overview-grid-dividers-background {
+ height: 100%;
}
#timeline-overview-grid #resources-graphs {
@@ -89,10 +92,23 @@
overflow-x: hidden;
}
+.timeline-records-view {
+ overflow: hidden !important;
+}
+
.timeline-details-split {
flex: auto;
}
+.timeline-view {
+ flex: auto;
+}
+
+.timeline-view-stack {
+ flex: auto;
+ display: flex;
+}
+
#timeline-container .webkit-html-external-link,
#timeline-container .webkit-html-resource-link {
color: inherit;
@@ -139,7 +155,7 @@
display: inline-block;
-webkit-user-select: none;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
width: 10px;
height: 10px;
content: "";
@@ -151,7 +167,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.timeline-tree-item-expand-arrow {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -165,7 +181,7 @@
.timeline-expandable-arrow {
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
opacity: 0.5;
width: 10px;
height: 10px;
@@ -176,7 +192,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.timeline-expandable-arrow {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -214,7 +230,7 @@
.timeline-tree-item-warning {
display: block;
background-image: url(Images/statusbarButtonGlyphs.png);
- background-size: 320px 120px;
+ background-size: 320px 144px;
width: 10px;
height: 10px;
float: right;
@@ -229,7 +245,7 @@
@media (-webkit-min-device-pixel-ratio: 1.5) {
.timeline-tree-item-warning {
- background-image: url(Images/statusbarButtonGlyphs2x.png);
+ background-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -263,14 +279,17 @@
}
#timeline-overview-pane {
- flex: auto;
+ flex: 0 0 80px;
position: relative;
+ overflow: hidden;
}
#timeline-overview-container {
+ display: flex;
flex: auto;
position: relative;
height: 80px;
+ overflow: hidden;
}
#timeline-overview-container canvas {
@@ -406,7 +425,7 @@
}
#timeline-overview-sidebar .sidebar-tree {
- height: 100%;
+ flex: auto;
}
#timeline-overview-sidebar .sidebar-tree-item {
@@ -441,13 +460,13 @@
height: 24px;
margin: 0;
-webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
- -webkit-mask-size: 320px 120px;
+ -webkit-mask-size: 320px 144px;
background-color: black;
}
@media (-webkit-min-device-pixel-ratio: 1.5) {
#timeline-overview-sidebar .icon {
- -webkit-mask-image: url(Images/statusbarButtonGlyphs2x.png);
+ -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
}
} /* media */
@@ -479,21 +498,28 @@
bottom: 5px;
}
-#memory-counters-graph {
- top: 15px;
- border-right: 1px solid rgb(196, 196, 196);
-}
-
#memory-graphs-canvas-container {
overflow: hidden;
+ flex: auto;
+ position: relative;
}
-#memory-graphs-canvas-container.dom-counters .resources-dividers {
- top: 15px;
+#memory-counters-graph {
+ flex: auto;
+}
+
+#memory-graphs-canvas-container .memory-counter-marker {
+ position: absolute;
+ border-radius: 3px;
+ width: 5px;
+ height: 5px;
+ margin-left: -3px;
+ margin-top: -2px;
}
#memory-graphs-container .split-view-contents-first {
background-color: rgb(236, 236, 236);
+ overflow-y: hidden;
}
#memory-graphs-container .sidebar-tree-section {
@@ -505,9 +531,10 @@
white-space: nowrap;
}
-.memory-counter-sidebar-info .swatch{
+.memory-counter-sidebar-info .swatch {
background-image: none;
- border: 1px solid black;
+ border: 1px solid rgba(0,0,0,0.3);
+ opacity: 0.5;
}
.memory-counter-sidebar-info.bottom-border-visible {
@@ -523,8 +550,11 @@
}
#counter-values-bar {
+ flex: 0 0 18px;
border-bottom: solid 1px lightgray;
- cursor: ns-resize;
+ width: 100%;
+ overflow: hidden;
+ line-height: 18px;
}
.timeline .resources-event-divider {
@@ -572,7 +602,7 @@
color: black;
text-align: center;
padding-top: 3px;
- z-index: 350;
+ z-index: 220;
pointer-events: auto;
}
@@ -588,12 +618,13 @@
.timeline-utilization-strips {
height: 19px;
padding: 1px 0;
+ justify-content: center;
}
.timeline-utilization-strip {
- z-index: 350;
+ z-index: 250;
overflow: hidden;
- flex: auto;
+ flex: 0 1 12px;
position: relative;
}
@@ -653,15 +684,6 @@
float: right;
}
-.highlighted-timeline-record {
- -webkit-animation: "timeline_record_highlight" 2s 0s;
-}
-
-@-webkit-keyframes timeline_record_highlight {
- from {background-color: rgba(255, 255, 120, 1); }
- to { background-color: rgba(255, 255, 120, 0); }
-}
-
.timeline-filters-header {
flex: 0 0 23px;
overflow: hidden;
@@ -699,11 +721,12 @@
flex: 0 0 19px;
border-bottom: 1px solid rgb(202, 202, 202);
background-color: rgb(236, 236, 236);
- cursor: ns-resize;
white-space: nowrap;
display: flex;
color: rgb(92, 110, 129);
text-shadow: rgba(255, 255, 255, 0.75) 0 1px 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
.timeline-details-view-body {
@@ -804,7 +827,7 @@
flex: none;
position: relative;
margin: 8px 2px;
- width: 160px;
+ width: 200px;
}
.timeline-aggregated-info-legend > div {
@@ -816,3 +839,11 @@
.timeline-aggregated-info .pie-chart {
margin-left: 20px;
}
+
+.flame-chart-main-pane {
+ overflow: hidden;
+}
+
+.timeline-flamechart-view #timeline-overview-grid {
+ display: none;
+}
diff --git a/Source/devtools/front_end/treeoutline.js b/Source/devtools/front_end/treeoutline.js
index 822664c..67e3583 100644
--- a/Source/devtools/front_end/treeoutline.js
+++ b/Source/devtools/front_end/treeoutline.js
@@ -55,6 +55,7 @@
this._treeElementsMap = new Map();
/** @type {!Map.<!Object, boolean>} */
this._expandedStateMap = new Map();
+ this.element = listNode;
}
TreeOutline.prototype.setFocusable = function(focusable)
diff --git a/Source/devtools/front_end/utilities.js b/Source/devtools/front_end/utilities.js
index 6ad96c6..068e50f 100644
--- a/Source/devtools/front_end/utilities.js
+++ b/Source/devtools/front_end/utilities.js
@@ -80,6 +80,29 @@
}
/**
+ * @return {number}
+ */
+String.prototype.lineCount = function()
+{
+ var lineEndings = this.lineEndings();
+ return lineEndings.length;
+}
+
+/**
+ * @return {string}
+ */
+String.prototype.lineAt = function(lineNumber)
+{
+ var lineEndings = this.lineEndings();
+ var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0;
+ var lineEnd = lineEndings[lineNumber];
+ var lineContent = this.substring(lineStart, lineEnd);
+ if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === "\r")
+ lineContent = lineContent.substring(0, lineContent.length - 1);
+ return lineContent;
+}
+
+/**
* @param {string} chars
* @return {string}
*/
@@ -232,6 +255,17 @@
}
/**
+ * @return {number}
+ */
+String.prototype.hashCode = function()
+{
+ var result = 0;
+ for (var i = 0; i < this.length; ++i)
+ result = result * 3 + this.charCodeAt(i);
+ return result;
+}
+
+/**
* @param {string} a
* @param {string} b
* @return {number}
@@ -552,24 +586,28 @@
/**
* Return index of the leftmost element that is equal or greater
* than the specimen object. If there's no such element (i.e. all
- * elements are smaller than the specimen) returns array.length.
+ * elements are smaller than the specimen) returns right bound.
* The function works for sorted array.
+ * When specified, |left| (inclusive) and |right| (exclusive) indices
+ * define the search window.
*
* @param {!T} object
* @param {function(!T,!S):number=} comparator
+ * @param {number=} left
+ * @param {number=} right
* @return {number}
* @this {Array.<!S>}
* @template T,S
*/
- value: function(object, comparator)
+ value: function(object, comparator, left, right)
{
function defaultComparator(a, b)
{
return a < b ? -1 : (a > b ? 1 : 0);
}
comparator = comparator || defaultComparator;
- var l = 0;
- var r = this.length;
+ var l = left || 0;
+ var r = right !== undefined ? right : this.length;
while (l < r) {
var m = (l + r) >> 1;
if (comparator(object, this[m]) > 0)
@@ -586,24 +624,28 @@
/**
* Return index of the leftmost element that is greater
* than the specimen object. If there's no such element (i.e. all
- * elements are smaller than the specimen) returns array.length.
+ * elements are smaller or equal to the specimen) returns right bound.
* The function works for sorted array.
+ * When specified, |left| (inclusive) and |right| (exclusive) indices
+ * define the search window.
*
* @param {!T} object
* @param {function(!T,!S):number=} comparator
+ * @param {number=} left
+ * @param {number=} right
* @return {number}
* @this {Array.<!S>}
* @template T,S
*/
- value: function(object, comparator)
+ value: function(object, comparator, left, right)
{
function defaultComparator(a, b)
{
return a < b ? -1 : (a > b ? 1 : 0);
}
comparator = comparator || defaultComparator;
- var l = 0;
- var r = this.length;
+ var l = left || 0;
+ var r = right !== undefined ? right : this.length;
while (l < r) {
var m = (l + r) >> 1;
if (comparator(object, this[m]) >= 0)
@@ -675,29 +717,20 @@
var result = [];
var i = 0;
var j = 0;
- while (i < array1.length || j < array2.length) {
- if (i === array1.length) {
- result = result.concat(array2.slice(j));
- j = array2.length;
- } else if (j === array2.length) {
- result = result.concat(array1.slice(i));
- i = array1.length;
- } else {
- var compareValue = comparator(array1[i], array2[j])
- if (compareValue < 0) {
- if (mergeNotIntersect)
- result.push(array1[i]);
- ++i;
- } else if (compareValue > 0) {
- if (mergeNotIntersect)
- result.push(array2[j]);
- ++j;
- } else {
- result.push(array1[i]);
- ++i;
- ++j;
- }
- }
+ while (i < array1.length && j < array2.length) {
+ var compareValue = comparator(array1[i], array2[j]);
+ if (mergeNotIntersect || !compareValue)
+ result.push(compareValue <= 0 ? array1[i] : array2[j]);
+ if (compareValue <= 0)
+ i++;
+ if (compareValue >= 0)
+ j++;
+ }
+ if (mergeNotIntersect) {
+ while (i < array1.length)
+ result.push(array1[i++]);
+ while (j < array2.length)
+ result.push(array2[j++]);
}
return result;
}
@@ -831,11 +864,17 @@
}
String.standardFormatters = {
+ /**
+ * @return {number}
+ */
d: function(substitution)
{
return !isNaN(substitution) ? substitution : 0;
},
+ /**
+ * @return {number}
+ */
f: function(substitution, token)
{
if (substitution && token.precision > -1)
@@ -843,6 +882,9 @@
return !isNaN(substitution) ? substitution : (token.precision > -1 ? Number(0).toFixed(token.precision) : 0);
},
+ /**
+ * @return {string}
+ */
s: function(substitution)
{
return substitution;
@@ -1229,6 +1271,7 @@
/**
* @param {string} key
+ * @return {T|undefined}
*/
remove: function(key)
{
@@ -1274,6 +1317,7 @@
/**
* @param {string} key
+ * @return {T|undefined}
*/
get: function(key)
{
@@ -1319,9 +1363,9 @@
* @param {function(?string)=} callback
* @return {?string}
*/
-function loadXHR(url, async, callback)
+function loadXHR(url, async, callback)
{
- function onReadyStateChanged()
+ function onReadyStateChanged()
{
if (xhr.readyState !== XMLHttpRequest.DONE)
return;
@@ -1331,7 +1375,7 @@
return;
}
- callback(null);
+ callback(null);
}
var xhr = new XMLHttpRequest();
@@ -1341,7 +1385,7 @@
xhr.send(null);
if (!async) {
- if (xhr.status === 200)
+ if (xhr.status === 200)
return xhr.responseText;
return null;
}
@@ -1427,8 +1471,10 @@
xhr.send(null);
if (!xhr.responseText)
throw "empty response arrived for script '" + scriptName + "'";
- var sourceURL = WebInspector.ParsedURL.completeURL(window.location.href, scriptName);
- window.eval(xhr.responseText + "\n//# sourceURL=" + sourceURL);
+ var baseUrl = location.origin + location.pathname;
+ baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf("/"));
+ var sourceURL = baseUrl + "/" + scriptName;
+ self.eval(xhr.responseText + "\n//# sourceURL=" + sourceURL);
}
var loadScript = importScript;
@@ -1479,3 +1525,10 @@
this._outgoingCallback();
}
}
+
+/**
+ * @param {*} value
+ */
+function suppressUnused(value)
+{
+}
diff --git a/Source/devtools/generate_devtools_grd.target.darwin-arm.mk b/Source/devtools/generate_devtools_grd.target.darwin-arm.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.darwin-arm.mk
+++ b/Source/devtools/generate_devtools_grd.target.darwin-arm.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/generate_devtools_grd.target.darwin-mips.mk b/Source/devtools/generate_devtools_grd.target.darwin-mips.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.darwin-mips.mk
+++ b/Source/devtools/generate_devtools_grd.target.darwin-mips.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/generate_devtools_grd.target.darwin-x86.mk b/Source/devtools/generate_devtools_grd.target.darwin-x86.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.darwin-x86.mk
+++ b/Source/devtools/generate_devtools_grd.target.darwin-x86.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/generate_devtools_grd.target.linux-arm.mk b/Source/devtools/generate_devtools_grd.target.linux-arm.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.linux-arm.mk
+++ b/Source/devtools/generate_devtools_grd.target.linux-arm.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/generate_devtools_grd.target.linux-mips.mk b/Source/devtools/generate_devtools_grd.target.linux-mips.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.linux-mips.mk
+++ b/Source/devtools/generate_devtools_grd.target.linux-mips.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/generate_devtools_grd.target.linux-x86.mk b/Source/devtools/generate_devtools_grd.target.linux-x86.mk
index 25374f4..26e1db3 100644
--- a/Source/devtools/generate_devtools_grd.target.linux-x86.mk
+++ b/Source/devtools/generate_devtools_grd.target.linux-x86.mk
@@ -18,6 +18,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_elements_js_gyp)/concatenated_devtools_elements_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_resources_js_gyp)/concatenated_devtools_resources_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_network_js_gyp)/concatenated_devtools_network_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_extensions_js_gyp)/concatenated_devtools_extensions_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_scripts_js_gyp)/concatenated_devtools_scripts_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_timeline_js_gyp)/concatenated_devtools_timeline_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_profiles_js_gyp)/concatenated_devtools_profiles_js.stamp \
@@ -26,6 +27,7 @@
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_layers_js_gyp)/concatenated_devtools_layers_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_heap_snapshot_worker_js_gyp)/concatenated_heap_snapshot_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_script_formatter_worker_js_gyp)/concatenated_script_formatter_worker_js.stamp \
+ $(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_temp_storage_shared_worker_js_gyp)/concatenated_temp_storage_shared_worker_js.stamp \
$(call intermediates-dir-for,GYP,third_party_WebKit_Source_devtools_concatenated_devtools_css_gyp)/concatenated_devtools_css.stamp
### Rules for action "generate_devtools_grd":
@@ -33,9 +35,9 @@
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cssNamedFlows.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional2_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditionalCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/namedFlowOverflow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeader.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/glossyHeaderSelectedPressed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/programCounterBorder.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionEmpty.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionFit.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/regionOverset.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinner.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelineHollowPillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillBlue.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGray.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillGreen.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillOrange.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillPurple.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillRed.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/timelinePillYellow.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_devtools_grd.py $(gyp_shared_intermediate_dir)/resources/inspector/devtools.html $(gyp_shared_intermediate_dir)/resources/inspector/inspector.js $(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js $(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js $(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js $(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js $(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js $(gyp_shared_intermediate_dir)/resources/inspector/inspector.css $(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/accelerometer.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/auditsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breadcrumbList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/breakpointsList.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/buildSystemOnly.js $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/cmdevtools.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/cm/codemirror.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/dataGrid.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/elementsPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filter.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/filteredItemSelectionDialog.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/flameChart.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/heapProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/helpScreen.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/indexedDBViews.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/inspectorCommon.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/navigatorView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkLogView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/networkPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/overrides.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/panelEnablerView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/profilesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourceView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/resourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/revisionHistory.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/screencastView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sidebarPane.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/sourcesView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/spectrum.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/splitView.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/textPrompt.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/timelinePanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/canvasProfiler.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/layersPanel.css $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/addIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/applicationCache.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/back.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpoint_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/breakpointConditional_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/checker.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/cookie.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/database.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/databaseTable.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/deleteIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/domain.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/forward.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/fileSystem.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/frame.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutLeft.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/graphLabelCalloutRight.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDB.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBObjectStore.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/indexedDBIndex.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/localStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/navigationControls_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneAddButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneElementStateButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneFilterButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneRefreshButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/paneSettingsButtons.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverArrows.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/popoverBackground.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileGroupIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/profileSmallIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/radioDot.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceCSSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceDocumentIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourceJSIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcePlainIconSmall.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/resourcesTimeGraphIcon.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchNext.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/searchPrev.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/sessionStorage.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/settingsListRemove_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerActiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactive.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/spinnerInactiveSelected.gif $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarButtonGlyphs_2x.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerHorizontal.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/statusbarResizerVertical.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbActiveVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/thumbHoverVert.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/toolbarItemSelected.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackHoriz.png $(LOCAL_PATH)/third_party/WebKit/Source/devtools/front_end/Images/trackVert.png $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: third_party_WebKit_Source_devtools_devtools_gyp_generate_devtools_grd_target_generate_devtools_grd ($@)"
- $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/cssNamedFlows.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/devtools; python scripts/generate_devtools_grd.py "$(gyp_shared_intermediate_dir)/resources/inspector/devtools.html" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ElementsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ExtensionServer.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ResourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/NetworkPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/SourcesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TimelinePanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ProfilesPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/AuditsPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/LayersPanel.js" "$(gyp_shared_intermediate_dir)/resources/inspector/CodeMirrorTextEditor.js" "$(gyp_shared_intermediate_dir)/resources/inspector/HeapSnapshotWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/ScriptFormatterWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/TempStorageSharedWorker.js" "$(gyp_shared_intermediate_dir)/resources/inspector/inspector.css" "$(gyp_shared_intermediate_dir)/resources/inspector/devtools_extension_api.js" front_end/accelerometer.css front_end/auditsPanel.css front_end/breadcrumbList.css front_end/breakpointsList.css front_end/buildSystemOnly.js front_end/cm/cmdevtools.css front_end/cm/codemirror.css front_end/dataGrid.css front_end/elementsPanel.css front_end/filter.css front_end/filteredItemSelectionDialog.css front_end/flameChart.css front_end/heapProfiler.css front_end/helpScreen.css front_end/indexedDBViews.css front_end/inspectorCommon.css front_end/navigatorView.css front_end/networkLogView.css front_end/networkPanel.css front_end/overrides.css front_end/panelEnablerView.css front_end/profilesPanel.css front_end/resourceView.css front_end/resourcesPanel.css front_end/revisionHistory.css front_end/screencastView.css front_end/sidebarPane.css front_end/sourcesPanel.css front_end/sourcesView.css front_end/spectrum.css front_end/splitView.css front_end/textPrompt.css front_end/timelinePanel.css front_end/canvasProfiler.css front_end/layersPanel.css --images front_end/Images --output "$(gyp_shared_intermediate_dir)/devtools/devtools_resources.grd"
diff --git a/Source/devtools/protocol.json b/Source/devtools/protocol.json
index c45a38d..2ca7bd5 100644
--- a/Source/devtools/protocol.json
+++ b/Source/devtools/protocol.json
@@ -51,27 +51,6 @@
{
"domain": "Memory",
"hidden": true,
- "types": [
- {
- "id": "MemoryBlock",
- "type": "object",
- "properties": [
- { "name": "size", "type": "number", "optional": true, "description": "Size of the block in bytes if available" },
- { "name": "name", "type": "string", "description": "Unique name used to identify the component that allocated this block" },
- { "name": "children", "type": "array", "optional": true, "items": { "$ref": "MemoryBlock" }}
- ]
- },
- {
- "id": "HeapSnapshotChunk",
- "type": "object",
- "properties": [
- { "name": "strings", "type": "array", "items": { "type": "string" }, "description": "An array of strings that were found since last update." },
- { "name": "nodes", "type": "array", "items": { "type": "integer" }, "description": "An array of nodes that were found since last update." },
- { "name": "edges", "type": "array", "items": { "type": "integer" }, "description": "An array of edges that were found since last update." },
- { "name": "baseToRealNodeId", "type": "array", "items": { "type": "integer" }, "description": "An array of integers for nodeId remapping. Even nodeId has to be mapped to the following odd nodeId." }
- ]
- }
- ],
"commands": [
{
"name": "getDOMCounters",
@@ -81,14 +60,6 @@
{ "name": "jsEventListeners", "type": "integer" }
]
}
- ],
- "events": [
- {
- "name": "addNativeSnapshotChunk",
- "parameters": [
- { "name": "chunk", "$ref": "HeapSnapshotChunk", "description": "A chunk of the serialized the snapshot." }
- ]
- }
]
},
{
@@ -435,14 +406,16 @@
"name": "setGeolocationOverride",
"description": "Overrides the Geolocation Position or Error.",
"parameters": [
- { "name": "latitude", "type": "number", "optional": true, "description": "Mock longitude"},
- { "name": "longitude", "type": "number", "optional": true, "description": "Mock latitude"},
+ { "name": "latitude", "type": "number", "optional": true, "description": "Mock latitude"},
+ { "name": "longitude", "type": "number", "optional": true, "description": "Mock longitude"},
{ "name": "accuracy", "type": "number", "optional": true, "description": "Mock accuracy"}
- ]
+ ],
+ "redirect": "Geolocation"
},
{
"name": "clearGeolocationOverride",
- "description": "Clears the overriden Geolocation Position and Error."
+ "description": "Clears the overriden Geolocation Position and Error.",
+ "redirect": "Geolocation"
},
{
"name": "setDeviceOrientationOverride",
@@ -452,11 +425,13 @@
{ "name": "beta", "type": "number", "description": "Mock beta"},
{ "name": "gamma", "type": "number", "description": "Mock gamma"}
],
+ "redirect": "DeviceOrientation",
"hidden": true
},
{
"name": "clearDeviceOrientationOverride",
"description": "Clears the overridden Device Orientation.",
+ "redirect": "DeviceOrientation",
"hidden": true
},
{
@@ -1027,7 +1002,10 @@
{ "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
{ "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
{ "name": "connectionId", "type": "number", "description": "Physical connection id that was actually used for this request." },
+ { "name": "remoteIPAddress", "type": "string", "optional": true, "hidden": true, "description": "Remote IP address." },
+ { "name": "remotePort", "type": "integer", "optional": true, "hidden": true, "description": "Remote port."},
{ "name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache." },
+ { "name": "encodedDataLength", "type": "number", "optional": false, "description": "Total number of bytes received for this request so far." },
{ "name": "timing", "$ref": "ResourceTiming", "optional": true, "description": "Timing information for the given request." }
]
},
@@ -1222,7 +1200,8 @@
"description": "Fired when HTTP request has finished loading.",
"parameters": [
{ "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
- { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
+ { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
+ { "name": "encodedDataLength", "type": "number", "description": "Total number of bytes received for this request." }
]
},
{
@@ -1443,9 +1422,9 @@
"type": "object",
"description": "Data entry.",
"properties": [
- { "name": "key", "$ref": "Runtime.RemoteObject", "description": "Key." },
- { "name": "primaryKey", "$ref": "Runtime.RemoteObject", "description": "Primary key." },
- { "name": "value", "$ref": "Runtime.RemoteObject", "description": "Value." }
+ { "name": "key", "type": "string", "description": "JSON-stringified key object." },
+ { "name": "primaryKey", "type": "string", "description": "JSON-stringified primary key object." },
+ { "name": "value", "type": "string", "description": "JSON-stringified value object." }
]
},
{
@@ -1856,7 +1835,8 @@
{ "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." },
{ "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host.", "hidden": true },
{ "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements.", "hidden": true },
- { "name": "pseudoElements", "type": "array", "items": { "$ref": "Node" }, "optional": true, "description": "Pseudo elements associated with this node.", "hidden": true }
+ { "name": "pseudoElements", "type": "array", "items": { "$ref": "Node" }, "optional": true, "description": "Pseudo elements associated with this node.", "hidden": true },
+ { "name": "importedDocument", "$ref": "Node", "optional": true, "description": "Import document for the HTMLImport links." }
],
"description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
},
@@ -1870,7 +1850,7 @@
{ "name": "isAttribute", "type": "boolean", "description": "<code>EventListener</code>'s isAttribute." },
{ "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
{ "name": "handlerBody", "type": "string", "description": "Event handler function body." },
- { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." },
+ { "name": "location", "$ref": "Debugger.Location", "description": "Handler code location." },
{ "name": "sourceName", "type": "string", "optional": true, "description": "Source script URL." },
{ "name": "handler", "$ref": "Runtime.RemoteObject", "optional": true, "description": "Event handler function value." }
],
@@ -2399,14 +2379,6 @@
],
"description": "Called when a pseudo element is removed from an element.",
"hidden": true
- },
- {
- "name": "pseudoStateChanged",
- "parameters": [
- { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element whose pseudo state has changed." }
- ],
- "description": "Called when an element's <code>:active</code>, <code>:focus</code>, or <code>:hover</code> pseudo state is changed.",
- "hidden": true
}
]
},
@@ -2459,7 +2431,7 @@
{ "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
{ "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules matching the ancestor node in the style inheritance chain." }
],
- "description": "CSS rule collection for a single pseudo style."
+ "description": "Inherited CSS rule collection from ancestor node."
},
{
"id": "RuleMatch",
@@ -2489,15 +2461,6 @@
"description": "Selector list data."
},
{
- "id": "CSSStyleAttribute",
- "type": "object",
- "properties": [
- { "name": "name", "type": "string", "description": "DOM attribute name (e.g. \"width\")."},
- { "name": "style", "$ref": "CSSStyle", "description": "CSS style generated by the respective DOM attribute."}
- ],
- "description": "CSS style information for a DOM style attribute."
- },
- {
"id": "CSSStyleSheetHeader",
"type": "object",
"properties": [
@@ -2519,7 +2482,6 @@
"id": "CSSStyleSheetBody",
"type": "object",
"properties": [
- { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The stylesheet identifier."},
{ "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "Stylesheet resource URL."},
{ "name": "text", "type": "string", "optional": true, "description": "Stylesheet resource contents (if available)."}
],
@@ -2558,14 +2520,6 @@
]
},
{
- "id": "CSSPropertyInfo",
- "type": "object",
- "properties": [
- { "name": "name", "type": "string", "description": "Property name." },
- { "name": "longhands", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Longhand property names." }
- ]
- },
- {
"id": "CSSComputedStyleProperty",
"type": "object",
"properties": [
@@ -2581,9 +2535,7 @@
{ "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style." },
{ "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
{ "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)." },
- { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." },
- { "name": "width", "type": "string", "optional": true, "description": "The effective \"width\" property value from this style." },
- { "name": "height", "type": "string", "optional": true, "description": "The effective \"height\" property value from this style." }
+ { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." }
],
"description": "CSS style representation."
},
@@ -2615,57 +2567,14 @@
"description": "CSS media query descriptor."
},
{
- "id": "SelectorProfileEntry",
- "type": "object",
- "properties": [
- { "name": "selector", "type": "string", "description": "CSS selector of the corresponding rule." },
- { "name": "url", "type": "string", "description": "URL of the resource containing the corresponding rule." },
- { "name": "lineNumber", "type": "integer", "description": "Selector line number in the resource for the corresponding rule." },
- { "name": "time", "type": "number", "description": "Total time this rule handling contributed to the browser running time during profiling (in milliseconds)." },
- { "name": "hitCount", "type": "integer", "description": "Number of times this rule was considered a candidate for matching against DOM elements." },
- { "name": "matchCount", "type": "integer", "description": "Number of times this rule actually matched a DOM element." }
- ],
- "description": "CSS selector profile entry."
- },
- {
- "id": "SelectorProfile",
- "type": "object",
- "properties": [
- { "name": "totalTime", "type": "number", "description": "Total processing time for all selectors in the profile (in milliseconds)." },
- { "name": "data", "type": "array", "items": { "$ref": "SelectorProfileEntry" }, "description": "CSS selector profile entries." }
- ]
- },
- {
- "id": "Region",
- "type": "object",
- "properties": [
- { "name": "regionOverset", "type": "string", "enum": ["overset", "fit", "empty"], "description": "The \"overset\" attribute of a Named Flow." },
- { "name": "nodeId", "$ref": "DOM.NodeId", "description": "The corresponding DOM node id." }
- ],
- "description": "This object represents a region that flows from a Named Flow.",
- "hidden": true
- },
- {
- "id": "NamedFlow",
- "type": "object",
- "properties": [
- { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id." },
- { "name": "name", "type": "string", "description": "Named Flow identifier." },
- { "name": "overset", "type": "boolean", "description": "The \"overset\" attribute of a Named Flow." },
- { "name": "content", "type": "array", "items": { "$ref": "DOM.NodeId" }, "description": "An array of nodes that flow into the Named Flow." },
- { "name": "regions", "type": "array", "items": { "$ref": "Region" }, "description": "An array of regions associated with the Named Flow." }
- ],
- "description": "This object represents a Named Flow.",
- "hidden": true
- },
- {
"id": "PlatformFontUsage",
"type": "object",
"properties": [
{ "name": "familyName", "type": "string", "description": "Font's family name reported by platform."},
{ "name": "glyphCount", "type": "number", "description": "Amount of glyphs that were rendered with this font."}
],
- "description": "Information about amount of glyphs that were rendered with given font."
+ "description": "Information about amount of glyphs that were rendered with given font.",
+ "hidden": true
}
],
"commands": [
@@ -2726,13 +2635,6 @@
"hidden": true
},
{
- "name": "getAllStyleSheets",
- "returns": [
- { "name": "headers", "type": "array", "items": { "$ref": "CSSStyleSheetHeader" }, "description": "Descriptor entries for all available stylesheets." }
- ],
- "description": "Returns metainfo entries for all known stylesheets."
- },
- {
"name": "getStyleSheet",
"parameters": [
{ "name": "styleSheetId", "$ref": "StyleSheetId" }
@@ -2761,17 +2663,6 @@
"description": "Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet."
},
{
- "name": "setStyleText",
- "parameters": [
- { "name": "styleId", "$ref": "CSSStyleId" },
- { "name": "text", "type": "string" }
- ],
- "returns": [
- { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the text modification." }
- ],
- "description": "Updates the CSSStyleDeclaration text."
- },
- {
"name": "setPropertyText",
"parameters": [
{ "name": "styleId", "$ref": "CSSStyleId" },
@@ -2785,18 +2676,6 @@
"description": "Sets the new <code>text</code> for a property in the respective style, at offset <code>propertyIndex</code>. If <code>overwrite</code> is <code>true</code>, a property at the given offset is overwritten, otherwise inserted. <code>text</code> entirely replaces the property <code>name: value</code>."
},
{
- "name": "toggleProperty",
- "parameters": [
- { "name": "styleId", "$ref": "CSSStyleId" },
- { "name": "propertyIndex", "type": "integer" },
- { "name": "disable", "type": "boolean" }
- ],
- "returns": [
- { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property toggling." }
- ],
- "description": "Toggles the property in the respective style, at offset <code>propertyIndex</code>. The <code>disable</code> parameter denotes whether the property should be disabled (i.e. removed from the style declaration). If <code>disable == false</code>, the property gets put back into its original place in the style declaration."
- },
- {
"name": "setRuleSelector",
"parameters": [
{ "name": "ruleId", "$ref": "CSSRuleId" },
@@ -2819,30 +2698,12 @@
"description": "Creates a new empty rule with the given <code>selector</code> in a special \"inspector\" stylesheet in the owner document of the context node."
},
{
- "name": "getSupportedCSSProperties",
- "returns": [
- { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSPropertyInfo" }, "description": "Supported property metainfo." }
- ],
- "description": "Returns all supported CSS property names."
- },
- {
"name": "forcePseudoState",
"parameters": [
{ "name": "nodeId", "$ref": "DOM.NodeId", "description": "The element id for which to force the pseudo state." },
{ "name": "forcedPseudoClasses", "type": "array", "items": { "type": "string", "enum": ["active", "focus", "hover", "visited"] }, "description": "Element pseudo classes to force when computing the element's style." }
],
"description": "Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser."
- },
- {
- "name": "getNamedFlowCollection",
- "parameters": [
- { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id for which to get the Named Flow Collection." }
- ],
- "returns": [
- { "name": "namedFlows", "type": "array", "items": { "$ref": "NamedFlow" }, "description": "An array containing the Named Flows in the document." }
- ],
- "description": "Returns the Named Flows from the document.",
- "hidden": true
}
],
"events": [
@@ -2870,39 +2731,6 @@
{ "name": "styleSheetId", "$ref": "StyleSheetId", "description": "Identifier of the removed stylesheet." }
],
"description": "Fired whenever an active document stylesheet is removed."
- },
- {
- "name": "namedFlowCreated",
- "parameters": [
- { "name": "namedFlow", "$ref": "NamedFlow", "description": "The new Named Flow." }
- ],
- "description": "Fires when a Named Flow is created.",
- "hidden": true
- },
- {
- "name": "namedFlowRemoved",
- "parameters": [
- { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id." },
- { "name": "flowName", "type": "string", "description": "Identifier of the removed Named Flow." }
- ],
- "description": "Fires when a Named Flow is removed: has no associated content nodes and regions.",
- "hidden": true
- },
- {
- "name": "regionLayoutUpdated",
- "parameters": [
- { "name": "namedFlow", "$ref": "NamedFlow", "description": "The Named Flow whose layout may have changed." }
- ],
- "description": "Fires when a Named Flow's layout may have changed.",
- "hidden": true
- },
- {
- "name": "regionOversetChanged",
- "parameters": [
- { "name": "namedFlow", "$ref": "NamedFlow", "description": "The Named Flow containing the regions whose regionOverset values changed." }
- ],
- "description": "Fires if any of the regionOverset values changed in a Named Flow's region chain.",
- "hidden": true
}
]
},
@@ -2911,14 +2739,16 @@
"description": "Timeline provides its clients with instrumentation records that are generated during the page runtime. Timeline instrumentation can be started and stopped using corresponding commands. While timeline is started, it is generating timeline event records.",
"types": [
{
- "id": "DOMCounters",
+ "id": "Counters",
"type": "object",
"properties": [
- { "name": "documents", "type": "integer" },
- { "name": "nodes", "type": "integer" },
- { "name": "jsEventListeners", "type": "integer" }
+ { "name": "documents", "type": "integer", "optional": true },
+ { "name": "nodes", "type": "integer", "optional": true },
+ { "name": "jsEventListeners", "type": "integer", "optional": true },
+ { "name": "jsHeapSizeUsed", "type": "number", "optional": true, "description": "Currently used size of JS heap." },
+ { "name": "gpuMemoryUsedKB", "type": "number", "optional": true, "description": "Current GPU memory usage in kilobytes." }
],
- "description": "Current values of DOM counters.",
+ "description": "Current values of counters.",
"hidden": true
},
{
@@ -2926,11 +2756,15 @@
"type": "object",
"properties": [
{ "name": "type", "type": "string", "description": "Event type." },
- { "name": "thread", "type": "string", "optional": true, "description": "If present, identifies the thread that produced the event.", "hidden": true },
{ "name": "data", "type": "object", "description": "Event data." },
+ { "name": "startTime", "type": "number", "description": "Start time." },
+ { "name": "endTime", "type": "number", "optional": true, "description": "End time." },
{ "name": "children", "type": "array", "optional": true, "items": { "$ref": "TimelineEvent" }, "description": "Nested records." },
- { "name": "counters", "$ref": "DOMCounters", "optional": true, "hidden": true, "description": "Current values of DOM counters." },
- { "name": "usedHeapSize", "type": "integer", "optional": true, "hidden": true, "description": "Current size of JS heap." }
+ { "name": "thread", "type": "string", "optional": true, "hidden": true, "description": "If present, identifies the thread that produced the event." },
+ { "name": "counters", "$ref": "Counters", "optional": true, "hidden": true, "description": "Current values of counters." },
+ { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "hidden": true, "description": "Stack trace." },
+ { "name": "frameId", "type": "string", "optional": true, "hidden": true, "description": "Unique identifier of the frame within the page that the event relates to." },
+ { "name": "usedHeapSizeDelta", "type": "integer", "optional": true, "hidden": true, "description": "JS heap size change." }
],
"description": "Timeline record contains information about the recorded activity."
}
@@ -2949,7 +2783,7 @@
"parameters": [
{ "name": "maxCallStackDepth", "optional": true, "type": "integer", "description": "Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5." },
{ "name": "bufferEvents", "optional": true, "type": "boolean", "hidden": true, "description": "Whether instrumentation events should be buffered and returned upon <code>stop</code> call." },
- { "name": "includeDomCounters", "optional": true, "type": "boolean", "hidden": true, "description": "Whether DOM counters data should be included into timeline events." },
+ { "name": "includeCounters", "optional": true, "type": "boolean", "hidden": true, "description": "Whether counters data should be included into timeline events." },
{ "name": "includeGPUEvents", "optional": true, "type": "boolean", "hidden": true, "description": "Whether events from GPU process should be collected." }
],
"description": "Starts capturing instrumentation events."
@@ -3486,15 +3320,6 @@
"hidden": true,
"types": [
{
- "id": "ProfileHeader",
- "type": "object",
- "description": "Profile header.",
- "properties": [
- { "name": "title", "type": "string", "description": "Profile title." },
- { "name": "uid", "type": "integer", "description": "Unique identifier of the profile." }
- ]
- },
- {
"id": "CPUProfileNode",
"type": "object",
"description": "CPU Profile node. Holds callsite information, execution statistics and child nodes.",
@@ -3521,11 +3346,6 @@
{ "name": "endTime", "type": "number", "description": "Profiling end time in seconds." },
{ "name": "samples", "optional": true, "type": "array", "items": { "type": "integer" }, "description": "Ids of samples top nodes." }
]
- },
- {
- "id": "HeapSnapshotObjectId",
- "type": "string",
- "description": "Heap snashot object id."
}
],
"commands": [
@@ -3548,37 +3368,29 @@
{
"name": "stop",
"returns": [
- { "name": "header", "$ref": "ProfileHeader", "description": "The header of the recorded profile."}
+ { "name": "profile", "$ref": "CPUProfile", "description": "Recorded profile." }
]
- },
- {
- "name": "getCPUProfile",
- "parameters": [
- { "name": "uid", "type": "integer" }
- ],
- "returns": [
- { "name": "profile", "$ref": "CPUProfile" }
- ]
- },
- {
- "name": "removeProfile",
- "parameters": [
- { "name": "uid", "type": "integer" }
- ]
- },
- {
- "name": "clearProfiles"
}
],
"events": [
{
- "name": "addProfileHeader",
+ "name": "consoleProfileStarted",
"parameters": [
- { "name": "header", "$ref": "ProfileHeader" }
- ]
+ { "name": "id", "type": "string" },
+ { "name": "location", "$ref": "Debugger.Location", "description": "Location of console.profile()." },
+ { "name": "title", "type": "string", "optional": true, "description": "Profile title passed as argument to console.profile()." }
+
+ ],
+ "description": "Sent when new profile recodring is started using console.profile() call."
},
{
- "name": "resetProfiles"
+ "name": "consoleProfileFinished",
+ "parameters": [
+ { "name": "id", "type": "string" },
+ { "name": "location", "$ref": "Debugger.Location", "description": "Location of console.profileEnd()." },
+ { "name": "profile", "$ref": "CPUProfile" },
+ { "name": "title", "type": "string", "optional": true, "description": "Profile title passed as argunet to console.profile()." }
+ ]
}
]
},
@@ -3587,19 +3399,9 @@
"hidden": true,
"types": [
{
- "id": "ProfileHeader",
- "type": "object",
- "description": "Profile header.",
- "properties": [
- { "name": "title", "type": "string", "description": "Profile title." },
- { "name": "uid", "type": "integer", "description": "Unique identifier of the profile." },
- { "name": "maxJSObjectId", "type": "integer", "optional": true, "description": "Last seen JS object Id." }
- ]
- },
- {
"id": "HeapSnapshotObjectId",
"type": "string",
- "description": "Heap snashot object id."
+ "description": "Heap snapshot object id."
}
],
"commands": [
@@ -3610,7 +3412,10 @@
"name": "disable"
},
{
- "name": "startTrackingHeapObjects"
+ "name": "startTrackingHeapObjects",
+ "parameters": [
+ { "name": "trackAllocations", "type": "boolean", "optional": true }
+ ]
},
{
"name": "stopTrackingHeapObjects",
@@ -3620,21 +3425,6 @@
},
{
- "name": "getHeapSnapshot",
- "parameters": [
- { "name": "uid", "type": "integer" }
- ]
- },
- {
- "name": "removeProfile",
- "parameters": [
- { "name": "uid", "type": "integer" }
- ]
- },
- {
- "name": "clearProfiles"
- },
- {
"name": "takeHeapSnapshot",
"parameters": [
{ "name": "reportProgress", "type": "boolean", "optional": true, "description": "If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken." }
@@ -3665,15 +3455,8 @@
],
"events": [
{
- "name": "addProfileHeader",
- "parameters": [
- { "name": "header", "$ref": "ProfileHeader" }
- ]
- },
- {
"name": "addHeapSnapshotChunk",
"parameters": [
- { "name": "uid", "type": "integer" },
{ "name": "chunk", "type": "string" }
]
},
@@ -3684,7 +3467,8 @@
"name": "reportHeapSnapshotProgress",
"parameters": [
{ "name": "done", "type": "integer" },
- { "name": "total", "type": "integer" }
+ { "name": "total", "type": "integer" },
+ { "name": "finished", "type": "boolean", "optional": true }
]
},
{
@@ -4139,7 +3923,7 @@
{ "name": "minDuration", "type": "number", "optional": true, "description": "The minimum duration (in seconds) to replay the snapshot." }
],
"returns": [
- { "name": "timings", "type": "array", "items": { "$ref": "PaintProfile" }, "description": "The array of paint profilers, one per run." }
+ { "name": "timings", "type": "array", "items": { "$ref": "PaintProfile" }, "description": "The array of paint profiles, one per run." }
]
},
{
@@ -4172,12 +3956,51 @@
]
},
{
+ "domain": "Geolocation",
+ "hidden": true,
+ "commands": [
+ {
+ "name": "setGeolocationOverride",
+ "description": "Overrides the Geolocation Position or Error.",
+ "parameters": [
+ { "name": "latitude", "type": "number", "optional": true, "description": "Mock latitude"},
+ { "name": "longitude", "type": "number", "optional": true, "description": "Mock longitude"},
+ { "name": "accuracy", "type": "number", "optional": true, "description": "Mock accuracy"}
+ ]
+ },
+ {
+ "name": "clearGeolocationOverride",
+ "description": "Clears the overriden Geolocation Position and Error."
+ }
+ ]
+ },
+ {
+ "domain": "DeviceOrientation",
+ "hidden": true,
+ "commands": [
+ {
+ "name": "setDeviceOrientationOverride",
+ "description": "Overrides the Device Orientation.",
+ "parameters": [
+ { "name": "alpha", "type": "number", "description": "Mock alpha"},
+ { "name": "beta", "type": "number", "description": "Mock beta"},
+ { "name": "gamma", "type": "number", "description": "Mock gamma"}
+ ]
+ },
+ {
+ "name": "clearDeviceOrientationOverride",
+ "description": "Clears the overridden Device Orientation."
+ }
+ ]
+ },
+ {
"domain": "Tracing",
"hidden": true,
"commands": [
{
"name": "start",
"description": "Start trace events collection.",
+ "async": true,
"parameters": [
{ "name": "categories", "type": "string", "description": "Category/tag filter" },
{ "name": "options", "type": "string", "description": "Tracing options" }
@@ -4203,5 +4026,44 @@
"handlers": ["browser", "frontend"]
}
]
+ },
+ {
+ "domain": "Power",
+ "hidden": true,
+ "types": [
+ {
+ "id": "PowerEvent",
+ "type": "object",
+ "properties": [
+ { "name": "type", "type": "string", "description": "Power Event Type." },
+ { "name": "timestamp", "type": "number", "description": "Power Event Time, in milliseconds." },
+ { "name": "value", "type": "number", "description": "Power Event Value." }
+ ],
+ "description": "PowerEvent item"
+ }
+ ],
+ "commands": [
+ {
+ "name": "start",
+ "description": "Start power events collection.",
+ "parameters": [],
+ "handlers": ["browser", "frontend"]
+ },
+ {
+ "name": "end",
+ "description": "Stop power events collection.",
+ "parameters": [],
+ "handlers": ["browser", "frontend"]
+ }
+ ],
+ "events": [
+ {
+ "name": "dataAvailable",
+ "parameters": [
+ {"name": "value", "type": "array", "items": { "$ref": "PowerEvent" }, "description": "List of power events." }
+ ],
+ "handlers": ["browser", "frontend"]
+ }
+ ]
}]
}
diff --git a/Source/devtools/scripts/__init__.py b/Source/devtools/scripts/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/devtools/scripts/__init__.py
diff --git a/Source/devtools/scripts/compile_frontend.py b/Source/devtools/scripts/compile_frontend.py
index 14bcc14..dcf2fb9 100755
--- a/Source/devtools/scripts/compile_frontend.py
+++ b/Source/devtools/scripts/compile_frontend.py
@@ -35,375 +35,33 @@
import subprocess
import sys
import tempfile
+try:
+ import json
+except ImportError:
+ import simplejson as json
scripts_path = os.path.dirname(os.path.abspath(__file__))
devtools_path = os.path.dirname(scripts_path)
inspector_path = os.path.dirname(devtools_path) + "/core/inspector"
devtools_frontend_path = devtools_path + "/front_end"
-protocol_externs_path = devtools_frontend_path + "/protocol_externs.js"
+protocol_externs_file = devtools_frontend_path + "/protocol_externs.js"
webgl_rendering_context_idl_path = os.path.dirname(devtools_path) + "/core/html/canvas/WebGLRenderingContext.idl"
+closure_compiler_jar = scripts_path + "/closure/compiler.jar"
+closure_runner_jar = scripts_path + "/compiler-runner/closure-runner.jar"
+jsdoc_validator_jar = scripts_path + "/jsdoc-validator/jsdoc-validator.jar"
+java_exec = "java -Xms1024m -server -XX:+TieredCompilation"
-generate_protocol_externs.generate_protocol_externs(protocol_externs_path, devtools_path + "/protocol.json")
+generate_protocol_externs.generate_protocol_externs(protocol_externs_file, devtools_path + "/protocol.json")
jsmodule_name_prefix = "jsmodule_"
-modules = [
- {
- "name": "common",
- "dependencies": [],
- "sources": [
- "Color.js",
- "DOMExtension.js",
- "Object.js",
- "ParsedURL.js",
- "Progress.js",
- "Settings.js",
- "TextRange.js",
- "UIString.js",
- "UserMetrics.js",
- "utilities.js",
- "Geometry.js",
- ]
- },
- {
- "name": "sdk",
- "dependencies": ["common"],
- "sources": [
- "ApplicationCacheModel.js",
- "CompilerScriptMapping.js",
- "ConsoleModel.js",
- "ContentProvider.js",
- "ContentProviderBasedProjectDelegate.js",
- "ContentProviders.js",
- "CookieParser.js",
- "CSSFormatter.js",
- "CSSMetadata.js",
- "CSSStyleModel.js",
- "CSSStyleSheetMapping.js",
- "BreakpointManager.js",
- "Database.js",
- "DOMAgent.js",
- "DOMStorage.js",
- "DebuggerModel.js",
- "DebuggerScriptMapping.js",
- "FileManager.js",
- "FileSystemMapping.js",
- "FileSystemModel.js",
- "FileSystemProjectDelegate.js",
- "FileUtils.js",
- "HAREntry.js",
- "IndexedDBModel.js",
- "InspectorBackend.js",
- "IsolatedFileSystemManager.js",
- "IsolatedFileSystem.js",
- "JavaScriptFormatter.js",
- "Linkifier.js",
- "NetworkLog.js",
- "NetworkUISourceCodeProvider.js",
- "OverridesSupport.js",
- "PresentationConsoleMessageHelper.js",
- "RuntimeModel.js",
- "SASSSourceMapping.js",
- "Script.js",
- "ScriptFormatter.js",
- "ScriptFormatterWorker.js",
- "ScriptSnippetModel.js",
- "SimpleWorkspaceProvider.js",
- "SnippetStorage.js",
- "SourceMapping.js",
- "StylesSourceMapping.js",
- "TempFile.js",
- "TimelineManager.js",
- "RemoteObject.js",
- "Resource.js",
- "DefaultScriptMapping.js",
- "ResourceScriptMapping.js",
- "LiveEditSupport.js",
- "ResourceTreeModel.js",
- "ResourceType.js",
- "ResourceUtils.js",
- "SourceMap.js",
- "TracingAgent.js",
- "NetworkManager.js",
- "NetworkRequest.js",
- "UISourceCode.js",
- "Workspace.js",
- "WorkspaceController.js",
- ]
- },
- {
- "name": "ui",
- "dependencies": ["common"],
- "sources": [
- "Checkbox.js",
- "ContextMenu.js",
- "CompletionDictionary.js",
- "DOMSyntaxHighlighter.js",
- "DataGrid.js",
- "Dialog.js",
- "DockController.js",
- "Drawer.js",
- "EmptyView.js",
- "FilterBar.js",
- "GoToLineDialog.js",
- "HelpScreen.js",
- "InspectorView.js",
- "KeyboardShortcut.js",
- "OverviewGrid.js",
- "Panel.js",
- "Placard.js",
- "Popover.js",
- "ProgressIndicator.js",
- "PropertiesSection.js",
- "SearchableView.js",
- "Section.js",
- "SidebarPane.js",
- "SidebarTreeElement.js",
- "ShortcutsScreen.js",
- "ShowMoreDataGridNode.js",
- "SidebarOverlay.js",
- "SoftContextMenu.js",
- "Spectrum.js",
- "SplitView.js",
- "SidebarView.js",
- "StatusBarButton.js",
- "SuggestBox.js",
- "TabbedPane.js",
- "TextEditor.js",
- "TextPrompt.js",
- "TextUtils.js",
- "TimelineGrid.js",
- "UIUtils.js",
- "View.js",
- "ViewportControl.js",
- "treeoutline.js",
- ]
- },
- {
- "name": "components",
- "dependencies": ["sdk", "ui"],
- "sources": [
- "AdvancedSearchController.js",
- "HandlerRegistry.js",
- "ConsoleMessage.js",
- "CookiesTable.js",
- "DOMBreakpointsSidebarPane.js",
- "DOMPresentationUtils.js",
- "ElementsTreeOutline.js",
- "FontView.js",
- "ImageView.js",
- "NativeBreakpointsSidebarPane.js",
- "InspectElementModeController.js",
- "ObjectPopoverHelper.js",
- "ObjectPropertiesSection.js",
- "ScreencastView.js",
- "SourceFrame.js",
- "ResourceView.js",
- ]
- },
- {
- "name": "elements",
- "dependencies": ["components"],
- "sources": [
- "CSSNamedFlowCollectionsView.js",
- "CSSNamedFlowView.js",
- "ElementsPanel.js",
- "ElementsPanelDescriptor.js",
- "EventListenersSidebarPane.js",
- "MetricsSidebarPane.js",
- "OverridesView.js",
- "PlatformFontsSidebarPane.js",
- "PropertiesSidebarPane.js",
- "StylesSidebarPane.js",
- "RenderingOptionsView.js",
- ]
- },
- {
- "name": "network",
- "dependencies": ["components"],
- "sources": [
- "NetworkItemView.js",
- "RequestCookiesView.js",
- "RequestHeadersView.js",
- "RequestHTMLView.js",
- "RequestJSONView.js",
- "RequestPreviewView.js",
- "RequestResponseView.js",
- "RequestTimingView.js",
- "RequestView.js",
- "ResourceWebSocketFrameView.js",
- "NetworkPanel.js",
- "NetworkPanelDescriptor.js",
- ]
- },
- {
- "name": "resources",
- "dependencies": ["components"],
- "sources": [
- "ApplicationCacheItemsView.js",
- "CookieItemsView.js",
- "DatabaseQueryView.js",
- "DatabaseTableView.js",
- "DirectoryContentView.js",
- "DOMStorageItemsView.js",
- "FileContentView.js",
- "FileSystemView.js",
- "IndexedDBViews.js",
- "ResourcesPanel.js",
- ]
- },
- {
- "name": "workers",
- "dependencies": ["components"],
- "sources": [
- "WorkerManager.js",
- ]
- },
- {
- "name": "scripts",
- "dependencies": ["components", "workers"],
- "sources": [
- "BreakpointsSidebarPane.js",
- "CSSSourceFrame.js",
- "CallStackSidebarPane.js",
- "FilePathScoreFunction.js",
- "FilteredItemSelectionDialog.js",
- "JavaScriptSourceFrame.js",
- "NavigatorOverlayController.js",
- "NavigatorView.js",
- "RevisionHistoryView.js",
- "ScopeChainSidebarPane.js",
- "SourcesNavigator.js",
- "SourcesPanel.js",
- "SourcesPanelDescriptor.js",
- "SourcesSearchScope.js",
- "StyleSheetOutlineDialog.js",
- "TabbedEditorContainer.js",
- "UISourceCodeFrame.js",
- "WatchExpressionsSidebarPane.js",
- "WorkersSidebarPane.js",
- ]
- },
- {
- "name": "console",
- "dependencies": ["components"],
- "sources": [
- "ConsoleView.js",
- "ConsolePanel.js",
- ]
- },
- {
- "name": "timeline",
- "dependencies": ["components"],
- "sources": [
- "DOMCountersGraph.js",
- "MemoryStatistics.js",
- "PieChart.js",
- "TimelineEventOverview.js",
- "TimelineFrameOverview.js",
- "TimelineMemoryOverview.js",
- "TimelineModel.js",
- "TimelineOverviewPane.js",
- "TimelinePanel.js",
- "TimelinePanelDescriptor.js",
- "TimelinePresentationModel.js",
- "TimelineFrameController.js"
- ]
- },
- {
- "name": "audits",
- "dependencies": ["components"],
- "sources": [
- "AuditCategories.js",
- "AuditController.js",
- "AuditFormatters.js",
- "AuditLauncherView.js",
- "AuditResultView.js",
- "AuditRules.js",
- "AuditsPanel.js",
- ]
- },
- {
- "name": "codemirror",
- "dependencies": ["components"],
- "sources": [
- "CodeMirrorTextEditor.js",
- "CodeMirrorUtils.js",
- ]
- },
- {
- "name": "layers",
- "dependencies": ["components"],
- "sources": [
- "LayerTreeModel.js",
- "LayersPanel.js",
- "LayersPanelDescriptor.js",
- "LayerTree.js",
- "Layers3DView.js",
- "LayerDetailsView.js",
- ]
- },
- {
- "name": "extensions",
- "dependencies": ["components"],
- "sources": [
- "ExtensionAPI.js",
- "ExtensionAuditCategory.js",
- "ExtensionPanel.js",
- "ExtensionRegistryStub.js",
- "ExtensionServer.js",
- "ExtensionView.js",
- ]
- },
- {
- "name": "settings",
- "dependencies": ["components", "extensions"],
- "sources": [
- "SettingsScreen.js",
- "EditFileSystemDialog.js",
- ]
- },
- {
- "name": "tests",
- "dependencies": ["components"],
- "sources": [
- "TestController.js",
- ]
- },
- {
- "name": "profiler",
- "dependencies": ["components", "workers"],
- "sources": [
- "AllocationProfile.js",
- "BottomUpProfileDataGridTree.js",
- "CPUProfileView.js",
- "FlameChart.js",
- "HeapSnapshot.js",
- "HeapSnapshotDataGrids.js",
- "HeapSnapshotGridNodes.js",
- "HeapSnapshotLoader.js",
- "HeapSnapshotProxy.js",
- "HeapSnapshotView.js",
- "HeapSnapshotWorker.js",
- "HeapSnapshotWorkerDispatcher.js",
- "JSHeapSnapshot.js",
- "ProfileDataGridTree.js",
- "ProfilesPanel.js",
- "ProfilesPanelDescriptor.js",
- "ProfileLauncherView.js",
- "TopDownProfileDataGridTree.js",
- "CanvasProfileView.js",
- "CanvasReplayStateView.js",
- ]
- },
- {
- "name": "host_stub",
- "dependencies": ["components", "profiler", "timeline"],
- "sources": [
- "InspectorFrontendAPI.js",
- "InspectorFrontendHostStub.js",
- ]
- }
-]
+js_modules_name = "frontend_modules.json"
+
+try:
+ with open(os.path.join(scripts_path, js_modules_name), "rt") as js_modules_file:
+ modules = json.loads(js_modules_file.read())
+except:
+ print "ERROR: Failed to read %s" % js_modules_name
+ raise
# `importScript` function must not be used in any files
# except module headers. Refer to devtools.gyp file for
@@ -419,6 +77,7 @@
"AuditsPanel.js",
"LayersPanel.js",
"CodeMirrorTextEditor.js",
+ "ExtensionServer.js",
]
type_checked_jsdoc_tags_list = ["param", "return", "type", "enum"]
@@ -426,12 +85,21 @@
type_checked_jsdoc_tags_or = "|".join(type_checked_jsdoc_tags_list)
# Basic regex for invalid JsDoc types: an object type name ([A-Z][A-Za-z0-9.]+[A-Za-z0-9]) not preceded by '!', '?', ':' (this, new), or '.' (object property).
-invalid_type_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*\{.*(?<![!?:.A-Za-z0-9])([A-Z][A-Za-z0-9.]+[A-Za-z0-9]).*\}")
+invalid_type_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*\{.*(?<![!?:.A-Za-z0-9])([A-Z][A-Za-z0-9.]+[A-Za-z0-9])[^/]*\}")
invalid_type_designator_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*.*([?!])=?\}")
+error_warning_regex = re.compile(r"(?:WARNING|ERROR)")
+
+errors_found = False
+
+
+def hasErrors(output):
+ return re.search(error_warning_regex, output) != None
+
def verify_importScript_usage():
+ errors_found = False
for module in modules:
for file_name in module['sources']:
if file_name in allowed_import_statements_files:
@@ -441,9 +109,24 @@
sourceFile.close()
if "importScript(" in source:
print "ERROR: importScript function is allowed in module header files only (found in %s)" % file_name
+ errors_found = True
+ return errors_found
+
+
+def dump_all_checked_files():
+ files = {}
+ for module in modules:
+ for source in module["sources"]:
+ files[devtools_frontend_path + "/" + source] = True
+ return " ".join(files.keys())
+
+
+def verify_jsdoc_extra():
+ return subprocess.Popen("%s -jar %s %s" % (java_exec, jsdoc_validator_jar, dump_all_checked_files()), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
def verify_jsdoc():
+ errors_found = False
for module in modules:
for file_name in module['sources']:
lineIndex = 0
@@ -454,40 +137,86 @@
lineIndex += 1
if not line:
continue
- verify_jsdoc_line(full_file_name, lineIndex, line)
+ if verify_jsdoc_line(full_file_name, lineIndex, line):
+ errors_found = True
+ return errors_found
def verify_jsdoc_line(fileName, lineIndex, line):
def print_error(message, errorPosition):
print "%s:%s: ERROR - %s\n%s\n%s\n" % (fileName, lineIndex, message, line, " " * errorPosition + "^")
+ errors_found = False
match = re.search(invalid_type_regex, line)
if match:
print_error("Type '%s' nullability not marked explicitly with '?' (nullable) or '!' (non-nullable)" % match.group(1), match.start(1))
+ errors_found = True
match = re.search(invalid_type_designator_regex, line)
if (match):
print_error("Type nullability indicator misplaced, should precede type", match.start(1))
+ errors_found = True
+ return errors_found
+
+
+def check_java_path():
+ proc = subprocess.Popen("which java", stdout=subprocess.PIPE, shell=True)
+ (javaPath, _) = proc.communicate()
+
+ if proc.returncode != 0:
+ print "Cannot find java ('which java' return code = %d, should be 0)" % proc.returncode
+ sys.exit(1)
+ print "Java executable: " + re.sub(r"\n$", "", javaPath)
+
+check_java_path()
print "Verifying 'importScript' function usage..."
-verify_importScript_usage()
+errors_found |= verify_importScript_usage()
print "Verifying JSDoc comments..."
-verify_jsdoc()
+errors_found |= verify_jsdoc()
+jsdocValidatorProc = verify_jsdoc_extra()
-proc = subprocess.Popen("which java", stdout=subprocess.PIPE, shell=True)
-(javaPath, _) = proc.communicate()
+modules_dir = tempfile.mkdtemp()
+common_closure_args = " --summary_detail_level 3 --compilation_level SIMPLE_OPTIMIZATIONS --warning_level VERBOSE --language_in ECMASCRIPT5 --accept_const_keyword --module_output_path_prefix %s/" % modules_dir
-if proc.returncode != 0:
- print "Cannot find java ('which java' return code = %d, should be 0)" % proc.returncode
- sys.exit(1)
+compiler_args_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
+closure_runner_command = "%s -jar %s --compiler-args-file %s" % (java_exec, closure_runner_jar, compiler_args_file.name)
-javaPath = re.sub(r"\n$", "", javaPath)
+spawned_compiler_command = "%s -jar %s %s \\\n" % (java_exec, closure_compiler_jar, common_closure_args)
modules_by_name = {}
for module in modules:
modules_by_name[module["name"]] = module
+dependents_by_module_name = {}
+for module in modules:
+ name = module["name"]
+ for dep in module["dependencies"]:
+ list = dependents_by_module_name.get(dep)
+ if not list:
+ list = []
+ dependents_by_module_name[dep] = list
+ list.append(name)
+
+standalone_modules = []
+for module in modules:
+ if "standalone" in module:
+ standalone_modules.append(module)
+
+
+def verify_standalone_modules():
+ standalone_module_names = {}
+ for standalone_module in standalone_modules:
+ standalone_module_names[standalone_module["name"]] = True
+ for module in modules:
+ for dependency in module["dependencies"]:
+ if dependency in standalone_module_names:
+ print "ERROR: Standalone module %s cannot be in dependencies of %s" % (dependency, module["name"])
+ errors_found = True
+
+verify_standalone_modules()
+
def dump_module(name, recursively, processed_modules):
if name in processed_modules:
@@ -498,7 +227,7 @@
if recursively:
for dependency in module["dependencies"]:
command += dump_module(dependency, recursively, processed_modules)
- command += " \\\n --module " + jsmodule_name_prefix + module["name"] + ":"
+ command += " --module " + jsmodule_name_prefix + module["name"] + ":"
command += str(len(module["sources"]))
firstDependency = True
for dependency in module["dependencies"]:
@@ -509,89 +238,125 @@
firstDependency = False
command += jsmodule_name_prefix + dependency
for script in module["sources"]:
- command += " \\\n --js " + devtools_frontend_path + "/" + script
+ command += " --js " + devtools_frontend_path + "/" + script
return command
-modules_dir = tempfile.mkdtemp()
-compiler_command = "java -jar %s/closure/compiler.jar --summary_detail_level 3 --compilation_level SIMPLE_OPTIMIZATIONS \
- --warning_level VERBOSE --language_in ECMASCRIPT5 --accept_const_keyword --module_output_path_prefix %s/ \\\n" % (scripts_path, modules_dir)
+print "Compiling frontend..."
-process_recursively = len(sys.argv) > 1
-if process_recursively:
- module_name = sys.argv[1]
- if module_name != "all":
- modules = []
- for i in range(1, len(sys.argv)):
- modules.append(modules_by_name[sys.argv[i]])
- for module in modules:
- command = compiler_command
- command += " --externs " + devtools_frontend_path + "/externs.js" + " \\\n"
- command += " --externs " + protocol_externs_path
- command += dump_module(module["name"], True, {})
- print "Compiling \"" + module["name"] + "\"..."
- os.system(command)
-else:
- command = compiler_command
- command += " --externs " + devtools_frontend_path + "/externs.js" + " \\\n"
- command += " --externs " + protocol_externs_path
- for module in modules:
- command += dump_module(module["name"], False, {})
- print "Compiling front_end (java executable: %s)..." % javaPath
- frontEndCompileProc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+for module in modules:
+ closure_args = common_closure_args
+ closure_args += " --externs " + devtools_frontend_path + "/externs.js"
+ closure_args += " --externs " + protocol_externs_file
+ closure_args += dump_module(module["name"], True, {})
+ compiler_args_file.write("%s %s\n" % (module["name"], closure_args))
- def unclosure_injected_script(sourceFileName, outFileName):
- sourceFile = open(sourceFileName, "r")
- source = sourceFile.read()
- sourceFile.close()
+compiler_args_file.close()
+modular_compiler_proc = subprocess.Popen(closure_runner_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
- def replace_function(matchobj):
- return re.sub(r"@param", "param", matchobj.group(1) or "") + "\n//" + matchobj.group(2)
- # Comment out the closure function and its jsdocs
- source = re.sub(r"(/\*\*(?:[\s\n]*\*\s*@param[^\n]+\n)+\s*\*/\s*)?\n(\(function)", replace_function, source, count=1)
+def unclosure_injected_script(sourceFileName, outFileName):
+ sourceFile = open(sourceFileName, "r")
+ source = sourceFile.read()
+ sourceFile.close()
- # Comment out its return statement
- source = re.sub(r"\n(\s*return\s+[^;]+;\s*\n\}\)\s*)$", "\n/*\\1*/", source)
+ def replace_function(matchobj):
+ return re.sub(r"@param", "param", matchobj.group(1) or "") + "\n//" + matchobj.group(2)
- outFileName = open(outFileName, "w")
- outFileName.write(source)
- outFileName.close()
+ # Comment out the closure function and its jsdocs
+ source = re.sub(r"(/\*\*(?:[\s\n]*\*\s*@param[^\n]+\n)+\s*\*/\s*)?\n(\(function)", replace_function, source, count=1)
- injectedScriptSourceTmpFile = inspector_path + "/" + "InjectedScriptSourceTmp.js"
- injectedScriptCanvasModuleSourceTmpFile = inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js"
+ # Comment out its return statement
+ source = re.sub(r"\n(\s*return\s+[^;]+;\s*\n\}\)\s*)$", "\n/*\\1*/", source)
- unclosure_injected_script(inspector_path + "/" + "InjectedScriptSource.js", injectedScriptSourceTmpFile)
- unclosure_injected_script(inspector_path + "/" + "InjectedScriptCanvasModuleSource.js", injectedScriptCanvasModuleSourceTmpFile)
+ outFileName = open(outFileName, "w")
+ outFileName.write(source)
+ outFileName.close()
- print "Compiling InjectedScriptSource.js and InjectedScriptCanvasModuleSource.js..."
- command = compiler_command
- command += " --externs " + inspector_path + "/" + "InjectedScriptExterns.js" + " \\\n"
- command += " --externs " + protocol_externs_path + " \\\n"
- command += " --module " + jsmodule_name_prefix + "injected_script" + ":1" + " \\\n"
- command += " --js " + injectedScriptSourceTmpFile + " \\\n"
- command += " --module " + jsmodule_name_prefix + "injected_canvas_script" + ":1:" + jsmodule_name_prefix + "injected_script" + " \\\n"
- command += " --js " + injectedScriptCanvasModuleSourceTmpFile + " \\\n"
- command += "\n"
+injectedScriptSourceTmpFile = inspector_path + "/" + "InjectedScriptSourceTmp.js"
+injectedScriptCanvasModuleSourceTmpFile = inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js"
- injectedScriptCompileProc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+unclosure_injected_script(inspector_path + "/" + "InjectedScriptSource.js", injectedScriptSourceTmpFile)
+unclosure_injected_script(inspector_path + "/" + "InjectedScriptCanvasModuleSource.js", injectedScriptCanvasModuleSourceTmpFile)
- print "Checking generated code in InjectedScriptCanvasModuleSource.js..."
- check_injected_webgl_calls_command = "%s/check_injected_webgl_calls_info.py %s %s/InjectedScriptCanvasModuleSource.js" % (scripts_path, webgl_rendering_context_idl_path, inspector_path)
- canvasModuleCompileProc = subprocess.Popen(check_injected_webgl_calls_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+print "Compiling InjectedScriptSource.js and InjectedScriptCanvasModuleSource.js..."
+command = spawned_compiler_command
+command += " --externs " + inspector_path + "/" + "InjectedScriptExterns.js" + " \\\n"
+command += " --externs " + protocol_externs_file + " \\\n"
+command += " --module " + jsmodule_name_prefix + "injected_script" + ":1" + " \\\n"
+command += " --js " + injectedScriptSourceTmpFile + " \\\n"
+command += " --module " + jsmodule_name_prefix + "injected_canvas_script" + ":1:" + jsmodule_name_prefix + "injected_script" + " \\\n"
+command += " --js " + injectedScriptCanvasModuleSourceTmpFile + " \\\n"
+command += "\n"
- print
+injectedScriptCompileProc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
- (frontEndCompileOut, _) = frontEndCompileProc.communicate()
- print "front_end compilation output:\n", frontEndCompileOut
+print "Checking generated code in InjectedScriptCanvasModuleSource.js..."
+check_injected_webgl_calls_command = "%s/check_injected_webgl_calls_info.py %s %s/InjectedScriptCanvasModuleSource.js" % (scripts_path, webgl_rendering_context_idl_path, inspector_path)
+canvasModuleCompileProc = subprocess.Popen(check_injected_webgl_calls_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
- (injectedScriptCompileOut, _) = injectedScriptCompileProc.communicate()
- print "InjectedScriptSource.js and InjectedScriptCanvasModuleSource.js compilation output:\n", injectedScriptCompileOut
+print
- (canvasModuleCompileOut, _) = canvasModuleCompileProc.communicate()
- print "InjectedScriptCanvasModuleSource.js generated code compilation output:\n", canvasModuleCompileOut
+(jsdocValidatorOut, _) = jsdocValidatorProc.communicate()
+if jsdocValidatorOut:
+ print ("JSDoc validator output:\n%s" % jsdocValidatorOut)
+ errors_found = True
- os.system("rm " + injectedScriptSourceTmpFile)
- os.system("rm " + injectedScriptCanvasModuleSourceTmpFile)
+(moduleCompileOut, _) = modular_compiler_proc.communicate()
+print "Modular compilation output:"
-shutil.rmtree(modules_dir)
-os.system("rm " + protocol_externs_path)
+start_module_regex = re.compile(r"^@@ START_MODULE:(.+) @@$")
+end_module_regex = re.compile(r"^@@ END_MODULE @@$")
+
+in_module = False
+skipped_modules = {}
+error_count = 0
+
+def skip_dependents(module_name):
+ for skipped_module in dependents_by_module_name.get(module_name, []):
+ skipped_modules[skipped_module] = True
+
+# pylint: disable=E1103
+for line in moduleCompileOut.splitlines():
+ if not in_module:
+ match = re.search(start_module_regex, line)
+ if not match:
+ continue
+ in_module = True
+ module_name = match.group(1)
+ skip_module = skipped_modules.get(module_name)
+ if skip_module:
+ skip_dependents(module_name)
+ module_output = ["Skipping module %s...\n" % module_name if skip_module else "Module %s:" % module_name]
+ else:
+ match = re.search(end_module_regex, line)
+ if not match:
+ if not skip_module:
+ module_output.append(line)
+ if hasErrors(line):
+ error_count += 1
+ skip_dependents(module_name)
+ continue
+
+ in_module = False
+ print os.linesep.join(module_output)
+
+if error_count:
+ print "Total Closure errors: %d\n" % error_count
+ errors_found = True
+
+(injectedScriptCompileOut, _) = injectedScriptCompileProc.communicate()
+print "InjectedScriptSource.js and InjectedScriptCanvasModuleSource.js compilation output:\n", injectedScriptCompileOut
+errors_found |= hasErrors(injectedScriptCompileOut)
+
+(canvasModuleCompileOut, _) = canvasModuleCompileProc.communicate()
+print "InjectedScriptCanvasModuleSource.js generated code check output:\n", canvasModuleCompileOut
+errors_found |= hasErrors(canvasModuleCompileOut)
+
+if errors_found:
+ print "ERRORS DETECTED"
+
+os.remove(injectedScriptSourceTmpFile)
+os.remove(injectedScriptCanvasModuleSourceTmpFile)
+os.remove(compiler_args_file.name)
+os.remove(protocol_externs_file)
+shutil.rmtree(modules_dir, True)
diff --git a/Source/devtools/scripts/compiler-runner/OWNERS b/Source/devtools/scripts/compiler-runner/OWNERS
new file mode 100644
index 0000000..be5c317
--- /dev/null
+++ b/Source/devtools/scripts/compiler-runner/OWNERS
@@ -0,0 +1 @@
+apavlov@chromium.org
diff --git a/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py b/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py
new file mode 100755
index 0000000..c0e8dac
--- /dev/null
+++ b/Source/devtools/scripts/compiler-runner/build_compiler_runner_jar.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
+
+
+def rel_to_abs(rel_path):
+ return os.path.join(script_path, rel_path)
+
+
+java_bin_path = os.getenv('JAVA_HOME', '')
+if java_bin_path:
+ java_bin_path = os.path.join(java_bin_path, 'bin')
+
+main_class = 'org.chromium.devtools.compiler.Runner'
+jar_name = 'closure-runner.jar'
+src_dir = 'src'
+script_path = os.path.dirname(os.path.abspath(__file__))
+closure_jar_relpath = os.path.join('..', 'closure', 'compiler.jar')
+src_path = rel_to_abs(src_dir)
+
+
+def run_and_communicate(command, error_template):
+ proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
+ proc.communicate()
+ if proc.returncode:
+ print >> sys.stderr, error_template % proc.returncode
+ sys.exit(proc.returncode)
+
+
+def build_artifacts():
+ print 'Compiling...'
+ java_files = []
+ for root, dirs, files in sorted(os.walk(src_path)):
+ for file_name in files:
+ java_files.append(os.path.join(root, file_name))
+
+ bin_path = tempfile.mkdtemp()
+ manifest_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
+ try:
+ manifest_file.write('Class-Path: %s\n' % closure_jar_relpath)
+ manifest_file.close()
+ javac_path = os.path.join(java_bin_path, 'javac')
+ javac_command = '%s -d %s -cp %s %s' % (javac_path, bin_path, rel_to_abs(closure_jar_relpath), ' '.join(java_files))
+ run_and_communicate(javac_command, 'Error: javac returned %d')
+
+ print 'Building jar...'
+ artifact_path = rel_to_abs(jar_name)
+ jar_path = os.path.join(java_bin_path, 'jar')
+ jar_command = '%s cvfme %s %s %s -C %s .' % (jar_path, artifact_path, manifest_file.name, main_class, bin_path)
+ run_and_communicate(jar_command, 'Error: jar returned %d')
+ finally:
+ os.remove(manifest_file.name)
+ shutil.rmtree(bin_path, True)
+
+
+def help():
+ print 'usage: %s' % os.path.basename(__file__)
+ print 'Builds compiler-runner.jar from the %s directory contents' % src_dir
+
+
+def main():
+ if len(sys.argv) > 1:
+ help()
+ return
+ build_artifacts()
+ print 'Done.'
+
+if __name__ == '__main__':
+ main()
diff --git a/Source/devtools/scripts/compiler-runner/closure-runner.jar b/Source/devtools/scripts/compiler-runner/closure-runner.jar
new file mode 100644
index 0000000..66afaae
--- /dev/null
+++ b/Source/devtools/scripts/compiler-runner/closure-runner.jar
Binary files differ
diff --git a/Source/devtools/scripts/compiler-runner/src/org/chromium/devtools/compiler/Runner.java b/Source/devtools/scripts/compiler-runner/src/org/chromium/devtools/compiler/Runner.java
new file mode 100644
index 0000000..6c4995d
--- /dev/null
+++ b/Source/devtools/scripts/compiler-runner/src/org/chromium/devtools/compiler/Runner.java
@@ -0,0 +1,242 @@
+package org.chromium.devtools.compiler;
+
+import com.google.common.collect.Lists;
+import com.google.javascript.jscomp.CommandLineRunner;
+import com.google.javascript.jscomp.CompilerOptions;
+
+import org.kohsuke.args4j.CmdLineException;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.Option;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Prepares and executes several instances of the closure compiler.
+ */
+public class Runner {
+ protected final Flags flags = new Flags();
+ private final PrintStream err;
+ private boolean isConfigValid;
+
+ public Runner(String[] args, PrintStream err) {
+ this.err = err;
+ List<String> argList = processArgs(args);
+ CmdLineParser parser = new CmdLineParser(flags);
+ isConfigValid = true;
+ try {
+ parser.parseArgument(argList.toArray(new String[] {}));
+ if (flags.compilerArgsFile == null) {
+ isConfigValid = false;
+ }
+ } catch (CmdLineException e) {
+ err.println(e.getMessage());
+ isConfigValid = false;
+ }
+
+ if (!isConfigValid) {
+ parser.printUsage(err);
+ }
+ }
+
+ private List<String> processArgs(String[] args) {
+ Pattern argPattern = Pattern.compile("(--[a-zA-Z_]+)=(.*)");
+ Pattern quotesPattern = Pattern.compile("^['\"](.*)['\"]$");
+ List<String> processedArgs = Lists.newArrayList();
+
+ for (String arg : args) {
+ Matcher matcher = argPattern.matcher(arg);
+ if (matcher.matches()) {
+ processedArgs.add(matcher.group(1));
+
+ String value = matcher.group(2);
+ Matcher quotesMatcher = quotesPattern.matcher(value);
+ if (quotesMatcher.matches()) {
+ processedArgs.add(quotesMatcher.group(1));
+ } else {
+ processedArgs.add(value);
+ }
+ } else {
+ processedArgs.add(arg);
+ }
+ }
+
+ return processedArgs;
+ }
+
+ private boolean shouldRunCompiler() {
+ return isConfigValid;
+ }
+
+ protected void logError(String message, Exception e) {
+ err.println("ERROR: " + message);
+ if (e != null) {
+ e.printStackTrace(err);
+ }
+ }
+
+ private void run() {
+ List<CompilerInstanceDescriptor> descriptors = getDescriptors();
+ if (descriptors == null) {
+ return;
+ }
+ ExecutorService executor = Executors.newFixedThreadPool(
+ Math.min(descriptors.size(), Runtime.getRuntime().availableProcessors() / 2 + 1));
+ try {
+ runWithExecutor(descriptors, executor);
+ } finally {
+ executor.shutdown();
+ }
+ }
+
+ private void runWithExecutor(
+ List<CompilerInstanceDescriptor> descriptors, ExecutorService executor) {
+ List<Future<CompilerRunner>> futures = new ArrayList<>(descriptors.size());
+ for (CompilerInstanceDescriptor descriptor : descriptors) {
+ CompilerRunner task = new CompilerRunner(descriptor, new ByteArrayOutputStream(512));
+ futures.add(executor.submit(task));
+ }
+
+ for (Future<CompilerRunner> future : futures) {
+ try {
+ CompilerRunner task = future.get();
+ int result = task.result;
+ if (result != 0) {
+ System.err.println("ERROR: Compiler returned " + result);
+ }
+ task.errStream.flush();
+ System.err.println("@@ START_MODULE:" + task.descriptor.moduleName + " @@");
+ System.err.println(task.errStream.toString("UTF-8"));
+ System.err.println("@@ END_MODULE @@");
+ } catch (Exception e) {
+ System.err.println("ERROR - " + e.getMessage());
+ }
+ }
+ System.exit(0);
+ }
+
+ private List<CompilerInstanceDescriptor> getDescriptors() {
+ List<CompilerInstanceDescriptor> result = new ArrayList<>();
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(
+ new FileInputStream(flags.compilerArgsFile), "UTF-8"))) {
+ int lineIndex = 0;
+ while (true) {
+ ++lineIndex;
+ String line = reader.readLine();
+ if (line == null) {
+ break;
+ }
+ if (line.length() == 0) {
+ continue;
+ }
+ String[] moduleAndArgs = line.split(" +", 2);
+ if (moduleAndArgs.length != 2) {
+ logError(String.format(
+ "Line %d does not contain module name and compiler arguments",
+ lineIndex), null);
+ continue;
+ }
+ result.add(new CompilerInstanceDescriptor(moduleAndArgs[0], moduleAndArgs[1]));
+ }
+ } catch (IOException e) {
+ logError("Failed to read compiler arguments file", e);
+ return null;
+ }
+
+ return result;
+ }
+
+ public static void main(String[] args) {
+ Runner runner = new Runner(args, System.err);
+ if (runner.shouldRunCompiler()) {
+ runner.run();
+ } else {
+ System.exit(-1);
+ }
+ }
+
+ private static class LocalCommandLineRunner extends CommandLineRunner {
+ protected LocalCommandLineRunner(String[] args, PrintStream out, PrintStream err) {
+ super(args, out, err);
+ }
+
+ @Override
+ protected CompilerOptions createOptions() {
+ CompilerOptions options = super.createOptions();
+ options.setIdeMode(true);
+ return options;
+ }
+
+ int execute() {
+ int result = 0;
+ int runs = 1;
+ try {
+ for (int i = 0; i < runs && result == 0; i++) {
+ result = doRun();
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ result = -2;
+ }
+ return result;
+ }
+ }
+
+ private static class CompilerRunner implements Callable<CompilerRunner> {
+ private final CompilerInstanceDescriptor descriptor;
+ private final ByteArrayOutputStream errStream;
+ private int result;
+
+ public CompilerRunner(
+ CompilerInstanceDescriptor descriptor, ByteArrayOutputStream errStream) {
+ this.descriptor = descriptor;
+ this.errStream = errStream;
+ }
+
+ @Override
+ public CompilerRunner call() throws Exception {
+ PrintStream errPrintStream = new PrintStream(errStream, false, "UTF-8");
+ LocalCommandLineRunner runner =
+ new LocalCommandLineRunner(prepareArgs(), System.out, errPrintStream);
+ if (!runner.shouldRunCompiler()) {
+ this.result = -1;
+ }
+ this.result = runner.execute();
+ return this;
+ }
+
+ private String[] prepareArgs() {
+ // FIXME: This does not support quoted arguments.
+ return descriptor.commandLine.split(" +");
+ }
+ }
+
+ private static class Flags {
+ @Option(name = "--compiler-args-file",
+ usage = "Full path to file containing compiler arguments (one line per instance)")
+ private String compilerArgsFile = null;
+ }
+
+ private static class CompilerInstanceDescriptor {
+ private final String moduleName;
+ private final String commandLine;
+
+ public CompilerInstanceDescriptor(String moduleName, String commandLine) {
+ this.moduleName = moduleName;
+ this.commandLine = commandLine;
+ }
+ }
+}
diff --git a/Source/devtools/scripts/convert_svg_images_to_png.py b/Source/devtools/scripts/convert_svg_images_to_png.py
new file mode 100755
index 0000000..52511f7
--- /dev/null
+++ b/Source/devtools/scripts/convert_svg_images_to_png.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+import devtools_file_hashes
+import hashlib
+import optimize_svg_file
+import os
+import os.path
+import re
+import subprocess
+import sys
+
+try:
+ import json
+except ImportError:
+ import simplejson as json
+
+
+def check_installed(app_name):
+ proc = subprocess.Popen("which %s" % app_name, stdout=subprocess.PIPE, shell=True)
+ proc.communicate()
+ if proc.returncode != 0:
+ print "This script needs \"%s\" to be installed." % app_name
+ sys.exit(1)
+
+
+def optimize_svg(svg_file_path):
+ errors = []
+ optimize_svg_file.optimize_svg(svg_file_path, errors)
+ if len(errors) != 0:
+ print "Failed to optimize '%s'" % (svg_file_path)
+ for error in errors:
+ print "ERROR: %s" % (error)
+ return True
+ return False
+
+check_installed("inkscape")
+
+scripts_path = os.path.dirname(os.path.abspath(__file__))
+devtools_path = os.path.dirname(scripts_path)
+devtools_frontend_path = devtools_path + "/front_end"
+images_path = devtools_frontend_path + "/Images"
+image_sources_path = images_path + "/src"
+hashes_file_name = "svg2png.hashes"
+hashes_file_path = image_sources_path + "/" + hashes_file_name
+
+file_names = os.listdir(image_sources_path)
+svg_file_paths = [image_sources_path + "/" + file_name for file_name in file_names if file_name.endswith(".svg")]
+
+svg_optimization_failures = [optimize_svg(svg_file_path) for svg_file_path in svg_file_paths]
+if any(svg_optimization_failures):
+ sys.exit(1)
+
+svg_file_paths_to_convert = devtools_file_hashes.files_with_invalid_hashes(hashes_file_path, svg_file_paths)
+svg_file_names = [re.sub(".svg$", "", re.sub(".*/", "", file_path)) for file_path in svg_file_paths_to_convert]
+
+
+def convert_svg_to_png(svg_file_name, png_file_name, dpi):
+ svg_full_path = image_sources_path + "/" + svg_file_name + ".svg"
+ png_full_path = images_path + "/" + png_file_name + ".png"
+ convert_command = "inkscape -f %s -e %s -d %s" % (svg_full_path, png_full_path, dpi)
+ proc = subprocess.Popen(convert_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+ return proc
+
+processes = {}
+for file_name in svg_file_names:
+ name = re.sub(".svg$", "", file_name)
+ name2x = name + "_2x"
+ processes[name] = convert_svg_to_png(name, name, 90)
+ processes[name2x] = convert_svg_to_png(name, name2x, 180)
+
+for file_name, proc in processes.items():
+ (convert_out, _) = proc.communicate()
+ print("Conversion of %s finished: %s" % (file_name, convert_out))
+
+devtools_file_hashes.update_file_hashes(hashes_file_path, svg_file_paths)
diff --git a/Source/devtools/scripts/devtools_file_hashes.py b/Source/devtools/scripts/devtools_file_hashes.py
new file mode 100644
index 0000000..6eaefcb
--- /dev/null
+++ b/Source/devtools/scripts/devtools_file_hashes.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+import hashlib
+import re
+
+try:
+ import json
+except ImportError:
+ import simplejson as json
+
+
+def save_hashes(hashes_file_path, hashes):
+ try:
+ with open(hashes_file_path, "wt") as hashes_file:
+ json.dump(hashes, hashes_file, indent=4, separators=(",", ": "))
+ except:
+ print "ERROR: Failed to write %s" % hashes_file_path
+ raise
+
+
+def load_hashes(hashes_file_path):
+ try:
+ with open(hashes_file_path, "r") as hashes_file:
+ hashes = json.load(hashes_file)
+ except:
+ return {}
+ return hashes
+
+
+def calculate_file_hash(file_path):
+ with open(file_path) as file:
+ data = file.read()
+ md5_hash = hashlib.md5(data).hexdigest()
+ return md5_hash
+
+
+def files_with_invalid_hashes(hash_file_path, file_paths):
+ hashes = load_hashes(hash_file_path)
+ result = []
+ for file_path in file_paths:
+ file_name = re.sub(".*/", "", file_path)
+ if calculate_file_hash(file_path) != hashes.get(file_name, ""):
+ result.append(file_path)
+ return result
+
+
+def update_file_hashes(hash_file_path, file_paths):
+ hashes = {}
+ for file_path in file_paths:
+ file_name = re.sub(".*/", "", file_path)
+ hashes[file_name] = calculate_file_hash(file_path)
+ save_hashes(hash_file_path, hashes)
diff --git a/Source/devtools/scripts/frontend_modules.json b/Source/devtools/scripts/frontend_modules.json
new file mode 100644
index 0000000..de491e4
--- /dev/null
+++ b/Source/devtools/scripts/frontend_modules.json
@@ -0,0 +1,436 @@
+[
+ {
+ "name": "common",
+ "dependencies": [],
+ "sources": [
+ "modules.js",
+ "Color.js",
+ "DOMExtension.js",
+ "Geometry.js",
+ "ModuleManager.js",
+ "Object.js",
+ "ParsedURL.js",
+ "Platform.js",
+ "Progress.js",
+ "Settings.js",
+ "TextRange.js",
+ "UIString.js",
+ "UserMetrics.js",
+ "utilities.js"
+ ]
+ },
+ {
+ "name": "sdk",
+ "dependencies": ["common"],
+ "sources": [
+ "ApplicationCacheModel.js",
+ "CompilerScriptMapping.js",
+ "ConsoleModel.js",
+ "ContentProvider.js",
+ "ContentProviderBasedProjectDelegate.js",
+ "ContentProviders.js",
+ "CookieParser.js",
+ "CPUProfilerModel.js",
+ "CSSMetadata.js",
+ "CSSStyleModel.js",
+ "CSSStyleSheetMapping.js",
+ "BreakpointManager.js",
+ "Database.js",
+ "DOMAgent.js",
+ "DOMStorage.js",
+ "DebuggerModel.js",
+ "DebuggerScriptMapping.js",
+ "FileManager.js",
+ "FileSystemMapping.js",
+ "FileSystemModel.js",
+ "FileSystemProjectDelegate.js",
+ "FileUtils.js",
+ "HAREntry.js",
+ "IndexedDBModel.js",
+ "InspectorBackend.js",
+ "IsolatedFileSystemManager.js",
+ "IsolatedFileSystem.js",
+ "Linkifier.js",
+ "NetworkLog.js",
+ "NetworkUISourceCodeProvider.js",
+ "NotificationService.js",
+ "OverridesSupport.js",
+ "PresentationConsoleMessageHelper.js",
+ "WorkerManager.js",
+ "RuntimeModel.js",
+ "SASSSourceMapping.js",
+ "Script.js",
+ "ScriptFormatter.js",
+ "ScriptSnippetModel.js",
+ "SimpleWorkspaceProvider.js",
+ "SnippetStorage.js",
+ "SourceMapping.js",
+ "StylesSourceMapping.js",
+ "TempFile.js",
+ "TimelineManager.js",
+ "RemoteObject.js",
+ "Resource.js",
+ "DefaultScriptMapping.js",
+ "ResourceScriptMapping.js",
+ "LiveEditSupport.js",
+ "ResourceTreeModel.js",
+ "ResourceType.js",
+ "ResourceUtils.js",
+ "SourceMap.js",
+ "TracingAgent.js",
+ "NetworkManager.js",
+ "NetworkRequest.js",
+ "UISourceCode.js",
+ "Workspace.js",
+ "WorkspaceController.js",
+ "PaintProfiler.js"
+ ]
+ },
+ {
+ "name": "ui",
+ "dependencies": ["common"],
+ "sources": [
+ "Checkbox.js",
+ "ContextMenu.js",
+ "CompletionDictionary.js",
+ "DataGrid.js",
+ "Dialog.js",
+ "DockController.js",
+ "Drawer.js",
+ "EmptyView.js",
+ "FilterBar.js",
+ "GoToLineDialog.js",
+ "HelpScreen.js",
+ "InplaceEditor.js",
+ "InspectorView.js",
+ "KeyboardShortcut.js",
+ "OverviewGrid.js",
+ "Panel.js",
+ "Placard.js",
+ "Popover.js",
+ "ProgressIndicator.js",
+ "PropertiesSection.js",
+ "SearchableView.js",
+ "Section.js",
+ "SettingsUI.js",
+ "SidebarOverlay.js",
+ "SidebarPane.js",
+ "SidebarTreeElement.js",
+ "ShortcutsScreen.js",
+ "ShowMoreDataGridNode.js",
+ "SoftContextMenu.js",
+ "Spectrum.js",
+ "SplitView.js",
+ "StackView.js",
+ "StatusBarButton.js",
+ "SuggestBox.js",
+ "TabbedPane.js",
+ "TextEditor.js",
+ "TextPrompt.js",
+ "TextUtils.js",
+ "TimelineGrid.js",
+ "UIUtils.js",
+ "View.js",
+ "ViewportControl.js",
+ "ZoomManager.js",
+ "treeoutline.js"
+ ]
+ },
+ {
+ "name": "codemirror",
+ "dependencies": ["common", "ui"],
+ "sources": [
+ "CodeMirrorTextEditor.js",
+ "CodeMirrorUtils.js"
+ ]
+ },
+ {
+ "name": "components",
+ "dependencies": ["sdk", "ui"],
+ "sources": [
+ "AdvancedSearchController.js",
+ "HandlerRegistry.js",
+ "ConsoleMessage.js",
+ "CookiesTable.js",
+ "DOMBreakpointsSidebarPane.js",
+ "DOMPresentationUtils.js",
+ "ExtensionServerProxy.js",
+ "FlameChart.js",
+ "HelpScreenUntilReload.js",
+ "NativeBreakpointsSidebarPane.js",
+ "InspectElementModeController.js",
+ "ObjectPopoverHelper.js",
+ "ObjectPropertiesSection.js",
+ "ScreencastView.js"
+ ]
+ },
+ {
+ "name": "source_frame",
+ "dependencies": ["components", "codemirror"],
+ "sources": [
+ "SourceFrame.js"
+ ]
+ },
+ {
+ "name": "resource_views",
+ "dependencies": ["source_frame"],
+ "sources": [
+ "FontView.js",
+ "ImageView.js",
+ "ResourceView.js"
+ ]
+ },
+ {
+ "name": "elements",
+ "dependencies": ["components", "codemirror"],
+ "sources": [
+ "DOMSyntaxHighlighter.js",
+ "ElementsPanel.js",
+ "ElementsTreeOutline.js",
+ "EventListenersSidebarPane.js",
+ "MetricsSidebarPane.js",
+ "OverridesView.js",
+ "PlatformFontsSidebarPane.js",
+ "PropertiesSidebarPane.js",
+ "StylesSidebarPane.js",
+ "RenderingOptionsView.js"
+ ]
+ },
+ {
+ "name": "network",
+ "dependencies": ["components", "resource_views"],
+ "sources": [
+ "NetworkItemView.js",
+ "RequestCookiesView.js",
+ "RequestHeadersView.js",
+ "RequestHTMLView.js",
+ "RequestJSONView.js",
+ "RequestPreviewView.js",
+ "RequestResponseView.js",
+ "RequestTimingView.js",
+ "RequestView.js",
+ "ResourceWebSocketFrameView.js",
+ "NetworkPanel.js"
+ ]
+ },
+ {
+ "name": "resources",
+ "dependencies": ["components", "resource_views"],
+ "sources": [
+ "ApplicationCacheItemsView.js",
+ "CookieItemsView.js",
+ "DatabaseQueryView.js",
+ "DatabaseTableView.js",
+ "DirectoryContentView.js",
+ "DOMStorageItemsView.js",
+ "FileContentView.js",
+ "FileSystemView.js",
+ "IndexedDBViews.js",
+ "ResourcesPanel.js"
+ ]
+ },
+ {
+ "name": "workers",
+ "dependencies": ["components"],
+ "sources": [
+ "WorkerFrontendManager.js"
+ ]
+ },
+ {
+ "name": "sources",
+ "dependencies": ["components", "source_frame", "workers"],
+ "sources": [
+ "BreakpointsSidebarPane.js",
+ "CSSSourceFrame.js",
+ "CallStackSidebarPane.js",
+ "EditingLocationHistoryManager.js",
+ "FilePathScoreFunction.js",
+ "FilteredItemSelectionDialog.js",
+ "JavaScriptSourceFrame.js",
+ "NavigatorView.js",
+ "RevisionHistoryView.js",
+ "ScopeChainSidebarPane.js",
+ "SimpleHistoryManager.js",
+ "SourcesNavigator.js",
+ "SourcesPanel.js",
+ "SourcesSearchScope.js",
+ "StyleSheetOutlineDialog.js",
+ "TabbedEditorContainer.js",
+ "UISourceCodeFrame.js",
+ "WatchExpressionsSidebarPane.js",
+ "WorkersSidebarPane.js",
+ "ThreadsToolbar.js"
+ ]
+ },
+ {
+ "name": "console",
+ "dependencies": ["components"],
+ "sources": [
+ "ConsoleView.js",
+ "ConsolePanel.js"
+ ]
+ },
+ {
+ "name": "timeline",
+ "dependencies": ["components"],
+ "sources": [
+ "CountersGraph.js",
+ "MemoryStatistics.js",
+ "PieChart.js",
+ "TimelineEventOverview.js",
+ "TimelineFrameModel.js",
+ "TimelineFrameOverview.js",
+ "TimelineMemoryOverview.js",
+ "TimelineModel.js",
+ "TimelineOverviewPane.js",
+ "TimelineFlameChart.js",
+ "TimelinePanel.js",
+ "TimelinePresentationModel.js",
+ "TimelineView.js"
+ ]
+ },
+ {
+ "name": "audits",
+ "dependencies": ["components"],
+ "sources": [
+ "AuditCategories.js",
+ "AuditCategory.js",
+ "AuditController.js",
+ "AuditFormatters.js",
+ "AuditLauncherView.js",
+ "AuditResultView.js",
+ "AuditRules.js",
+ "AuditsPanel.js"
+ ]
+ },
+ {
+ "name": "layers",
+ "dependencies": ["components"],
+ "sources": [
+ "LayerTreeModel.js",
+ "LayersPanel.js",
+ "LayerTree.js",
+ "Layers3DView.js",
+ "LayerDetailsView.js",
+ "PaintProfilerView.js"
+ ]
+ },
+ {
+ "name": "extensions",
+ "dependencies": ["components", "audits", "sources"],
+ "sources": [
+ "ExtensionAPI.js",
+ "ExtensionAuditCategory.js",
+ "ExtensionPanel.js",
+ "ExtensionRegistryStub.js",
+ "ExtensionServer.js",
+ "ExtensionView.js"
+ ]
+ },
+ {
+ "name": "settings",
+ "dependencies": ["components"],
+ "sources": [
+ "SettingsScreen.js",
+ "EditFileSystemDialog.js"
+ ]
+ },
+ {
+ "name": "tests",
+ "dependencies": ["components"],
+ "sources": [
+ "TestController.js"
+ ]
+ },
+ {
+ "name": "temp_storage_shared_worker",
+ "standalone": true,
+ "dependencies": [],
+ "sources": [
+ "TempStorageSharedWorker.js"
+ ]
+ },
+ {
+ "name": "profiler",
+ "dependencies": ["components"],
+ "sources": [
+ "BottomUpProfileDataGridTree.js",
+ "CPUProfileView.js",
+ "HeapSnapshotCommon.js",
+ "HeapSnapshotDataGrids.js",
+ "HeapSnapshotGridNodes.js",
+ "HeapSnapshotProxy.js",
+ "HeapSnapshotView.js",
+ "ProfileDataGridTree.js",
+ "ProfilesPanel.js",
+ "ProfileLauncherView.js",
+ "TopDownProfileDataGridTree.js",
+ "CanvasProfileView.js",
+ "CanvasReplayStateView.js"
+ ]
+ },
+ {
+ "name": "heap_snapshot_worker",
+ "standalone": true,
+ "dependencies": [],
+ "sources": [
+ "AllocationProfile.js",
+ "HeapSnapshot.js",
+ "HeapSnapshotCommon.js",
+ "HeapSnapshotLoader.js",
+ "HeapSnapshotWorker.js",
+ "HeapSnapshotWorkerDispatcher.js",
+ "JSHeapSnapshot.js",
+ "TextUtils.js",
+ "UIString.js",
+ "utilities.js"
+ ]
+ },
+ {
+ "name": "host_stub",
+ "dependencies": ["components", "profiler", "timeline"],
+ "sources": [
+ "InspectorFrontendAPI.js",
+ "InspectorFrontendHostStub.js"
+ ]
+ },
+ {
+ "name": "script_formatter_worker",
+ "standalone": true,
+ "dependencies": [],
+ "sources": [
+ "CSSFormatter.js",
+ "JavaScriptFormatter.js",
+ "ScriptFormatterWorker.js",
+ "utilities.js"
+ ]
+ },
+ {
+ "name": "front_end",
+ "standalone": true,
+ "dependencies": [
+ "common",
+ "sdk",
+ "ui",
+ "codemirror",
+ "components",
+ "source_frame",
+ "resource_views",
+ "elements",
+ "network",
+ "resources",
+ "workers",
+ "sources",
+ "console",
+ "timeline",
+ "audits",
+ "layers",
+ "extensions",
+ "settings",
+ "tests",
+ "profiler",
+ "host_stub"
+ ],
+ "sources": []
+ }
+]
diff --git a/Source/devtools/scripts/generate_protocol_externs.py b/Source/devtools/scripts/generate_protocol_externs.py
index 02dec7b..acc451b 100755
--- a/Source/devtools/scripts/generate_protocol_externs.py
+++ b/Source/devtools/scripts/generate_protocol_externs.py
@@ -92,6 +92,8 @@
output_file.write(
"""
+var InspectorBackend = {}
+
var Protocol = {};
/** @typedef {string}*/
Protocol.Error;
diff --git a/Source/devtools/scripts/generate_supported_css.py b/Source/devtools/scripts/generate_supported_css.py
new file mode 100755
index 0000000..2883c94
--- /dev/null
+++ b/Source/devtools/scripts/generate_supported_css.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+try:
+ import simplejson as json
+except ImportError:
+ import json
+
+import sys
+
+cssProperties = {}
+
+
+def filterCommentsAndEmptyLines(lines):
+ result = []
+ for line in lines:
+ if len(line.strip()) > 0 and line[:2] != "//":
+ result.append(line.strip())
+ return result
+
+
+def fillPropertiesFromFile(fileName):
+ with open(fileName, "r") as f:
+ lines = f.readlines()
+ lines = filterCommentsAndEmptyLines(lines)
+ for line in lines:
+ if not "alias_for" in line:
+ cssProperties[line] = []
+
+
+def fillCSSShorthandsFromFile(fileName):
+ with open(fileName, "r") as f:
+ lines = f.readlines()
+ lines = filterCommentsAndEmptyLines(lines)
+ for line in lines:
+ # Every line is:
+ # <property-name>[ longhands=<longhand 1>;<longhand 2>;<longhand 3>,runtimeEnabledShorthand=<runtime flag name>]
+ # There might be a runtime flag declaration at the end of the list followed by a comma.
+ if "," in line:
+ line = line[:line.index(",")]
+ shorthand = line[:line.index(" ")]
+ longhands = line[line.index("=") + 1:].split(";")
+ cssProperties[shorthand] = longhands
+
+fillPropertiesFromFile(sys.argv[1])
+fillPropertiesFromFile(sys.argv[2])
+fillCSSShorthandsFromFile(sys.argv[3])
+
+# Reformat from map into list.
+reformat = []
+for name, longhands in cssProperties.items():
+ entry = {"name": name}
+ if len(longhands) > 0:
+ entry["longhands"] = longhands
+ reformat.append(entry)
+
+with open(sys.argv[4], "w") as f:
+ f.write("WebInspector.CSSMetadata.initializeWithSupportedProperties(%s);" % json.dumps(reformat))
diff --git a/Source/devtools/scripts/jsdoc-validator/OWNERS b/Source/devtools/scripts/jsdoc-validator/OWNERS
new file mode 100644
index 0000000..be5c317
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/OWNERS
@@ -0,0 +1 @@
+apavlov@chromium.org
diff --git a/Source/devtools/scripts/jsdoc-validator/PRESUBMIT.py b/Source/devtools/scripts/jsdoc-validator/PRESUBMIT.py
new file mode 100644
index 0000000..48f1841
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/PRESUBMIT.py
@@ -0,0 +1,55 @@
+# Copyright (C) 2013 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+"""DevTools JSDoc validator presubmit script
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details about the presubmit API built into gcl.
+"""
+
+import sys
+
+
+def _ValidateHashes(input_api, output_api):
+ sys.path.append(input_api.PresubmitLocalPath())
+ import build_jsdoc_validator_jar
+ hashes_modified = build_jsdoc_validator_jar.hashes_modified()
+ if not hashes_modified:
+ return []
+
+ results = '\n'.join(['%s (%s != %s)' % (name, expected, actual) for (name, expected, actual) in hashes_modified])
+ return [output_api.PresubmitError('DevTools frontend JSDoc validator Java code, "%s" and "%s" must always be updated together. Please rebuild.\nModifications found:\n%s' %
+ (build_jsdoc_validator_jar.jar_name, build_jsdoc_validator_jar.hashes_name, results))]
+
+
+def CheckChangeOnUpload(input_api, output_api):
+ return _ValidateHashes(input_api, output_api)
+
+
+def CheckChangeOnCommit(input_api, output_api):
+ return _ValidateHashes(input_api, output_api)
diff --git a/Source/devtools/scripts/jsdoc-validator/build_jsdoc_validator_jar.py b/Source/devtools/scripts/jsdoc-validator/build_jsdoc_validator_jar.py
new file mode 100755
index 0000000..ae8b811
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/build_jsdoc_validator_jar.py
@@ -0,0 +1,164 @@
+#!/usr/bin/python
+
+import hashlib
+import operator
+import os
+import shutil
+import stat
+import subprocess
+import sys
+import tempfile
+
+
+def rel_to_abs(rel_path):
+ return os.path.join(script_path, rel_path)
+
+
+java_bin_path = os.getenv('JAVA_HOME', '')
+if java_bin_path:
+ java_bin_path = os.path.join(java_bin_path, 'bin')
+
+main_class = 'org.chromium.devtools.jsdoc.JsDocValidator'
+jar_name = 'jsdoc-validator.jar'
+hashes_name = 'hashes'
+src_dir = 'src'
+script_path = os.path.dirname(os.path.abspath(__file__))
+closure_jar_relpath = os.path.join('..', 'closure', 'compiler.jar')
+src_path = rel_to_abs(src_dir)
+hashes_path = rel_to_abs(hashes_name)
+
+
+def get_file_hash(file, blocksize=65536):
+ sha = hashlib.sha256()
+ buf = file.read(blocksize)
+ while len(buf) > 0:
+ sha.update(buf)
+ buf = file.read(blocksize)
+ return sha.hexdigest()
+
+
+def traverse(hasher, path):
+ abs_path = rel_to_abs(path)
+ info = os.lstat(abs_path)
+ quoted_name = repr(path.replace('\\', '/'))
+ if stat.S_ISDIR(info.st_mode) and not os.path.basename(path).startswith('.'):
+ hasher.update('d ' + quoted_name + '\n')
+ for entry in sorted(os.listdir(abs_path)):
+ traverse(hasher, os.path.join(path, entry))
+ elif stat.S_ISREG(info.st_mode) and path.endswith('.java'):
+ hasher.update('r ' + quoted_name + ' ')
+ hasher.update(str(info.st_size) + ' ')
+ with open(abs_path, 'Ur') as file:
+ f_hash = get_file_hash(file)
+ hasher.update(f_hash + '\n')
+
+
+def get_src_dir_hash(dir):
+ sha = hashlib.sha256()
+ traverse(sha, dir)
+ return sha.hexdigest()
+
+
+def get_actual_hashes():
+ hashed_files = [(jar_name, True)]
+ hashes = {}
+ for (file_name, binary) in hashed_files:
+ try:
+ hash = get_file_hash(open(file_name, 'rb' if binary else 'r'))
+ hashes[file_name] = hash
+ except IOError:
+ hashes[file_name] = '0'
+ hashes[src_dir] = get_src_dir_hash(src_dir)
+ return hashes
+
+
+def get_expected_hashes():
+ try:
+ with open(hashes_path, 'r') as file:
+ return {file_name: hash for (file_name, hash) in [(name.strip(), hash.strip()) for (hash, name) in [line.split(' ', 1) for line in file]]}
+ except:
+ return None
+
+
+def run_and_communicate(command, error_template):
+ proc = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
+ proc.communicate()
+ if proc.returncode:
+ print >> sys.stderr, error_template % proc.returncode
+ sys.exit(proc.returncode)
+
+
+def build_artifacts():
+ print 'Compiling...'
+ java_files = []
+ for root, dirs, files in sorted(os.walk(src_path)):
+ for file_name in files:
+ java_files.append(os.path.join(root, file_name))
+
+ bin_path = tempfile.mkdtemp()
+ manifest_file = tempfile.NamedTemporaryFile(mode='wt', delete=False)
+ try:
+ manifest_file.write('Class-Path: %s\n' % closure_jar_relpath)
+ manifest_file.close()
+ javac_path = os.path.join(java_bin_path, 'javac')
+ javac_command = '%s -d %s -cp %s %s' % (javac_path, bin_path, rel_to_abs(closure_jar_relpath), ' '.join(java_files))
+ run_and_communicate(javac_command, 'Error: javac returned %d')
+
+ print 'Building jar...'
+ artifact_path = rel_to_abs(jar_name)
+ jar_path = os.path.join(java_bin_path, 'jar')
+ jar_command = '%s cvfme %s %s %s -C %s .' % (jar_path, artifact_path, manifest_file.name, main_class, bin_path)
+ run_and_communicate(jar_command, 'Error: jar returned %d')
+ finally:
+ os.remove(manifest_file.name)
+ shutil.rmtree(bin_path, True)
+
+
+def update_hashes():
+ print 'Updating hashes...'
+ with open(hashes_path, 'w') as file:
+ file.writelines(['%s %s\n' % (hash, name) for (name, hash) in get_actual_hashes().iteritems()])
+
+
+def hashes_modified():
+ expected_hashes = get_expected_hashes()
+ if not expected_hashes:
+ return [('<no expected hashes>', 1, 0)]
+ actual_hashes = get_actual_hashes()
+ results = []
+ for name, expected_hash in expected_hashes.iteritems():
+ actual_hash = actual_hashes.get(name)
+ if expected_hash != actual_hash:
+ results.append((name, expected_hash, actual_hash))
+ return results
+
+
+def help():
+ print 'usage: %s [option]' % os.path.basename(__file__)
+ print 'Options:'
+ print '--force-rebuild: Rebuild classes and jar even if there are no source file changes'
+ print '--no-rebuild: Do not rebuild jar, just update hashes'
+
+
+def main():
+ no_rebuild = False
+ force_rebuild = False
+
+ if len(sys.argv) > 1:
+ if sys.argv[1] == '--help':
+ help()
+ return
+ no_rebuild = sys.argv[1] == '--no-rebuild'
+ force_rebuild = sys.argv[1] == '--force-rebuild'
+
+ if not hashes_modified() and not force_rebuild:
+ print 'No modifications found, rebuild not required.'
+ return
+ if not no_rebuild:
+ build_artifacts()
+
+ update_hashes()
+ print 'Done.'
+
+if __name__ == '__main__':
+ main()
diff --git a/Source/devtools/scripts/jsdoc-validator/hashes b/Source/devtools/scripts/jsdoc-validator/hashes
new file mode 100644
index 0000000..015c75f
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/hashes
@@ -0,0 +1,2 @@
+b51df7e71432c882979acbc8fc9415bffce2fb12764d3c005fda586bf46cc3c6 src
+fbffbe77ed5e81469e2fa627898dfafba3590bd5e19bf18e7ec3183550b63d48 jsdoc-validator.jar
diff --git a/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar b/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar
new file mode 100644
index 0000000..926d7bf
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar
Binary files differ
diff --git a/Source/devtools/scripts/jsdoc-validator/run_tests.py b/Source/devtools/scripts/jsdoc-validator/run_tests.py
new file mode 100755
index 0000000..c8a0112
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/run_tests.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+
+import hashlib
+import operator
+import os
+import shutil
+import stat
+import subprocess
+import sys
+import tempfile
+
+
+def rel_to_abs(rel_path):
+ return os.path.join(script_path, rel_path)
+
+java_exec = 'java -Xms1024m -server -XX:+TieredCompilation'
+tests_dir = 'tests'
+jar_name = 'jsdoc-validator.jar'
+script_path = os.path.dirname(os.path.abspath(__file__))
+tests_path = rel_to_abs(tests_dir)
+validator_jar_file = rel_to_abs(jar_name)
+golden_file = os.path.join(tests_path, 'golden.dat')
+
+test_files = [os.path.join(tests_path, f) for f in os.listdir(tests_path) if f.endswith('.js') and os.path.isfile(os.path.join(tests_path, f))]
+
+validator_command = "%s -jar %s %s" % (java_exec, validator_jar_file, " ".join(sorted(test_files)))
+
+
+def run_and_communicate(command, error_template):
+ proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
+ (out, _) = proc.communicate()
+ if proc.returncode:
+ print >> sys.stderr, error_template % proc.returncode
+ sys.exit(proc.returncode)
+ return out
+
+
+def help():
+ print 'usage: %s [option]' % os.path.basename(__file__)
+ print 'Options:'
+ print '--generate-golden: Re-generate golden file'
+ print '--dump: Dump the test results to stdout'
+
+
+def main():
+ need_golden = False
+ need_dump = False
+ if len(sys.argv) > 1:
+ if sys.argv[1] == '--generate-golden':
+ need_golden = True
+ elif sys.argv[1] == '--dump':
+ need_dump = True
+ else:
+ help()
+ return
+
+ result = run_and_communicate(validator_command, "Error running validator: %d")
+ if need_dump:
+ print result
+ return
+
+ if need_golden:
+ with open(golden_file, 'wt') as golden:
+ golden.write(result)
+ else:
+ with open(golden_file, 'rt') as golden:
+ golden_text = golden.read()
+ if golden_text == result:
+ print 'OK'
+ else:
+ print 'ERROR: Golden output mismatch'
+
+if __name__ == '__main__':
+ main()
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidNodeVisitor.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidNodeVisitor.java
new file mode 100644
index 0000000..4de6f97
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidNodeVisitor.java
@@ -0,0 +1,18 @@
+package org.chromium.devtools.jsdoc;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+
+public interface DoDidNodeVisitor {
+ /**
+ * Pre-visit node. Visitable children (if any) of {@code node} will be visited afterwards.
+ * @param node
+ */
+ void doVisit(AstNode node);
+
+ /**
+ * Post-visit node. The method is invoked once all visitable children (if any) of {@code node}
+ * have been visited.
+ * @param node
+ */
+ void didVisit(AstNode node);
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidVisitorAdapter.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidVisitorAdapter.java
new file mode 100644
index 0000000..9be0dee
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/DoDidVisitorAdapter.java
@@ -0,0 +1,35 @@
+package org.chromium.devtools.jsdoc;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.NodeVisitor;
+
+import java.util.ArrayDeque;
+import java.util.Deque;
+
+public abstract class DoDidVisitorAdapter implements DoDidNodeVisitor, NodeVisitor {
+
+ private final Deque<AstNode> nodeStack = new ArrayDeque<>();
+
+ @Override
+ public boolean visit(AstNode node) {
+ AstNode topNode = nodeStack.peek();
+ if (topNode != null && topNode != node.getParent()) {
+ do {
+ topNode = nodeStack.pop();
+ didVisit(topNode);
+ } while (topNode.getParent() != node.getParent());
+ }
+ nodeStack.push(node);
+ doVisit(node);
+ return true;
+ }
+
+ /**
+ * This method MUST be called after {@code foo.visit(doDidVisitorAdapter)} has finished.
+ */
+ public void flush() {
+ while (!nodeStack.isEmpty()) {
+ didVisit(nodeStack.remove());
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/FileCheckerCallable.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/FileCheckerCallable.java
new file mode 100644
index 0000000..a7cc8bb
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/FileCheckerCallable.java
@@ -0,0 +1,95 @@
+package org.chromium.devtools.jsdoc;
+
+import com.google.javascript.rhino.head.CompilerEnvirons;
+import com.google.javascript.rhino.head.IRFactory;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.AstRoot;
+
+import org.chromium.devtools.jsdoc.checks.ContextTrackingValidationCheck;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.StringReader;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+public class FileCheckerCallable implements Callable<ValidatorContext> {
+
+ private final String fileName;
+
+ public FileCheckerCallable(String fileName) {
+ this.fileName = fileName;
+ }
+
+ @Override
+ public ValidatorContext call() {
+ try {
+ ValidatorContext context = new ValidatorContext(readScriptText(), fileName);
+ AstRoot node = parseScript(context);
+ ValidationCheckDispatcher dispatcher = new ValidationCheckDispatcher(context);
+ dispatcher.registerCheck(new ContextTrackingValidationCheck());
+ node.visit(dispatcher);
+ dispatcher.flush();
+ return context;
+ } catch (FileNotFoundException e) {
+ logError("File not found: " + fileName);
+ } catch (IOException e) {
+ logError("Failed to read file " + fileName);
+ }
+ return null;
+ }
+
+ private ScriptText readScriptText() throws IOException {
+ byte[] encoded = Files.readAllBytes(FileSystems.getDefault().getPath(fileName));
+ String text = StandardCharsets.UTF_8.decode(ByteBuffer.wrap(encoded)).toString();
+ return new ScriptText(text);
+ }
+
+ private static AstRoot parseScript(ValidatorContext context) throws IOException {
+ CompilerEnvirons env = new CompilerEnvirons();
+ env.setRecoverFromErrors(true);
+ env.setGenerateDebugInfo(true);
+ env.setRecordingLocalJsDocComments(true);
+ env.setAllowSharpComments(true);
+ env.setRecordingComments(true);
+ IRFactory factory = new IRFactory(env);
+ return factory.parse(new StringReader(context.scriptText.text), context.scriptFileName, 1);
+ }
+
+ private static void logError(String message) {
+ System.err.println("ERROR: " + message);
+ }
+
+ private static class ValidationCheckDispatcher extends DoDidVisitorAdapter {
+ private final List<ValidationCheck> checks = new ArrayList<>(2);
+ private final ValidatorContext context;
+
+ public ValidationCheckDispatcher(ValidatorContext context) {
+ this.context = context;
+ }
+
+ public void registerCheck(ValidationCheck check) {
+ check.setContext(context);
+ checks.add(check);
+ }
+
+ @Override
+ public void doVisit(AstNode node) {
+ for (DoDidNodeVisitor visitor : checks) {
+ visitor.doVisit(node);
+ }
+ }
+
+ @Override
+ public void didVisit(AstNode node) {
+ for (ValidationCheck check : checks) {
+ check.didVisit(node);
+ }
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/JsDocValidator.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/JsDocValidator.java
new file mode 100644
index 0000000..548d8f4
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/JsDocValidator.java
@@ -0,0 +1,121 @@
+/**
+ * Validator for Closure-based JSDoc.
+ */
+
+package org.chromium.devtools.jsdoc;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+public class JsDocValidator {
+
+ private void run(String[] args) {
+ int threadCount = Math.min(args.length, Runtime.getRuntime().availableProcessors());
+ ExecutorService executor = Executors.newFixedThreadPool(threadCount);
+ try {
+ runWithExecutor(args, executor);
+ } finally {
+ executor.shutdown();
+ }
+ }
+
+ private void runWithExecutor(String[] args, ExecutorService executor) {
+ List<Future<ValidatorContext>> futures = new ArrayList<>(args.length);
+ for (String fileName : args) {
+ futures.add(executor.submit(new FileCheckerCallable(fileName)));
+ }
+
+ List<ValidatorContext> contexts = new ArrayList<>(args.length);
+ for (Future<ValidatorContext> future : futures) {
+ try {
+ ValidatorContext context = future.get();
+ if (context != null) {
+ contexts.add(context);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ System.err.println("ERROR - " + e.getMessage());
+ }
+ }
+
+ int entryCount = 0;
+ for (ValidatorContext context : contexts) {
+ entryCount += context.getValidationResult().size();
+ }
+ List<LogEntry> entries = new ArrayList<>(entryCount);
+ for (ValidatorContext context : contexts) {
+ SortedSet<ValidatorContext.MessageRecord> records = context.getValidationResult();
+ for (ValidatorContext.MessageRecord record : records) {
+ entries.add(new LogEntry(context.scriptFileName, record));
+ }
+ }
+ Collections.sort(entries);
+ for (LogEntry entry : entries) {
+ System.err.println(entry.record.text);
+ }
+ if (!entries.isEmpty())
+ System.err.println("Total errors: " + entries.size());
+ }
+
+ public static void main(String[] args) {
+ new JsDocValidator().run(args);
+ }
+
+ private static class LogEntry implements Comparable<LogEntry> {
+ private final String fileName;
+ private final ValidatorContext.MessageRecord record;
+
+ LogEntry(String fileName, ValidatorContext.MessageRecord record) {
+ this.fileName = fileName;
+ this.record = record;
+ }
+
+ @Override
+ public int compareTo(LogEntry other) {
+ int result = fileName.compareTo(other.fileName);
+ if (result != 0) {
+ return result;
+ }
+ return Integer.compare(record.position, other.record.position);
+ }
+
+ @Override
+ public int hashCode() {
+ return 17 + fileName.hashCode() * 3 + this.record.hashCode() * 5;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ LogEntry other = (LogEntry) obj;
+ if (fileName != other.fileName
+ && (fileName != null && !fileName.equals(other.fileName))) {
+ return false;
+ }
+
+ if (record == other.record) {
+ return true;
+ }
+ if (record != null) {
+ if (other.record == null) {
+ return false;
+ }
+ return record.position == other.record.position;
+ }
+ return false;
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ScriptText.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ScriptText.java
new file mode 100644
index 0000000..2f53aa6
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ScriptText.java
@@ -0,0 +1,34 @@
+package org.chromium.devtools.jsdoc;
+
+public class ScriptText {
+
+ public final String text;
+
+ public ScriptText(String text) {
+ this.text = text;
+ }
+
+ public int getColumn(int offset) {
+ int lineStart = findLineStart(offset);
+ return lineStart == -1 ? -1 : offset - lineStart;
+ }
+
+ public String getLineTextAt(int offset) {
+ int lineStart = findLineStart(offset);
+ if (lineStart == -1) {
+ return null;
+ }
+ int lineEnd = text.indexOf('\n', offset);
+ if (lineEnd == -1) {
+ lineEnd = text.length();
+ }
+ return text.substring(lineStart, lineEnd);
+ }
+
+ private int findLineStart(int offset) {
+ if (offset > text.length()) {
+ return -1;
+ }
+ return text.lastIndexOf('\n', offset) + 1;
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidationCheck.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidationCheck.java
new file mode 100644
index 0000000..2dfa1a9
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidationCheck.java
@@ -0,0 +1,22 @@
+package org.chromium.devtools.jsdoc;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+
+/**
+ * A base class for all JSDoc validation checks.
+ */
+public abstract class ValidationCheck implements DoDidNodeVisitor {
+
+ private ValidatorContext context;
+
+ protected String getNodeText(AstNode node) {
+ return context.getNodeText(node);
+ }
+
+ protected void setContext(ValidatorContext context) {
+ if (this.context != null) {
+ throw new RuntimeException("ValidatorContext already set");
+ }
+ this.context = context;
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidatorContext.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidatorContext.java
new file mode 100644
index 0000000..f29f301
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/ValidatorContext.java
@@ -0,0 +1,100 @@
+package org.chromium.devtools.jsdoc;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+public class ValidatorContext {
+
+ private static final Comparator<MessageRecord> MESSAGE_RECORD_COMPARATOR =
+ new Comparator<MessageRecord>() {
+ @Override
+ public int compare(MessageRecord left, MessageRecord right) {
+ return left.position - right.position;
+ }
+ };
+
+ public final ScriptText scriptText;
+ public final String scriptFileName;
+ private final SortedSet<MessageRecord> validationResult =
+ new TreeSet<>(MESSAGE_RECORD_COMPARATOR);
+
+ public ValidatorContext(ScriptText scriptText, String scriptFileName) {
+ this.scriptText = scriptText;
+ this.scriptFileName = scriptFileName;
+ }
+
+ public SortedSet<MessageRecord> getValidationResult() {
+ return Collections.unmodifiableSortedSet(validationResult);
+ }
+
+ public String getNodeText(AstNode node) {
+ if (node == null) {
+ return null;
+ }
+ return scriptText.text.substring(
+ node.getAbsolutePosition(), node.getAbsolutePosition() + node.getLength());
+ }
+
+ public SourcePosition getPosition(AstNode node, int offsetInNodeText) {
+ String nodeText = getNodeText(node);
+ if (offsetInNodeText >= nodeText.length())
+ return null;
+ int line = node.getLineno();
+ int column = scriptText.getColumn(node.getAbsolutePosition());
+ for (int i = 0; i < offsetInNodeText; ++i) {
+ char ch = nodeText.charAt(i);
+ if (ch == '\n') {
+ line += 1;
+ column = 0;
+ continue;
+ }
+ column += 1;
+ }
+ return new SourcePosition(line, column);
+ }
+
+ public void reportErrorInNode(AstNode node, int offsetInNodeText, String errorMessage) {
+ SourcePosition position = getPosition(node, offsetInNodeText);
+ if (position == null) {
+ // FIXME: Handle error?
+ return;
+ }
+ StringBuilder positionMarker = new StringBuilder(position.column + 1);
+ for (int i = position.column; i > 0; --i) {
+ positionMarker.append(' ');
+ }
+ positionMarker.append('^');
+ int errorAbsolutePosition = node.getAbsolutePosition() + offsetInNodeText;
+ String message = String.format("%s:%d: ERROR - %s%n%s%n%s%n",
+ scriptFileName,
+ position.line,
+ errorMessage,
+ scriptText.getLineTextAt(errorAbsolutePosition),
+ positionMarker.toString());
+ validationResult.add(new MessageRecord(errorAbsolutePosition, message));
+ }
+
+ public static class MessageRecord {
+ public final int position;
+ public final String text;
+
+ public MessageRecord(int position, String text) {
+ this.position = position;
+ this.text = text;
+ }
+ }
+
+ public static class SourcePosition {
+ public final int line;
+ public final int column;
+
+ public SourcePosition(int line, int column) {
+ this.line = line;
+ this.column = column;
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
new file mode 100644
index 0000000..e930753
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
@@ -0,0 +1,92 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.Token;
+import com.google.javascript.rhino.head.ast.Assignment;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.Comment;
+import com.google.javascript.rhino.head.ast.FunctionNode;
+import com.google.javascript.rhino.head.ast.ObjectProperty;
+
+public class AstUtil {
+
+ private static final String PROTOTYPE_SUFFIX = ".prototype";
+
+ static boolean hasParentOfType(AstNode node, int tokenType) {
+ AstNode parent = node.getParent();
+ if (parent == null) {
+ return false;
+ }
+ return parent.getType() == tokenType;
+ }
+
+ static AstNode getFunctionNameNode(FunctionNode functionNode) {
+ AstNode nameNode = functionNode.getFunctionName();
+ if (nameNode != null) {
+ return nameNode;
+ }
+
+ if (AstUtil.hasParentOfType(functionNode, Token.COLON)) {
+ return ((ObjectProperty) functionNode.getParent()).getLeft();
+ }
+
+ if (AstUtil.hasParentOfType(functionNode, Token.ASSIGN)) {
+ Assignment assignment = (Assignment) functionNode.getParent();
+ if (assignment.getRight() == functionNode) {
+ return assignment.getLeft();
+ }
+ }
+ return null;
+ }
+
+ static String getTypeNameFromPrototype(String value) {
+ return value.substring(0, value.length() - PROTOTYPE_SUFFIX.length());
+ }
+
+ static boolean isPrototypeName(String typeName) {
+ return typeName.endsWith(PROTOTYPE_SUFFIX);
+ }
+
+ static AstNode getAssignedTypeNameNode(Assignment assignment) {
+ AstNode typeNameNode = assignment.getLeft();
+ if (typeNameNode.getType() != Token.GETPROP && typeNameNode.getType() != Token.NAME) {
+ return null;
+ }
+ return typeNameNode;
+ }
+
+ static Comment getJsDocNode(AstNode node) {
+ if (node.getType() == Token.FUNCTION) {
+ return getJsDocNode((FunctionNode) node);
+ } else {
+ return node.getJsDocNode();
+ }
+ }
+
+ static Comment getJsDocNode(FunctionNode functionNode) {
+ Comment jsDocNode = functionNode.getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+
+ // reader.onloadend = function() {...}
+ if (hasParentOfType(functionNode, Token.ASSIGN)) {
+ Assignment assignment = (Assignment) functionNode.getParent();
+ if (assignment.getRight() == functionNode) {
+ jsDocNode = assignment.getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+ }
+ }
+
+ if (hasParentOfType(functionNode, Token.COLON)) {
+ jsDocNode = ((ObjectProperty) functionNode.getParent()).getLeft().getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+ }
+ return null;
+ }
+
+ private AstUtil() {}
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingChecker.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingChecker.java
new file mode 100644
index 0000000..2cd5614
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingChecker.java
@@ -0,0 +1,25 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+
+import org.chromium.devtools.jsdoc.ValidatorContext;
+
+abstract class ContextTrackingChecker {
+ private ContextTrackingState state;
+
+ abstract void enterNode(AstNode node);
+
+ abstract void leaveNode(AstNode node);
+
+ void setState(ContextTrackingState state) {
+ this.state = state;
+ }
+
+ protected ContextTrackingState getState() {
+ return state;
+ }
+
+ protected ValidatorContext getContext() {
+ return state.getContext();
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingState.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingState.java
new file mode 100644
index 0000000..c98a882
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingState.java
@@ -0,0 +1,58 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.ast.AstNode;
+
+import org.chromium.devtools.jsdoc.ValidatorContext;
+
+import java.util.Deque;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+public class ContextTrackingState {
+ private final ValidatorContext context;
+
+ ContextTrackingState(ValidatorContext context) {
+ this.context = context;
+ }
+
+ final Map<String, TypeRecord> typeRecordsByTypeName = new HashMap<>();
+ final Deque<TypeRecord> typeRecords = new LinkedList<>();
+ final Deque<FunctionRecord> functionRecords = new LinkedList<>();
+
+ TypeRecord getCurrentTypeRecord() {
+ return typeRecords.peekLast();
+ }
+
+ FunctionRecord getCurrentFunctionRecord() {
+ return functionRecords.peekLast();
+ }
+
+ ValidatorContext getContext() {
+ return context;
+ }
+
+ Map<String, TypeRecord> getTypeRecordsByTypeName() {
+ return typeRecordsByTypeName;
+ }
+
+ String getNodeText(AstNode node) {
+ return getContext().getNodeText(node);
+ }
+
+ void pushTypeRecord(TypeRecord record) {
+ typeRecords.addLast(record);
+ }
+
+ void popTypeRecord() {
+ typeRecords.removeLast();
+ }
+
+ void pushFunctionRecord(FunctionRecord record) {
+ functionRecords.addLast(record);
+ }
+
+ void popFunctionRecord() {
+ functionRecords.removeLast();
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingValidationCheck.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingValidationCheck.java
new file mode 100644
index 0000000..ce1c3c2
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ContextTrackingValidationCheck.java
@@ -0,0 +1,201 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.Token;
+import com.google.javascript.rhino.head.ast.Assignment;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.Comment;
+import com.google.javascript.rhino.head.ast.FunctionNode;
+
+import org.chromium.devtools.jsdoc.ValidationCheck;
+import org.chromium.devtools.jsdoc.ValidatorContext;
+import org.chromium.devtools.jsdoc.checks.TypeRecord.InheritanceEntry;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ContextTrackingValidationCheck extends ValidationCheck {
+
+ private static final Pattern EXTENDS_PATTERN =
+ Pattern.compile("@extends\\s+\\{\\s*([^\\s}]+)\\s*\\}");
+ private static final Pattern RETURN_PATTERN =
+ Pattern.compile("@return\\s+\\{\\s*(.+)\\s*\\}");
+ private ContextTrackingState state;
+ private final List<ContextTrackingChecker> clients = new ArrayList<>(5);
+
+ @Override
+ protected void setContext(ValidatorContext context) {
+ super.setContext(context);
+ state = new ContextTrackingState(context);
+ registerClient(new ProtoFollowsExtendsChecker());
+ registerClient(new RequiredThisAnnotationChecker());
+ registerClient(new ReturnAnnotationChecker());
+ }
+
+ @Override
+ public void doVisit(AstNode node) {
+ switch (node.getType()) {
+ case Token.ASSIGN:
+ enterAssignNode((Assignment) node);
+ break;
+ case Token.FUNCTION:
+ enterFunctionNode((FunctionNode) node);
+ break;
+ default:
+ break;
+ }
+
+ enterNode(node);
+ }
+
+ @Override
+ public void didVisit(AstNode node) {
+ leaveNode(node);
+
+ switch (node.getType()) {
+ case Token.ASSIGN:
+ leaveAssignNode((Assignment) node);
+ break;
+ case Token.FUNCTION:
+ leaveFunctionNode((FunctionNode) node);
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void registerClient(ContextTrackingChecker client) {
+ this.clients.add(client);
+ client.setState(state);
+ }
+
+ private void enterNode(AstNode node) {
+ for (ContextTrackingChecker client : clients) {
+ client.enterNode(node);
+ }
+ }
+
+ private void leaveNode(AstNode node) {
+ for (ContextTrackingChecker client : clients) {
+ client.leaveNode(node);
+ }
+ }
+
+ private void enterFunctionNode(FunctionNode node) {
+ Comment jsDocNode = getJsDocNode(node);
+ AstNode nameNode = AstUtil.getFunctionNameNode(node);
+
+ // It can be a type declaration: /** @constructor */ function MyType() {...}.
+ boolean isConstructor =
+ nameNode != null && rememberTypeRecordIfNeeded(getNodeText(nameNode), jsDocNode);
+ TypeRecord parentType = state.getCurrentFunctionRecord() == null
+ ? state.getCurrentTypeRecord()
+ : null;
+ state.pushFunctionRecord(new FunctionRecord(
+ node,
+ isConstructor,
+ getReturnType(jsDocNode),
+ parentType,
+ state.getCurrentFunctionRecord()));
+ }
+
+ @SuppressWarnings("unused")
+ private void leaveFunctionNode(FunctionNode node) {
+ state.functionRecords.removeLast();
+ }
+
+ private String getReturnType(Comment jsDocNode) {
+ if (jsDocNode == null) {
+ return null;
+ }
+ String jsDoc = getNodeText(jsDocNode);
+ Matcher m = RETURN_PATTERN.matcher(jsDoc);
+ if (!m.find()) {
+ return null;
+ }
+ return m.group(1);
+ }
+
+ private void enterAssignNode(Assignment assignment) {
+ String assignedTypeName = getAssignedTypeName(assignment);
+ if (assignedTypeName == null) {
+ return;
+ }
+ if (AstUtil.isPrototypeName(assignedTypeName)) {
+ // MyType.prototype = ...
+ String typeName = AstUtil.getTypeNameFromPrototype(assignedTypeName);
+ TypeRecord typeRecord = state.typeRecordsByTypeName.get(typeName);
+ // We should push anything here to maintain a valid current type record.
+ state.pushTypeRecord(typeRecord);
+ state.pushFunctionRecord(null);
+ return;
+ }
+
+ if (assignment.getRight().getType() == Token.FUNCTION) {
+ // MyType = function() {...}
+ rememberTypeRecordIfNeeded(assignedTypeName, getJsDocNode(assignment));
+ }
+
+ }
+
+ private void leaveAssignNode(Assignment assignment) {
+ String assignedTypeName = getAssignedTypeName(assignment);
+ if (assignedTypeName == null) {
+ return;
+ }
+ if (AstUtil.isPrototypeName(assignedTypeName)) {
+ // Remove the current type record when leaving prototype object.
+ state.typeRecords.removeLast();
+ state.functionRecords.removeLast();
+ return;
+ }
+ }
+
+ private String getAssignedTypeName(Assignment assignment) {
+ AstNode node = AstUtil.getAssignedTypeNameNode(assignment);
+ return getNodeText(node);
+ }
+
+ private boolean rememberTypeRecordIfNeeded(String typeName, Comment jsDocNode) {
+ String jsDoc = getNodeText(jsDocNode);
+ if (!isConstructor(jsDoc) && !isInterface(jsDoc)) {
+ return false;
+ }
+ TypeRecord record = new TypeRecord(
+ typeName,
+ isInterface(jsDoc),
+ getExtendsEntries(jsDocNode));
+ state.typeRecordsByTypeName.put(typeName, record);
+ return true;
+ }
+
+ private static boolean isInterface(String jsDoc) {
+ return jsDoc != null && jsDoc.contains("@interface");
+ }
+
+ private static boolean isConstructor(String jsDoc) {
+ return jsDoc != null && jsDoc.contains("@constructor");
+ }
+
+ private static Comment getJsDocNode(AstNode node) {
+ if (node.getType() == Token.FUNCTION) {
+ return AstUtil.getJsDocNode((FunctionNode) node);
+ }
+ return node.getJsDocNode();
+ }
+
+ private List<InheritanceEntry> getExtendsEntries(Comment jsDocNode) {
+ if (jsDocNode == null) {
+ return Collections.emptyList();
+ }
+ List<InheritanceEntry> result = new ArrayList<>(2);
+ Matcher matcher = EXTENDS_PATTERN.matcher(getNodeText(jsDocNode));
+ while (matcher.find()) {
+ result.add(new InheritanceEntry(matcher.group(1), jsDocNode, matcher.start(1)));
+ }
+
+ return result;
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/FunctionRecord.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/FunctionRecord.java
new file mode 100644
index 0000000..87ed2d1
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/FunctionRecord.java
@@ -0,0 +1,28 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.ast.FunctionNode;
+
+public class FunctionRecord {
+ final FunctionNode functionNode;
+ final boolean isConstructor;
+ final String returnType;
+ final TypeRecord enclosingType;
+ final FunctionRecord enclosingFunctionRecord;
+
+ public FunctionRecord(FunctionNode functionNode, boolean isConstructor,
+ String returnType, TypeRecord parentType, FunctionRecord enclosingFunctionRecord) {
+ this.functionNode = functionNode;
+ this.isConstructor = isConstructor;
+ this.returnType = returnType;
+ this.enclosingType = parentType;
+ this.enclosingFunctionRecord = enclosingFunctionRecord;
+ }
+
+ public boolean isTopLevelFunction() {
+ return enclosingFunctionRecord == null;
+ }
+
+ public boolean hasReturnAnnotation() {
+ return returnType != null;
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ProtoFollowsExtendsChecker.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ProtoFollowsExtendsChecker.java
new file mode 100644
index 0000000..7a968c5
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ProtoFollowsExtendsChecker.java
@@ -0,0 +1,126 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.Token;
+import com.google.javascript.rhino.head.ast.Assignment;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.ObjectProperty;
+
+import org.chromium.devtools.jsdoc.checks.TypeRecord.InheritanceEntry;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public final class ProtoFollowsExtendsChecker extends ContextTrackingChecker {
+
+ private static final String PROTO_PROPERTY_NAME = "__proto__";
+ private final Set<TypeRecord> typesWithAssignedProto = new HashSet<>();
+
+ @Override
+ protected void enterNode(AstNode node) {
+ if (node.getType() == Token.COLON) {
+ handleColonNode((ObjectProperty) node);
+ return;
+ }
+ if (node.getType() == Token.ASSIGN) {
+ handleAssignment((Assignment) node);
+ return;
+ }
+ }
+
+ @Override
+ protected void leaveNode(AstNode node) {
+ if (node.getType() == Token.SCRIPT) {
+ checkFinished();
+ }
+ }
+
+ private void checkFinished() {
+ for (TypeRecord record : getState().getTypeRecordsByTypeName().values()) {
+ if (record.isInterface || typesWithAssignedProto.contains(record)) {
+ continue;
+ }
+ InheritanceEntry entry = record.getFirstExtendedType();
+ if (entry != null) {
+ getContext().reportErrorInNode(
+ entry.jsDocNode, entry.offsetInJsDocText,
+ String.format("No __proto__ assigned for type %s having @extends",
+ record.typeName));
+ }
+ }
+ }
+
+ private void handleColonNode(ObjectProperty node) {
+ ContextTrackingState state = getState();
+ TypeRecord type = state.getCurrentTypeRecord();
+ if (type == null) {
+ return;
+ }
+ String propertyName = state.getNodeText(node.getLeft());
+ if (!PROTO_PROPERTY_NAME.equals(propertyName)) {
+ return;
+ }
+ TypeRecord currentType = state.getCurrentTypeRecord();
+ if (currentType == null) {
+ // FIXME: __proto__: Foo.prototype not in an object literal for Bar.prototype.
+ return;
+ }
+ typesWithAssignedProto.add(currentType);
+ String value = state.getNodeText(node.getRight());
+ if (!AstUtil.isPrototypeName(value)) {
+ state.getContext().reportErrorInNode(
+ node.getRight(), 0, "__proto__ value is not a prototype");
+ return;
+ }
+ String superType = AstUtil.getTypeNameFromPrototype(value);
+ if (type.isInterface) {
+ state.getContext().reportErrorInNode(node.getLeft(), 0, String.format(
+ "__proto__ defined for interface %s", type.typeName));
+ return;
+ } else {
+ if (type.extendedTypes.isEmpty()) {
+ state.getContext().reportErrorInNode(node.getRight(), 0, String.format(
+ "No @extends annotation for %s extending %s", type.typeName, superType));
+ return;
+ }
+ }
+ // FIXME: Should we check that there is only one @extend-ed type
+ // for the non-interface |type|? Closure is supposed to do this anyway...
+ InheritanceEntry entry = type.getFirstExtendedType();
+ String extendedTypeName = entry.superTypeName;
+ if (!superType.equals(extendedTypeName)) {
+ state.getContext().reportErrorInNode(node.getRight(), 0, String.format(
+ "Supertype does not match %s declared in @extends for %s (line %d)",
+ extendedTypeName, type.typeName,
+ state.getContext().getPosition(entry.jsDocNode, entry.offsetInJsDocText).line));
+ }
+ }
+
+ private void handleAssignment(Assignment assignment) {
+ String assignedTypeName =
+ getState().getNodeText(AstUtil.getAssignedTypeNameNode(assignment));
+ if (assignedTypeName == null) {
+ return;
+ }
+ if (!AstUtil.isPrototypeName(assignedTypeName)) {
+ return;
+ }
+ AstNode prototypeValueNode = assignment.getRight();
+
+ if (prototypeValueNode.getType() == Token.OBJECTLIT) {
+ return;
+ }
+
+ // Foo.prototype = notObjectLiteral
+ ContextTrackingState state = getState();
+ TypeRecord type = state.getCurrentTypeRecord();
+ if (type == null) {
+ // Assigning a prototype for unknown type. Leave it to the closure compiler.
+ return;
+ }
+ if (!type.extendedTypes.isEmpty()) {
+ state.getContext().reportErrorInNode(prototypeValueNode, 0, String.format(
+ "@extends found for type %s but its prototype is not an object "
+ + "containing __proto__", AstUtil.getTypeNameFromPrototype(assignedTypeName)));
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/RequiredThisAnnotationChecker.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/RequiredThisAnnotationChecker.java
new file mode 100644
index 0000000..02a39c0
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/RequiredThisAnnotationChecker.java
@@ -0,0 +1,52 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.Token;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.Comment;
+import com.google.javascript.rhino.head.ast.FunctionNode;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public final class RequiredThisAnnotationChecker extends ContextTrackingChecker {
+
+ private final Set<FunctionRecord> functionsRequiringThisAnnotation = new HashSet<>();
+
+ @Override
+ void enterNode(AstNode node) {
+ if (node.getType() == Token.THIS) {
+ FunctionRecord function = getState().getCurrentFunctionRecord();
+ if (function == null) {
+ return;
+ }
+ if (!function.isTopLevelFunction() && !function.isConstructor) {
+ functionsRequiringThisAnnotation.add(function);
+ }
+ return;
+ }
+ }
+
+ @Override
+ void leaveNode(AstNode node) {
+ if (node.getType() != Token.FUNCTION) {
+ return;
+ }
+
+ ContextTrackingState state = getState();
+ FunctionRecord record = state.getCurrentFunctionRecord();
+ if (!functionsRequiringThisAnnotation.contains(record)) {
+ return;
+ }
+ FunctionNode functionNode = (FunctionNode) node;
+ AstNode functionNameNode = AstUtil.getFunctionNameNode(functionNode);
+ if (functionNameNode != null && shouldAddThisAnnotation(functionNode)) {
+ state.getContext().reportErrorInNode(functionNameNode, 0,
+ "@this annotation is required for functions referencing 'this'");
+ }
+ }
+
+ private boolean shouldAddThisAnnotation(FunctionNode node) {
+ Comment comment = AstUtil.getJsDocNode(node);
+ return comment == null || !getContext().getNodeText(comment).contains("@this");
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ReturnAnnotationChecker.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ReturnAnnotationChecker.java
new file mode 100644
index 0000000..3b8c300
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/ReturnAnnotationChecker.java
@@ -0,0 +1,145 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.Token;
+import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.Comment;
+import com.google.javascript.rhino.head.ast.FunctionNode;
+import com.google.javascript.rhino.head.ast.ObjectProperty;
+import com.google.javascript.rhino.head.ast.ReturnStatement;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public final class ReturnAnnotationChecker extends ContextTrackingChecker {
+
+ private final Set<FunctionRecord> valueReturningFunctions = new HashSet<>();
+ private final Set<FunctionRecord> throwingFunctions = new HashSet<>();
+
+ @Override
+ public void enterNode(AstNode node) {
+ switch (node.getType()) {
+ case Token.RETURN:
+ handleReturn((ReturnStatement) node);
+ break;
+ case Token.THROW:
+ handleThrow();
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void handleReturn(ReturnStatement node) {
+ if (node.getReturnValue() == null || AstUtil.hasParentOfType(node, Token.ASSIGN)) {
+ return;
+ }
+
+ FunctionRecord record = getState().getCurrentFunctionRecord();
+ if (record == null) {
+ return;
+ }
+ AstNode nameNode = getFunctionNameNode(record.functionNode);
+ if (nameNode == null) {
+ return;
+ }
+ valueReturningFunctions.add(record);
+ }
+
+ private void handleThrow() {
+ FunctionRecord record = getState().getCurrentFunctionRecord();
+ if (record == null) {
+ return;
+ }
+ AstNode nameNode = getFunctionNameNode(record.functionNode);
+ if (nameNode == null) {
+ return;
+ }
+ throwingFunctions.add(record);
+ }
+
+ @Override
+ public void leaveNode(AstNode node) {
+ if (node.getType() != Token.FUNCTION) {
+ return;
+ }
+
+ FunctionRecord record = getState().getCurrentFunctionRecord();
+ if (record != null) {
+ checkFunctionAnnotation(record);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private void checkFunctionAnnotation(FunctionRecord function) {
+ String functionName = getFunctionName(function.functionNode);
+ if (functionName == null) {
+ return;
+ }
+ boolean isApiFunction = !functionName.startsWith("_")
+ && (function.isTopLevelFunction()
+ || (function.enclosingType != null
+ && isPlainTopLevelFunction(function.enclosingFunctionRecord)));
+ Comment jsDocNode = AstUtil.getJsDocNode(function.functionNode);
+
+ boolean isReturningFunction = valueReturningFunctions.contains(function);
+ boolean isInterfaceFunction =
+ function.enclosingType != null && function.enclosingType.isInterface;
+ int invalidAnnotationIndex =
+ invalidReturnsAnnotationIndex(getState().getNodeText(jsDocNode));
+ if (invalidAnnotationIndex != -1) {
+ String suggestedResolution = (isReturningFunction || isInterfaceFunction)
+ ? "should be @return instead"
+ : "please remove, as function does not return value";
+ getContext().reportErrorInNode(jsDocNode, invalidAnnotationIndex,
+ String.format("invalid @returns annotation found - %s", suggestedResolution));
+ return;
+ }
+ AstNode functionNameNode = getFunctionNameNode(function.functionNode);
+ if (functionNameNode == null) {
+ return;
+ }
+
+ if (isReturningFunction) {
+ if (!function.hasReturnAnnotation() && isApiFunction) {
+ getContext().reportErrorInNode(functionNameNode, 0,
+ "@return annotation is required for API functions that return value");
+ }
+ } else {
+ // A @return-function that does not actually return anything and
+ // is intended to be overridden in subclasses must throw.
+ if (function.hasReturnAnnotation()
+ && !isInterfaceFunction
+ && !throwingFunctions.contains(function)) {
+ getContext().reportErrorInNode(functionNameNode, 0,
+ "@return annotation found, yet function does not return value");
+ }
+ }
+ }
+
+ private static boolean isPlainTopLevelFunction(FunctionRecord record) {
+ return record != null && record.isTopLevelFunction()
+ && (record.enclosingType == null && !record.isConstructor);
+ }
+
+ private String getFunctionName(FunctionNode functionNode) {
+ AstNode nameNode = getFunctionNameNode(functionNode);
+ return nameNode == null ? null : getState().getNodeText(nameNode);
+ }
+
+ private static int invalidReturnsAnnotationIndex(String jsDoc) {
+ return jsDoc == null ? -1 : jsDoc.indexOf("@returns");
+ }
+
+ private static AstNode getFunctionNameNode(FunctionNode functionNode) {
+ AstNode nameNode = functionNode.getFunctionName();
+ if (nameNode != null) {
+ return nameNode;
+ }
+
+ if (AstUtil.hasParentOfType(functionNode, Token.COLON)) {
+ return ((ObjectProperty) functionNode.getParent()).getLeft();
+ }
+ // Do not require annotation for assignment-RHS functions.
+ return null;
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/TypeRecord.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/TypeRecord.java
new file mode 100644
index 0000000..861f73a
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/TypeRecord.java
@@ -0,0 +1,34 @@
+package org.chromium.devtools.jsdoc.checks;
+
+import com.google.javascript.rhino.head.ast.Comment;
+
+import java.util.List;
+
+public class TypeRecord {
+ public final String typeName;
+ public final boolean isInterface;
+ public final List<InheritanceEntry> extendedTypes;
+
+ public TypeRecord(String typeName, boolean isInterface,
+ List<InheritanceEntry> extendedTypes) {
+ this.typeName = typeName;
+ this.isInterface = isInterface;
+ this.extendedTypes = extendedTypes;
+ }
+
+ public InheritanceEntry getFirstExtendedType() {
+ return this.extendedTypes.isEmpty() ? null : this.extendedTypes.get(0);
+ }
+
+ public static class InheritanceEntry {
+ public final String superTypeName;
+ public final Comment jsDocNode;
+ public final int offsetInJsDocText;
+
+ public InheritanceEntry(String superTypeName, Comment jsDocNode, int offsetInJsDocText) {
+ this.superTypeName = superTypeName;
+ this.offsetInJsDocText = offsetInJsDocText;
+ this.jsDocNode = jsDocNode;
+ }
+ }
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/tests/golden.dat b/Source/devtools/scripts/jsdoc-validator/tests/golden.dat
new file mode 100644
index 0000000..4bc1ad0
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/tests/golden.dat
@@ -0,0 +1,165 @@
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:8: ERROR - No __proto__ assigned for type DerivedNoProto having @extends
+ * @extends {Base}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:19: ERROR - __proto__ value is not a prototype
+ __proto__: Base
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:28: ERROR - __proto__ defined for interface InterfaceWithProto
+ __proto__: Base.prototype
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:37: ERROR - No @extends annotation for ProtoNoExtends extending Base
+ __proto__: Base.prototype
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:47: ERROR - Supertype does not match Base declared in @extends for ProtoNotSameAsExtends (line 42)
+ __proto__: Object.prototype
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:52: ERROR - No __proto__ assigned for type ProtoNotObjectLiteral having @extends
+ * @extends {Base}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/proto.js:56: ERROR - @extends found for type ProtoNotObjectLiteral but its prototype is not an object containing __proto__
+ProtoNotObjectLiteral.prototype = Object;
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:1: ERROR - @return annotation is required for API functions that return value
+function badFuncNoAnnotation() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:8: ERROR - @return annotation found, yet function does not return value
+function badFuncAnnotatedButNoReturn() // ERROR - no @return annotation.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:15: ERROR - @return annotation found, yet function does not return value
+function badFuncAnnotatedButNoReturnValue() // ERROR - no returned value.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:29: ERROR - invalid @returns annotation found - should be @return instead
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:37: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:45: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:62: ERROR - @return annotation is required for API functions that return value
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:91: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:99: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:105: ERROR - invalid @returns annotation found - should be @return instead
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:113: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:121: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:141: ERROR - @return annotation is required for API functions that return value
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:162: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:170: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:176: ERROR - invalid @returns annotation found - should be @return instead
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:184: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:192: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:212: ERROR - invalid @returns annotation found - should be @return instead
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:233: ERROR - @return annotation is required for API functions that return value
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:254: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:262: ERROR - @return annotation found, yet function does not return value
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:268: ERROR - invalid @returns annotation found - should be @return instead
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:276: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/return.js:284: ERROR - invalid @returns annotation found - please remove, as function does not return value
+ * @returns {number}
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:19: ERROR - @this annotation is required for functions referencing 'this'
+ function badInnerCallback() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:24: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInCtor() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:54: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInMethod() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:73: ERROR - @this annotation is required for functions referencing 'this'
+ function badInnerCallback() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:78: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInCtor() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:98: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInMethod() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:121: ERROR - @this annotation is required for functions referencing 'this'
+ function badInnerCallback() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:126: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInCtor() {
+ ^
+
+/usr/local/google/home/apavlov/dev/blink/src/third_party/WebKit/Source/devtools/scripts/jsdoc-validator/tests/this.js:146: ERROR - @this annotation is required for functions referencing 'this'
+ function badCallbackInMethod() {
+ ^
+
+Total errors: 41
diff --git a/Source/devtools/scripts/jsdoc-validator/tests/proto.js b/Source/devtools/scripts/jsdoc-validator/tests/proto.js
new file mode 100644
index 0000000..f1abf0d
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/tests/proto.js
@@ -0,0 +1,56 @@
+/**
+ * @constructor
+ */
+Base = function() {}
+
+/**
+ * @constructor
+ * @extends {Base}
+ */
+DerivedNoProto = function() {}
+
+/**
+ * @constructor
+ * @extends {Base}
+ */
+DerivedBadProto = function() {}
+
+DerivedBadProto.prototype = {
+ __proto__: Base
+}
+
+/**
+ * @interface
+ */
+InterfaceWithProto = function() {}
+
+InterfaceWithProto.prototype = {
+ __proto__: Base.prototype
+}
+
+/**
+ * @constructor
+ */
+ProtoNoExtends = function() {}
+
+ProtoNoExtends.prototype = {
+ __proto__: Base.prototype
+}
+
+/**
+ * @constructor
+ * @extends {Base}
+ */
+ProtoNotSameAsExtends = function() {}
+
+ProtoNotSameAsExtends.prototype = {
+ __proto__: Object.prototype
+}
+
+/**
+ * @constructor
+ * @extends {Base}
+ */
+ProtoNotObjectLiteral = function() {}
+
+ProtoNotObjectLiteral.prototype = Object;
diff --git a/Source/devtools/scripts/jsdoc-validator/tests/return.js b/Source/devtools/scripts/jsdoc-validator/tests/return.js
new file mode 100644
index 0000000..3f91930
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/tests/return.js
@@ -0,0 +1,293 @@
+function badFuncNoAnnotation() {
+ return 1; // ERROR - no @return annotation.
+}
+
+/**
+ * @return {number}
+ */
+function badFuncAnnotatedButNoReturn() // ERROR - no @return annotation.
+{
+}
+
+/**
+ * @return {number}
+ */
+function badFuncAnnotatedButNoReturnValue() // ERROR - no returned value.
+{
+ return;
+}
+
+/**
+ * @return {number}
+ */
+function goodFunc() // OK - annotated @return.
+{
+ return 1;
+}
+
+/**
+ * @returns {number}
+ */
+function badReturnsShouldBeReturnFunc() // ERROR - @returns, should be @return.
+{
+ return 1;
+}
+
+/**
+ * @returns {number}
+ */
+function badReturnsShouldBeReturnNoValueFunc() // ERROR - @returns, should be @return.
+{
+ return;
+}
+
+/**
+ * @returns {number}
+ */
+function badReturnsShouldBeAbsentFunc() // ERROR - @returns, should be absent.
+{
+}
+
+/**
+ * @constructor
+ */
+function TypeOne() {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+}
+
+TypeOne.prototype = {
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ {
+ return 1;
+ },
+
+ _privateMethod: function() // OK - non-public method.
+ {
+ return 1;
+ },
+
+ methodTwo: function()
+ {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+ },
+
+ /**
+ * @return {number}
+ */
+ methodThatThrows: function() // OK - throws and should be overridden in subclasses.
+ {
+ throw "Not implemented";
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ {
+ return;
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ {
+ var foo = 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return
+ {
+ return 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent
+ {
+ return;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent
+ {
+ var foo = 1;
+ }
+}
+
+
+/**
+ * @constructor
+ */
+TypeTwo = function() {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+}
+
+TypeTwo.prototype = {
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ {
+ return 1;
+ },
+
+ _privateMethod: function() // OK - non-public method.
+ {
+ return 1;
+ },
+
+ methodTwo: function()
+ {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ {
+ return;
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ {
+ var foo = 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return
+ {
+ return 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent
+ {
+ return;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent
+ {
+ var foo = 1;
+ }
+}
+
+/**
+ * @interface
+ */
+Interface = function() {}
+
+Interface.prototype = {
+ /**
+ * @return {number}
+ */
+ interfaceMethod: function() {}, // OK - interface method.
+
+ /**
+ * @returns {number}
+ */
+ badReturnsInterfaceMethod: function() {} // ERROR - @returns instead of return.
+}
+
+/**
+ * @return {!Object}
+ */
+function returnConstructedObject() {
+
+/**
+ * @constructor
+ */
+TypeThree = function() {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+}
+
+TypeThree.prototype = {
+ badApiMethodNoAnnotation: function() // ERROR - public method.
+ {
+ return 1;
+ },
+
+ _privateMethod: function() // OK - non-public method.
+ {
+ return 1;
+ },
+
+ methodTwo: function()
+ {
+ function callback() // OK - not a method.
+ {
+ return 1;
+ }
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturnValue: function() // ERROR - does not return value.
+ {
+ return;
+ },
+
+ /**
+ * @return {number}
+ */
+ badMethodDoesNotReturn: function() // ERROR - does not return.
+ {
+ var foo = 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeReturn: function() // ERROR - @returns, should be @return
+ {
+ return 1;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsentToo: function() // ERROR - @returns, should be absent
+ {
+ return;
+ },
+
+ /**
+ * @returns {number}
+ */
+ badMethodReturnsShouldBeAbsent: function() // ERROR - @returns, should be absent
+ {
+ var foo = 1;
+ }
+}
+
+return new TypeThree();
+}
diff --git a/Source/devtools/scripts/jsdoc-validator/tests/this.js b/Source/devtools/scripts/jsdoc-validator/tests/this.js
new file mode 100644
index 0000000..9d23f4a
--- /dev/null
+++ b/Source/devtools/scripts/jsdoc-validator/tests/this.js
@@ -0,0 +1,175 @@
+this.foo = this.foo + 1; // OK - outside of function.
+
+function f() {
+ this.foo = this.foo + 1; // OK - global |this|.
+}
+
+/**
+ * @constructor
+ */
+function TypeOne() {
+ this.foo = this.foo + 1; // OK - object field in ctor.
+
+ /**
+ * @this {TypeOne}
+ */
+ function callbackOne() {
+ this.foo = this.foo + 1; // OK - @this declared.
+
+ function badInnerCallback() {
+ this.foo = this.foo + 2; // ERROR - @this not declared.
+ }
+ }
+
+ function badCallbackInCtor() {
+ this.foo = this.foo + 1; // ERROR - @this not declared.
+ }
+}
+
+TypeOne.prototype = {
+ addListener: function(callback)
+ {
+ if (typeof callback !== "function")
+ throw "addListener: callback is not a function";
+ if (this._listeners.length === 0)
+ extensionServer.sendRequest({ command: commands.Subscribe, type: this._type });
+ this._listeners.push(callback);
+ extensionServer.registerHandler("notify-" + this._type, this._dispatch.bind(this));
+ },
+
+ funcOne: function() {
+ this.foo = this.foo + 1; // OK - in method.
+ },
+
+ funcTwo: function() {
+ /**
+ * @this {TypeOne}
+ */
+ function callback() {
+ this.foo = this.foo + 1; // OK - @this declared.
+ }
+ },
+
+ funcThree: function() {
+ function badCallbackInMethod() {
+ this.foo = this.foo + 1; // ERROR - @this not declared.
+ }
+ }
+}
+
+
+/**
+ * @constructor
+ */
+TypeTwo = function() {
+ this.bar = this.bar + 1; // OK - object field in ctor.
+
+ /**
+ * @this {TypeTwo}
+ */
+ function callbackOne() {
+ this.bar = this.bar + 1; // OK - @this declared.
+
+ function badInnerCallback() {
+ this.bar = this.bar + 2; // ERROR - @this not declared.
+ }
+ }
+
+ function badCallbackInCtor() {
+ this.bar = this.bar + 1; // ERROR - @this not declared.
+ }
+}
+
+TypeTwo.prototype = {
+ funcOne: function() {
+ this.bar = this.bar + 1; // OK - in method.
+ },
+
+ funcTwo: function() {
+ /**
+ * @this {TypeTwo}
+ */
+ function callback() {
+ this.bar = this.bar + 1; // OK - @this declared.
+ }
+ },
+
+ funcThree: function() {
+ function badCallbackInMethod() {
+ this.bar = this.bar + 1; // ERROR - @this not declared.
+ }
+ }
+}
+
+/**
+ * @return {!Object}
+ */
+function returnConstructedObject() {
+
+/**
+ * @constructor
+ */
+TypeThree = function() {
+ this.bar = this.bar + 1; // OK - object field in ctor.
+
+ /**
+ * @this {TypeThree}
+ */
+ function callbackOne() {
+ this.bar = this.bar + 1; // OK - @this declared.
+
+ function badInnerCallback() {
+ this.bar = this.bar + 2; // ERROR - @this not declared.
+ }
+ }
+
+ function badCallbackInCtor() {
+ this.bar = this.bar + 1; // ERROR - @this not declared.
+ }
+}
+
+TypeThree.prototype = {
+ funcOne: function() {
+ this.bar = this.bar + 1; // OK - in method.
+ },
+
+ funcTwo: function() {
+ /**
+ * @this {TypeThree}
+ */
+ function callback() {
+ this.bar = this.bar + 1; // OK - @this declared.
+ }
+ },
+
+ funcThree: function() {
+ function badCallbackInMethod() {
+ this.bar = this.bar + 1; // ERROR - @this not declared.
+ }
+ }
+}
+
+return new TypeThree();
+}
+
+var object = {
+ /**
+ * @this {MyType}
+ */
+ value: function()
+ {
+ this.foo = 1; // OK - @this annotated.
+ }
+};
+
+(function() {
+ var object = {
+ /**
+ * @this {MyType}
+ */
+ value: function()
+ {
+ this.foo = 1; // OK - @this annotated.
+ }
+ };
+})();
diff --git a/Source/devtools/scripts/optimize_png_images.py b/Source/devtools/scripts/optimize_png_images.py
new file mode 100755
index 0000000..e8c51a9
--- /dev/null
+++ b/Source/devtools/scripts/optimize_png_images.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+import devtools_file_hashes
+import glob
+import hashlib
+import os
+import os.path
+import re
+import subprocess
+
+try:
+ import json
+except ImportError:
+ import simplejson as json
+
+scripts_path = os.path.dirname(os.path.abspath(__file__))
+devtools_path = os.path.dirname(scripts_path)
+blink_source_path = os.path.dirname(devtools_path)
+blink_path = os.path.dirname(blink_source_path)
+chromium_src_path = os.path.dirname(os.path.dirname(blink_path))
+devtools_frontend_path = devtools_path + "/front_end"
+images_path = devtools_frontend_path + "/Images"
+image_sources_path = images_path + "/src"
+hashes_file_name = "optimize_png.hashes"
+hashes_file_path = image_sources_path + "/" + hashes_file_name
+
+file_names = os.listdir(image_sources_path)
+svg_file_paths = [image_sources_path + "/" + file_name for file_name in file_names if file_name.endswith(".svg")]
+svg_file_paths_to_optimize = devtools_file_hashes.files_with_invalid_hashes(hashes_file_path, svg_file_paths)
+svg_file_names = [re.sub(".svg$", "", re.sub(".*/", "", file_path)) for file_path in svg_file_paths_to_optimize]
+
+optimize_script_path = "tools/resources/optimize-png-files.sh"
+
+
+def optimize_png(file_name):
+ png_full_path = images_path + "/" + file_name + ".png"
+ optimize_command = "%s -o2 %s" % (optimize_script_path, png_full_path)
+ proc = subprocess.Popen(optimize_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=chromium_src_path)
+ return proc
+
+processes = {}
+for file_name in svg_file_names:
+ name = re.sub(".svg$", "", file_name)
+ name2x = name + "_2x"
+ processes[name] = optimize_png(name)
+ processes[name2x] = optimize_png(name2x)
+
+for file_name, proc in processes.items():
+ (optimize_out, _) = proc.communicate()
+ print("Optimization of %s finished: %s" % (file_name, optimize_out))
+
+devtools_file_hashes.update_file_hashes(hashes_file_path, svg_file_paths)
diff --git a/Source/devtools/scripts/optimize_svg_file.py b/Source/devtools/scripts/optimize_svg_file.py
new file mode 100755
index 0000000..4394daa
--- /dev/null
+++ b/Source/devtools/scripts/optimize_svg_file.py
@@ -0,0 +1,348 @@
+#!/usr/bin/env python
+# Copyright (c) 2014 Google 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:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "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 THE COPYRIGHT
+# OWNER 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.
+
+import re
+import string
+import sys
+import xml.dom.minidom
+
+
+def _optimize_number(value):
+ try:
+ if value[0] == "#" or value[0] == "n":
+ return value
+ numeric = round(float(value), 2)
+ short = int(numeric)
+ if short == numeric:
+ return str(short)
+ return str(numeric)
+ except:
+ return value
+
+
+def _optimize_value(value, default):
+ value = value.strip()
+ if value.endswith("px"):
+ value = value[:-2]
+ if value.endswith("pt"):
+ print "WARNING: 'pt' size units are undesirable."
+ if len(value) == 7 and value[0] == "#" and value[1] == value[2] and value[3] == value[4] and value[6] == value[6]:
+ value = "#" + value[1] + value[3] + value[5]
+ value = _optimize_number(value)
+ if value == default:
+ value = ""
+ return value
+
+
+def _optimize_values(node, defaults):
+ items = {}
+ if node.hasAttribute("style"):
+ for item in node.getAttribute("style").strip(";").split(";"):
+ [key, value] = item.split(":", 1)
+ key = key.strip()
+ if key not in defaults:
+ continue
+ items[key] = _optimize_value(value, defaults[key])
+
+ for key in defaults.keys():
+ if node.hasAttribute(key):
+ value = _optimize_value(node.getAttribute(key), defaults[key])
+ items[key] = value
+
+ if len([(key, value) for key, value in items.iteritems() if value != ""]) > 4:
+ style = []
+ for key, value in items.iteritems():
+ if node.hasAttribute(key):
+ node.removeAttribute(key)
+ if value != "":
+ style.append(key + ":" + value)
+ node.setAttribute("style", string.join(sorted(style), ";"))
+ else:
+ if node.hasAttribute("style"):
+ node.removeAttribute("style")
+ for key, value in items.iteritems():
+ if value == "":
+ if node.hasAttribute(key):
+ node.removeAttribute(key)
+ else:
+ node.setAttribute(key, value)
+
+
+def _optimize_path(value):
+ path = []
+ commands = "mMzZlLhHvVcCsSqQtTaA"
+ last = 0
+ raw = " " + value + " "
+ for i in range(len(raw)):
+ if raw[i] in [" ", ","]:
+ if last < i:
+ path.append(raw[last:i])
+ # Consumed whitespace
+ last = i + 1
+ elif raw[i] == "-" and raw[i - 1] != "e" and raw[i - 1] != "e":
+ if last < i:
+ path.append(raw[last:i])
+ last = i
+ elif raw[i] in commands:
+ if last < i:
+ path.append(raw[last:i])
+ path.append(raw[i])
+ # Consumed command
+ last = i + 1
+ out = []
+ need_space = False
+ for item in path:
+ if item in commands:
+ need_space = False
+ else:
+ item = _optimize_number(item)
+ if need_space and item[0] != "-":
+ out.append(" ")
+ need_space = True
+ out.append(item)
+ return string.join(out, "")
+
+
+def _optimize_paths(dom):
+ for node in dom.getElementsByTagName("path"):
+ path = node.getAttribute("d")
+ node.setAttribute("d", _optimize_path(path))
+
+
+def _check_groups(dom, errors):
+ if len(dom.getElementsByTagName("g")) != 0:
+ errors.append("Groups are prohibited.")
+
+
+def _check_text(dom, errors):
+ if len(dom.getElementsByTagName("text")) != 0:
+ errors.append("Text elements prohibited.")
+
+
+def _check_transform(dom, errors):
+ if (any(path.hasAttribute("transform") for path in dom.getElementsByTagName("path")) or
+ any(rect.hasAttribute("transform") for rect in dom.getElementsByTagName("rect"))):
+ errors.append("Transforms are prohibited.")
+
+
+def _cleanup_dom_recursively(node, dtd):
+ junk = []
+ for child in node.childNodes:
+ if child.nodeName in dtd:
+ _cleanup_dom_recursively(child, dtd[child.nodeName])
+ else:
+ junk.append(child)
+
+ for child in junk:
+ node.removeChild(child)
+
+
+def _cleanup_dom(dom):
+ dtd = {
+ "svg": {
+ "sodipodi:namedview": {
+ "inkscape:grid": {}},
+ "defs": {
+ "linearGradient": {
+ "stop": {}},
+ "radialGradient": {
+ "stop": {}}},
+ "path": {},
+ "rect": {}}}
+ _cleanup_dom_recursively(dom, dtd)
+
+
+def _cleanup_sodipodi(dom):
+ for node in dom.getElementsByTagName("svg"):
+ for key in node.attributes.keys():
+ if key not in ["height", "version", "width", "xml:space", "xmlns", "xmlns:xlink", "xmlns:sodipodi", "xmlns:inkscape"]:
+ node.removeAttribute(key)
+
+ for node in dom.getElementsByTagName("sodipodi:namedview"):
+ for key in node.attributes.keys():
+ if key != "showgrid":
+ node.removeAttribute(key)
+
+ for nodeName in ["defs", "linearGradient", "path", "radialGradient", "rect", "stop", "svg"]:
+ for node in dom.getElementsByTagName(nodeName):
+ for key in node.attributes.keys():
+ if key.startswith("sodipodi:") or key.startswith("inkscape:"):
+ node.removeAttribute(key)
+
+
+def _cleanup_ids(dom):
+ for nodeName in ["defs", "path", "rect", "sodipodi:namedview", "stop", "svg"]:
+ for node in dom.getElementsByTagName(nodeName):
+ if node.hasAttribute("id"):
+ node.removeAttribute("id")
+
+
+def _optimize_path_attributes(dom):
+ defaults = {
+ "fill": "#000",
+ "fill-opacity": "1",
+ "fill-rule": "nonzero",
+ "opacity": "1",
+ "stroke": "none",
+ "stroke-dasharray": "none",
+ "stroke-linecap": "butt",
+ "stroke-linejoin": "miter",
+ "stroke-miterlimit": "4",
+ "stroke-opacity": "1",
+ "stroke-width": "1"}
+ for nodeName in ["path", "rect"]:
+ for node in dom.getElementsByTagName(nodeName):
+ _optimize_values(node, defaults)
+
+
+def _optimize_stop_attributes(dom):
+ defaults = {
+ "stop-color": "#000",
+ "stop-opacity": "1"}
+ for node in dom.getElementsByTagName("stop"):
+ _optimize_values(node, defaults)
+
+
+def _cleanup_gradients(dom):
+ while True:
+ gradients = []
+ for nodeName in ["linearGradient", "radialGradient"]:
+ for node in dom.getElementsByTagName(nodeName):
+ name = node.getAttribute("id")
+ gradients.append({"node": node, "ref": "#" + name, "url": "url(#" + name + ")", "has_ref": False})
+ for nodeName in ["linearGradient", "path", "radialGradient", "rect"]:
+ for node in dom.getElementsByTagName(nodeName):
+ for key in node.attributes.keys():
+ if key == "id":
+ continue
+ value = node.getAttribute(key)
+ for gradient in gradients:
+ if gradient["has_ref"] == False:
+ if value == gradient["ref"] or value.find(gradient["url"]) != -1:
+ gradient["has_ref"] = True
+ finished = True
+ for gradient in gradients:
+ if gradient["has_ref"] == False:
+ gradient["node"].parentNode.removeChild(gradient["node"])
+ finished = False
+ if finished:
+ break
+
+
+def _generate_name(num):
+ letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ n = len(letters)
+ if num < n:
+ return letters[num]
+ return letters[num / n] + letters[num % n]
+
+
+def _optimize_gradient_ids(dom):
+ gradients = []
+ names = {}
+ for nodeName in ["linearGradient", "radialGradient"]:
+ for node in dom.getElementsByTagName(nodeName):
+ name = node.getAttribute("id")
+ gradients.append({"node": node, "name": name, "ref": "#" + name, "url": "url(#" + name + ")", "new_name": None})
+ names[name] = True
+ cntr = 0
+ for gradient in gradients:
+ if len(gradient["name"]) > 2:
+ while True:
+ new_name = _generate_name(cntr)
+ cntr = cntr + 1
+ if new_name not in names:
+ gradient["new_name"] = new_name
+ gradient["node"].setAttribute("id", new_name)
+ break
+ if cntr == 0:
+ return
+ gradients = [gradient for gradient in gradients if gradient["new_name"] is not None]
+ for nodeName in ["linearGradient", "path", "radialGradient", "rect"]:
+ for node in dom.getElementsByTagName(nodeName):
+ for key in node.attributes.keys():
+ if key == "id":
+ continue
+ value = node.getAttribute(key)
+ for gradient in gradients:
+ if value == gradient["ref"]:
+ node.setAttribute(key, "#" + gradient["new_name"])
+ elif value.find(gradient["url"]) != -1:
+ value = value.replace(gradient["url"], "url(#" + gradient["new_name"] + ")")
+ node.setAttribute(key, value)
+
+
+def _build_xml(dom):
+ raw_xml = dom.toxml("utf-8")
+ # Turn to one-node-per-line
+ pretty_xml = re.sub("([^?])(/?>)(?!</)", "\\1\\n\\2", raw_xml)
+ return pretty_xml
+
+
+def optimize_svg(file, errors):
+ try:
+ dom = xml.dom.minidom.parse(file)
+ except:
+ errors.append("Can't parse XML.")
+ return
+
+ _check_groups(dom, errors)
+ _check_text(dom, errors)
+ _check_transform(dom, errors)
+ if len(errors) != 0:
+ return
+
+ _cleanup_dom(dom)
+ _cleanup_ids(dom)
+ _cleanup_sodipodi(dom)
+ _cleanup_gradients(dom)
+
+ _optimize_gradient_ids(dom)
+ _optimize_path_attributes(dom)
+ _optimize_stop_attributes(dom)
+ _optimize_paths(dom)
+ # TODO: Bake nested gradients
+ # TODO: Optimize gradientTransform
+
+ with open(file, "w") as text_file:
+ text_file.write(_build_xml(dom))
+
+
+if __name__ == '__main__':
+ if len(sys.argv) != 1:
+ print('usage: %s input_file' % sys.argv[0])
+ sys.exit(1)
+ errors = []
+ optimize_svg(sys.argv[1], errors)
+ for error in errors:
+ print "ERROR: %s" % (error)
+ if len(errors) != 0:
+ sys.exit(1)
+ else:
+ sys.exit(0)
diff --git a/Source/devtools/supported_css_properties.target.darwin-arm.mk b/Source/devtools/supported_css_properties.target.darwin-arm.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.darwin-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/supported_css_properties.target.darwin-mips.mk b/Source/devtools/supported_css_properties.target.darwin-mips.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.darwin-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/supported_css_properties.target.darwin-x86.mk b/Source/devtools/supported_css_properties.target.darwin-x86.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.darwin-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/supported_css_properties.target.linux-arm.mk b/Source/devtools/supported_css_properties.target.linux-arm.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.linux-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/supported_css_properties.target.linux-mips.mk b/Source/devtools/supported_css_properties.target.linux-mips.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.linux-mips.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/Source/devtools/supported_css_properties.target.linux-x86.mk b/Source/devtools/supported_css_properties.target.linux-x86.mk
new file mode 100644
index 0000000..4bc6467
--- /dev/null
+++ b/Source/devtools/supported_css_properties.target.linux-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := third_party_WebKit_Source_devtools_supported_css_properties_gyp
+LOCAL_MODULE_STEM := supported_css_properties
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generateSupportedCSSProperties":
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js: $(LOCAL_PATH)/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/third_party/WebKit/Source/core/css/CSSShorthands.in $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating supported CSS properties for front end ($@)"
+ $(hide)cd $(gyp_local_path)/third_party/WebKit/Source/devtools; mkdir -p $(gyp_shared_intermediate_dir)/blink; python scripts/generate_supported_css.py ../core/css/CSSPropertyNames.in ../core/css/SVGCSSPropertyNames.in ../core/css/CSSShorthands.in "$(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js"
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/blink/SupportedCSSProperties.js
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+# Alias gyp target name.
+.PHONY: supported_css_properties
+supported_css_properties: third_party_WebKit_Source_devtools_supported_css_properties_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@