blob: eb7b1a6be48651edcbee45ebaf7f2d94f538c835 [file] [log] [blame]
/*
* Copyright (C) 2009 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.
*/
if (!window.InspectorFrontendHost) {
/**
* @constructor
* @implements {InspectorFrontendHostAPI}
*/
WebInspector.InspectorFrontendHostStub = function()
{
this.isStub = true;
this._fileBuffers = {};
WebInspector.documentCopyEventFired = this.documentCopy.bind(this);
}
WebInspector.InspectorFrontendHostStub.prototype = {
getSelectionBackgroundColor: function()
{
return "#6e86ff";
},
getSelectionForegroundColor: function()
{
return "#ffffff";
},
platform: function()
{
var match = navigator.userAgent.match(/Windows NT/);
if (match)
return "windows";
match = navigator.userAgent.match(/Mac OS X/);
if (match)
return "mac";
return "linux";
},
port: function()
{
return "unknown";
},
bringToFront: function()
{
this._windowVisible = true;
},
closeWindow: function()
{
this._windowVisible = false;
},
requestSetDockSide: function(side)
{
InspectorFrontendAPI.setDockSide(side);
},
setAttachedWindowHeight: function(height)
{
},
moveWindowBy: function(x, y)
{
},
setInjectedScriptForOrigin: function(origin, script)
{
},
loaded: function()
{
},
localizedStringsURL: function()
{
return undefined;
},
inspectedURLChanged: function(url)
{
document.title = WebInspector.UIString(Preferences.applicationTitle, url);
},
documentCopy: function(event)
{
if (!this._textToCopy)
return;
event.clipboardData.setData("text", this._textToCopy);
event.preventDefault();
delete this._textToCopy;
},
copyText: function(text)
{
this._textToCopy = text;
if (!document.execCommand("copy")) {
var screen = new WebInspector.ClipboardAccessDeniedScreen();
screen.showModal();
}
},
openInNewTab: function(url)
{
window.open(url, "_blank");
},
canSave: function()
{
return true;
},
save: function(url, content, forceSaveAs)
{
if (this._fileBuffers[url])
throw new Error("Concurrent file modification denied.");
this._fileBuffers[url] = [content];
setTimeout(WebInspector.fileManager.savedURL.bind(WebInspector.fileManager, url), 0);
},
append: function(url, content)
{
var buffer = this._fileBuffers[url];
if (!buffer)
throw new Error("File is not open for write yet.");
buffer.push(content);
setTimeout(WebInspector.fileManager.appendedToURL.bind(WebInspector.fileManager, url), 0);
},
close: function(url)
{
var content = this._fileBuffers[url];
delete this._fileBuffers[url];
if (!content)
return;
var lastSlashIndex = url.lastIndexOf("/");
var fileNameSuffix = (lastSlashIndex === -1) ? url : url.substring(lastSlashIndex + 1);
var blob = new Blob(content, { type: "application/octet-stream" });
var objectUrl = window.URL.createObjectURL(blob);
window.location = objectUrl + "#/" + fileNameSuffix;
function cleanup()
{
window.URL.revokeObjectURL(objectUrl);
}
setTimeout(cleanup, 3000);
},
sendMessageToBackend: function(message)
{
},
recordActionTaken: function(actionCode)
{
},
recordPanelShown: function(panelCode)
{
},
recordSettingChanged: function(settingCode)
{
},
loadResourceSynchronously: function(url)
{
return loadXHR(url);
},
supportsFileSystems: function()
{
return false;
},
requestFileSystems: function()
{
},
addFileSystem: function()
{
},
removeFileSystem: function(fileSystemPath)
{
},
isolatedFileSystem: function(fileSystemId, registeredName)
{
return null;
},
indexPath: function(requestId, fileSystemPath)
{
},
stopIndexing: function(requestId)
{
},
searchInPath: function(requestId, fileSystemPath, query)
{
},
setZoomFactor: function(zoom)
{
},
isUnderTest: function()
{
return false;
}
}
InspectorFrontendHost = new WebInspector.InspectorFrontendHostStub();
/**
* @constructor
* @extends {WebInspector.HelpScreen}
*/
WebInspector.ClipboardAccessDeniedScreen = function()
{
WebInspector.HelpScreen.call(this, WebInspector.UIString("Clipboard access is denied"));
var platformMessage = WebInspector.UIString("You need to install a Chrome extension that grants clipboard access to Developer Tools.");
if (platformMessage) {
var p = this.contentElement.createChild("p");
p.addStyleClass("help-section");
p.textContent = platformMessage;
}
}
WebInspector.ClipboardAccessDeniedScreen.prototype = {
__proto__: WebInspector.HelpScreen.prototype
}
}
/**
* @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.addStyleClass("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
}