1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WebLocalFrame_h
6#define WebLocalFrame_h
7
8#include "WebFrame.h"
9
10namespace blink {
11
12// Interface for interacting with in process frames. This contains methods that
13// require interacting with a frame's document.
14// FIXME: Move lots of methods from WebFrame in here.
15class WebLocalFrame : public WebFrame {
16public:
17    // Creates a WebFrame. Delete this WebFrame by calling WebFrame::close().
18    // It is valid to pass a null client pointer.
19    BLINK_EXPORT static WebLocalFrame* create(WebFrameClient*);
20
21    // Returns the WebFrame associated with the current V8 context. This
22    // function can return 0 if the context is associated with a Document that
23    // is not currently being displayed in a Frame.
24    BLINK_EXPORT static WebLocalFrame* frameForCurrentContext();
25
26    // Returns the frame corresponding to the given context. This can return 0
27    // if the context is detached from the frame, or if the context doesn't
28    // correspond to a frame (e.g., workers).
29    BLINK_EXPORT static WebLocalFrame* frameForContext(v8::Handle<v8::Context>);
30
31    // Returns the frame inside a given frame or iframe element. Returns 0 if
32    // the given element is not a frame, iframe or if the frame is empty.
33    BLINK_EXPORT static WebLocalFrame* fromFrameOwnerElement(const WebElement&);
34
35
36    // Navigation Ping --------------------------------------------------------
37    virtual void sendPings(const WebNode& linkNode, const WebURL& destinationURL) = 0;
38
39
40    // Navigation State -------------------------------------------------------
41
42    // Returns true if the current frame's load event has not completed.
43    virtual bool isLoading() const = 0;
44
45    // Returns true if any resource load is currently in progress. Exposed
46    // primarily for use in layout tests. You probably want isLoading()
47    // instead.
48    virtual bool isResourceLoadInProgress() const = 0;
49
50
51    // Navigation Transitions -------------------------------------------------
52    virtual void addStyleSheetByURL(const WebString& url) = 0;
53    virtual void navigateToSandboxedMarkup(const WebData& markup) = 0;
54
55
56    // Orientation Changes ----------------------------------------------------
57
58    // Notify the frame that the screen orientation has changed.
59    virtual void sendOrientationChangeEvent() = 0;
60
61
62    // Scripting --------------------------------------------------------------
63    // ONLY FOR TESTS: Forwards to executeScriptAndReturnValue, but sets a fake
64    // UserGestureIndicator before execution.
65    virtual v8::Handle<v8::Value> executeScriptAndReturnValueForTests(const WebScriptSource&) = 0;
66
67    // Associates an isolated world with human-readable name which is useful for
68    // extension debugging.
69    virtual void setIsolatedWorldHumanReadableName(int worldID, const WebString&) = 0;
70};
71
72} // namespace blink
73
74#endif // WebLocalFrame_h
75