15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Google Inc. All rights reserved.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1.  Redistributions of source code must retain the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2.  Redistributions in binary form must reproduce the above copyright
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer in the
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     documentation and/or other materials provided with the distribution.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     its contributors may be used to endorse or promote products derived
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     from this software without specific prior written permission.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef ScriptDebugListener_h
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define ScriptDebugListener_h
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "bindings/v8/ScriptState.h"
355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "wtf/Forward.h"
365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "wtf/Vector.h"
375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "wtf/text/WTFString.h"
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore {
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ScriptValue;
41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochclass JavaScriptCallFrame;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ScriptDebugListener {
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    class Script {
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    public:
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        Script()
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            : startLine(0)
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            , startColumn(0)
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            , endLine(0)
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            , endColumn(0)
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            , isContentScript(false)
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        {
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String url;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String source;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        String sourceMappingURL;
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int startLine;
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int startColumn;
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int endLine;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        int endColumn;
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool isContentScript;
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~ScriptDebugListener() { }
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void didParseSource(const String& scriptId, const Script&) = 0;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void failedToParseSource(const String& url, const String& data, int firstLine, int errorLine, const String& errorMessage) = 0;
705267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void didPause(ScriptState*, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints) = 0;
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual void didContinue() = 0;
72e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
73f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    enum SkipPauseRequest {
74f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        NoSkip,
75f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        Continue,
76f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        StepInto,
77f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)        StepOut
78f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    };
79f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)
80f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    virtual SkipPauseRequest shouldSkipExceptionPause(RefPtr<JavaScriptCallFrame>& topFrame) = 0;
81f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    virtual SkipPauseRequest shouldSkipBreakpointPause(RefPtr<JavaScriptCallFrame>& topFrame) = 0;
82f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    virtual SkipPauseRequest shouldSkipStepPause(RefPtr<JavaScriptCallFrame>& topFrame) = 0;
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // ScriptDebugListener_h
89