18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Apple Inc. All Rights Reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebInspector.Script = function(sourceID, sourceURL, lineOffset, columnOffset, length, errorLine, errorMessage, isContentScript)
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.sourceID = sourceID;
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.sourceURL = sourceURL;
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    this.lineOffset = lineOffset;
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    this.columnOffset = columnOffset;
32ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    this.length = length;
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.errorLine = errorLine;
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.errorMessage = errorMessage;
352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    this.isContentScript = isContentScript;
36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.Script.prototype = {
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    requestSource: function(callback)
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        if (this._source) {
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            callback(this._source);
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            return;
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        }
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
462bde8e466a4451c7319e3a072d118917957d6554Steve Block        function didGetScriptSource(error, source)
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            this._source = source;
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            callback(this._source);
5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        }
5181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        DebuggerAgent.getScriptSource(this.sourceID, didGetScriptSource.bind(this));
522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    },
532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    editSource: function(newSource, callback)
552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    {
562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        function didEditScriptSource(error, callFrames)
572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        {
582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            if (!error)
592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch                this._source = newSource;
602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            callback(error, callFrames);
612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        }
622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        DebuggerAgent.editScriptSource(this.sourceID, newSource, didEditScriptSource.bind(this));
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    }
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
65