165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/*
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved.
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without
565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions
665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met:
765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1. Redistributions of source code must retain the above copyright
865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *    notice, this list of conditions and the following disclaimer.
965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *    documentation and/or other materials provided with the distribution.
1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE.
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */
2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h"
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundlePageLoaderClient.h"
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InjectedBundleScriptWorld.h"
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKAPICast.h"
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WKBundleAPICast.h"
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebError.h"
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/WTFString.h>
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochusing namespace WebCore;
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit {
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didStartProvisionalLoadForFrame)
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didStartProvisionalLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPage* page, WebFrame* frame, const ResourceError& error, RefPtr<APIObject>& userData)
6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFailProvisionalLoadWithErrorForFrame)
6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), &userDataToPass, m_client.clientInfo);
6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didCommitLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didCommitLoadForFrame)
7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didCommitLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFinishDocumentLoadForFrame)
8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFinishDocumentLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFinishLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFinishLoadForFrame)
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFinishLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame(WebPage* page, WebFrame* frame, const ResourceError& error, RefPtr<APIObject>& userData)
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFailLoadWithErrorForFrame)
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFailLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), &userDataToPass, m_client.clientInfo);
10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didSameDocumentNavigationForFrame(WebPage* page, WebFrame* frame, SameDocumentNavigationType type, RefPtr<APIObject>& userData)
11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didSameDocumentNavigationForFrame)
11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didSameDocumentNavigationForFrame(toAPI(page), toAPI(frame), toAPI(type), &userDataToPass, m_client.clientInfo);
11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didReceiveTitleForFrame(WebPage* page, const String& title, WebFrame* frame, RefPtr<APIObject>& userData)
12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didReceiveTitleForFrame)
12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didReceiveTitleForFrame(toAPI(page), toAPI(title.impl()), toAPI(frame), &userDataToPass, m_client.clientInfo);
12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFirstLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFirstLayoutForFrame)
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFirstLayoutForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didFirstVisuallyNonEmptyLayoutForFrame)
14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didFirstVisuallyNonEmptyLayoutForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didRemoveFrameFromHierarchy(WebPage* page , WebFrame* frame, RefPtr<APIObject>& userData)
15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didRemoveFrameFromHierarchy)
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didRemoveFrameFromHierarchy(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didDisplayInsecureContentForFrame)
16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didDisplayInsecureContentForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
16865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didRunInsecureContentForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
17065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
17165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didRunInsecureContentForFrame)
17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WKTypeRef userDataToPass = 0;
17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didRunInsecureContentForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    userData = adoptRef(toImpl(userDataToPass));
17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didClearWindowObjectForFrame(WebPage* page, WebFrame* frame, DOMWrapperWorld* world)
18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didClearWindowObjectForFrame)
18265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didClearWindowObjectForFrame(toAPI(page), toAPI(frame), toAPI(InjectedBundleScriptWorld::getOrCreate(world).get()), m_client.clientInfo);
18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame(WebPage* page, WebFrame* frame)
18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didCancelClientRedirectForFrame)
19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didCancelClientRedirectForFrame(toAPI(page), toAPI(frame), m_client.clientInfo);
19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
19465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame(WebPage* page, WebFrame* frame, const String& url, double delay, double date)
19665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
19765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.willPerformClientRedirectForFrame)
19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.willPerformClientRedirectForFrame(toAPI(page), toAPI(frame), toURLRef(url.impl()), delay, date, m_client.clientInfo);
20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame(WebPage* page, WebFrame* frame)
20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    if (!m_client.didHandleOnloadEventsForFrame)
20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    m_client.didHandleOnloadEventsForFrame(toAPI(page), toAPI(frame), m_client.clientInfo);
20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
21065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit
212