Diff
Modified: trunk/Source/WebCore/ChangeLog (122103 => 122104)
--- trunk/Source/WebCore/ChangeLog 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/ChangeLog 2012-07-09 12:33:48 UTC (rev 122104)
@@ -1,3 +1,25 @@
+2012-07-09 Taiju Tsuiki <[email protected]>
+
+ Web Inspector: Add FileContentView for FileSystemView
+ https://bugs.webkit.org/show_bug.cgi?id=90529
+
+ Adding FileContentView to Inspector.
+ This class provides preview of text files in FileSystem.
+
+ Reviewed by Vsevolod Vlasov.
+
+ * WebCore.gypi:
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/compile-front-end.py:
+ * inspector/front-end/FileContentView.js: Added.
+ * inspector/front-end/FileSystemView.js:
+ (WebInspector.FileSystemView.prototype.get visibleView):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype.onselect):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype._directoryContentReceived):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype.refresh):
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.html:
+
2012-07-09 Carlos Garcia Campos <[email protected]>
[SOUP] Use soup_cookie_jar_is_persistent() to set whether cookie is a session one or not
Modified: trunk/Source/WebCore/WebCore.gypi (122103 => 122104)
--- trunk/Source/WebCore/WebCore.gypi 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/WebCore.gypi 2012-07-09 12:33:48 UTC (rev 122104)
@@ -6279,6 +6279,7 @@
'inspector/front-end/ExtensionRegistryStub.js',
'inspector/front-end/ExtensionServer.js',
'inspector/front-end/FileManager.js',
+ 'inspector/front-end/FileContentView.js',
'inspector/front-end/FileSystemModel.js',
'inspector/front-end/FileSystemView.js',
'inspector/front-end/FilteredItemSelectionDialog.js',
Modified: trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj (122103 => 122104)
--- trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-07-09 12:33:48 UTC (rev 122104)
@@ -74922,6 +74922,10 @@
>
</File>
<File
+ RelativePath="..\inspector\front-end\FileContentView.js"
+ >
+ </File>
+ <File
RelativePath="..\inspector\front-end\FileManager.js"
>
</File>
Modified: trunk/Source/WebCore/inspector/compile-front-end.py (122103 => 122104)
--- trunk/Source/WebCore/inspector/compile-front-end.py 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/inspector/compile-front-end.py 2012-07-09 12:33:48 UTC (rev 122104)
@@ -212,6 +212,7 @@
"DatabaseTableView.js",
"DirectoryContentView.js",
"DOMStorageItemsView.js",
+ "FileContentView.js",
"FileSystemView.js",
"IndexedDBViews.js",
"ResourcesPanel.js",
Added: trunk/Source/WebCore/inspector/front-end/FileContentView.js (0 => 122104)
--- trunk/Source/WebCore/inspector/front-end/FileContentView.js (rev 0)
+++ trunk/Source/WebCore/inspector/front-end/FileContentView.js 2012-07-09 12:33:48 UTC (rev 122104)
@@ -0,0 +1,171 @@
+/*
+ * 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:
+ *
+ * * 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.View}
+ * @param {WebInspector.FileSystemModel.File} file
+ */
+WebInspector.FileContentView = function(file)
+{
+ WebInspector.View.call(this);
+
+ this._innerView = null;
+ this._file = file;
+ this._content = null;
+}
+
+WebInspector.FileContentView.prototype = {
+ wasShown: function()
+ {
+ if (!this._innerView) {
+ if (this._file.isTextFile)
+ this._innerView = new WebInspector.EmptyView(WebInspector.UIString("Loading..."));
+ else
+ this._innerView = new WebInspector.EmptyView(WebInspector.UIString("Binary File"));
+ this.refresh();
+ }
+
+ this._innerView.show(this.element);
+ },
+
+ /**
+ * @param {number} errorCode
+ * @param {FileSystemAgent.Metadata} metadata
+ */
+ _metadataReceived: function(errorCode, metadata)
+ {
+ if (errorCode || !metadata)
+ return;
+
+ if (this._content) {
+ if (!this._content.updateMetadata(metadata))
+ return;
+ var sourceFrame = /** @type {WebInspector.SourceFrame} */ this._innerView;
+ this._content.requestContent(sourceFrame.setContent.bind(sourceFrame));
+ } else {
+ this._innerView.detach();
+ this._content = new WebInspector.FileContentView.FileContentProvider(this._file, metadata);
+ this._innerView = new WebInspector.SourceFrame(this._content);
+ this._innerView.show(this.element);
+ }
+ },
+
+ refresh: function()
+ {
+ if (!this._innerView)
+ return;
+
+ if (this._file.isTextFile)
+ this._file.requestMetadata(this._metadataReceived.bind(this));
+ }
+}
+
+WebInspector.FileContentView.prototype.__proto__ = WebInspector.View.prototype;
+
+/**
+ * @constructor
+ * @implements {WebInspector.ContentProvider}
+ * @param {WebInspector.FileSystemModel.File} file
+ * @param {FileSystemAgent.Metadata} metadata
+ */
+WebInspector.FileContentView.FileContentProvider = function(file, metadata)
+{
+ this._file = file;
+ this._metadata = metadata;
+}
+
+WebInspector.FileContentView.FileContentProvider.prototype = {
+ /**
+ * @return {?string}
+ */
+ contentURL: function()
+ {
+ return this._file.url;
+ },
+
+ /**
+ * @return {WebInspector.ResourceType}
+ */
+ contentType: function()
+ {
+ return this._file.resourceType;
+ },
+
+ /**
+ * @param {function(?string, boolean, string)} callback
+ */
+ requestContent: function(callback)
+ {
+ var size = /** @type {number} */ this._metadata.size;
+ this._file.requestFileContent(true, 0, size, this._charset || "", this._fileContentReceived.bind(this, callback));
+ },
+
+ /**
+ * @param {function(?string, boolean, string)} callback
+ * @param {number} errorCode
+ * @param {string=} content
+ * @param {boolean=} base64Encoded
+ * @param {string=} charset
+ */
+ _fileContentReceived: function(callback, errorCode, content, base64Encoded, charset)
+ {
+ if (errorCode || !content) {
+ callback(null, false, "");
+ return;
+ }
+
+ this._charset = charset;
+ callback(content, false, this.contentType().canonicalMimeType());
+ },
+
+ /**
+ * @param {string} query
+ * @param {boolean} caseSensitive
+ * @param {boolean} isRegex
+ * @param {function(Array.<WebInspector.ContentProvider.SearchMatch>)} callback
+ */
+ searchInContent: function(query, caseSensitive, isRegex, callback)
+ {
+ setTimeout(callback.bind(null, []), 0);
+ },
+
+ /**
+ * @param {FileSystemAgent.Metadata} metadata
+ * @return {boolean}
+ */
+ updateMetadata: function(metadata)
+ {
+ if (this._metadata.modificationTime >= metadata.modificationTime)
+ return false;
+ this._metadata = metadata.modificationTime;
+ return true;
+ }
+}
Modified: trunk/Source/WebCore/inspector/front-end/FileSystemView.js (122103 => 122104)
--- trunk/Source/WebCore/inspector/front-end/FileSystemView.js 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/inspector/front-end/FileSystemView.js 2012-07-09 12:33:48 UTC (rev 122104)
@@ -65,6 +65,14 @@
},
/**
+ * @type {WebInspector.View}
+ */
+ get visibleView()
+ {
+ return this._visibleView;
+ },
+
+ /**
* @param {WebInspector.View} view
*/
showView: function(view)
@@ -111,8 +119,10 @@
if (!this._view) {
if (this._entry.isDirectory)
this._view = new WebInspector.DirectoryContentView();
- else
- return;
+ else {
+ var file = /** @type {WebInspector.FileSystemModel.File} */ this._entry;
+ this._view = new WebInspector.FileContentView(file);
+ }
}
this._fileSystemView.showView(this._view);
this.refresh();
@@ -157,6 +167,9 @@
if (order === 0) {
if (oldChild._entry.isDirectory)
oldChild.shouldRefreshChildren = true;
+ else
+ oldChild.refresh();
+
++newEntryIndex;
++oldChildIndex;
++currentTreeItem;
@@ -181,9 +194,13 @@
refresh: function()
{
- if (!this._entry.isDirectory)
- return;
- this._entry.requestDirectoryContent(this._directoryContentReceived.bind(this));
+ if (!this._entry.isDirectory) {
+ if (this._view && this._view === this._fileSystemView.visibleView) {
+ var fileContentView = /** @type {WebInspector.FileContentView} */ this._view;
+ fileContentView.refresh();
+ }
+ } else
+ this._entry.requestDirectoryContent(this._directoryContentReceived.bind(this));
}
}
Modified: trunk/Source/WebCore/inspector/front-end/WebKit.qrc (122103 => 122104)
--- trunk/Source/WebCore/inspector/front-end/WebKit.qrc 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/inspector/front-end/WebKit.qrc 2012-07-09 12:33:48 UTC (rev 122104)
@@ -57,6 +57,7 @@
<file>ExtensionPanel.js</file>
<file>ExtensionRegistryStub.js</file>
<file>ExtensionServer.js</file>
+ <file>FileContentView.js</file>
<file>FileManager.js</file>
<file>FileSystemModel.js</file>
<file>FileSystemView.js</file>
Modified: trunk/Source/WebCore/inspector/front-end/inspector.html (122103 => 122104)
--- trunk/Source/WebCore/inspector/front-end/inspector.html 2012-07-09 12:28:12 UTC (rev 122103)
+++ trunk/Source/WebCore/inspector/front-end/inspector.html 2012-07-09 12:33:48 UTC (rev 122104)
@@ -162,6 +162,7 @@
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
+ <script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""