blob: eea3c59a81e7f7a3ad58c05d828f6ab52433efb1 [file] [log] [blame]
/*
* 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.
*/
var InspectorFrontendAPI = {
_pendingCommands: [],
setAttachedWindow: function(side)
{
},
setDockSide: function(side)
{
if (WebInspector.dockController)
WebInspector.dockController.setDockSide(side);
},
showConsole: function()
{
WebInspector.showPanel("console");
},
showMainResourceForFrame: function(frameId)
{
// FIXME: Implement this to show the source code for the main resource of a given frame.
},
showResources: function()
{
WebInspector.showPanel("resources");
},
setDockingUnavailable: function(unavailable)
{
WebInspector.setDockingUnavailable(unavailable);
},
enterInspectElementMode: function()
{
WebInspector.showPanel("elements");
if (WebInspector.inspectElementModeController)
WebInspector.inspectElementModeController.toggleSearch();
},
/**
* Focus on a particular line in the specified resource.
* @param {string} url The url to the resource.
* @param {number} lineNumber The line number to focus on.
* @param {number} columnNumber The column number to focus on.
*/
revealSourceLine: function(url, lineNumber, columnNumber)
{
var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(url);
if (uiSourceCode) {
WebInspector.showPanel("sources").showUISourceCode(uiSourceCode, lineNumber, columnNumber);
return;
}
/**
* @param {WebInspector.Event} event
*/
function listener(event)
{
var uiSourceCode = /** @type {WebInspector.UISourceCode} */ (event.data);
if (uiSourceCode.url === url) {
WebInspector.showPanel("sources").showUISourceCode(uiSourceCode, lineNumber, columnNumber);
WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, listener);
}
}
WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, listener);
},
fileSystemsLoaded: function(fileSystems)
{
WebInspector.isolatedFileSystemDispatcher.fileSystemsLoaded(fileSystems);
},
fileSystemRemoved: function(fileSystemPath)
{
WebInspector.isolatedFileSystemDispatcher.fileSystemRemoved(fileSystemPath);
},
fileSystemAdded: function(errorMessage, fileSystem)
{
WebInspector.isolatedFileSystemDispatcher.fileSystemAdded(errorMessage, fileSystem);
},
indexingTotalWorkCalculated: function(requestId, fileSystemPath, totalWork)
{
var projectDelegate = WebInspector.fileSystemWorkspaceProvider.delegate(fileSystemPath);
projectDelegate.indexingTotalWorkCalculated(requestId, totalWork);
},
indexingWorked: function(requestId, fileSystemPath, worked)
{
var projectDelegate = WebInspector.fileSystemWorkspaceProvider.delegate(fileSystemPath);
projectDelegate.indexingWorked(requestId, worked);
},
indexingDone: function(requestId, fileSystemPath)
{
var projectDelegate = WebInspector.fileSystemWorkspaceProvider.delegate(fileSystemPath);
projectDelegate.indexingDone(requestId);
},
searchCompleted: function(requestId, fileSystemPath, files)
{
var projectDelegate = WebInspector.fileSystemWorkspaceProvider.delegate(fileSystemPath);
projectDelegate.searchCompleted(requestId, files);
},
savedURL: function(url)
{
WebInspector.fileManager.savedURL(url);
},
appendedToURL: function(url)
{
WebInspector.fileManager.appendedToURL(url);
},
setToolbarColors: function(backgroundColor, color)
{
WebInspector.setToolbarColors(backgroundColor, color);
},
evaluateForTest: function(callId, script)
{
WebInspector.evaluateForTestInFrontend(callId, script);
},
dispatch: function(signature)
{
if (InspectorFrontendAPI._isLoaded) {
var methodName = signature.shift();
return InspectorFrontendAPI[methodName].apply(InspectorFrontendAPI, signature);
}
InspectorFrontendAPI._pendingCommands.push(signature);
},
dispatchQueryParameters: function()
{
if ("dispatch" in WebInspector.queryParamsObject)
InspectorFrontendAPI.dispatch(JSON.parse(window.decodeURI(WebInspector.queryParamsObject["dispatch"])));
},
/**
* @param {string} url
*/
loadTimelineFromURL: function(url)
{
/** @type {WebInspector.TimelinePanel} */ (WebInspector.showPanel("timeline")).loadFromURL(url);
},
loadCompleted: function()
{
InspectorFrontendAPI._isLoaded = true;
for (var i = 0; i < InspectorFrontendAPI._pendingCommands.length; ++i)
InspectorFrontendAPI.dispatch(InspectorFrontendAPI._pendingCommands[i]);
InspectorFrontendAPI._pendingCommands = [];
if (window.opener)
window.opener.postMessage(["loadCompleted"], "*");
},
contextMenuItemSelected: function(id)
{
WebInspector.contextMenuItemSelected(id);
},
contextMenuCleared: function()
{
WebInspector.contextMenuCleared();
},
dispatchMessageAsync: function(messageObject)
{
WebInspector.dispatch(messageObject);
},
dispatchMessage: function(messageObject)
{
InspectorBackend.dispatch(messageObject);
},
/**
* @param {number} id
* @param {?string} error
*/
embedderMessageAck: function(id, error)
{
InspectorFrontendHost.embedderMessageAck(id, error);
}
}
if (window.opener && window.dispatchStandaloneTestRunnerMessages) {
function onMessageFromOpener(event)
{
if (event.source === window.opener)
InspectorFrontendAPI.dispatch(event.data);
}
window.addEventListener("message", onMessageFromOpener, true);
}