blob: 28dab1c28e94f9e6a08726f7dbed7a38fac40dbf [file] [log] [blame]
Ben Murdoche69819b2013-07-17 14:56:49 +01001/*
2 * Copyright (C) 2006, 2007 Apple, Inc. All rights reserved.
3 * Copyright (C) 2012 Google, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include "config.h"
28#include "EditorClientImpl.h"
29
Torne (Richard Coles)43e75022014-03-21 14:26:12 +000030#include "WebFrameClient.h"
Ben Murdoche69819b2013-07-17 14:56:49 +010031#include "WebFrameImpl.h"
Ben Murdoche69819b2013-07-17 14:56:49 +010032#include "WebPermissionClient.h"
Ben Murdoche69819b2013-07-17 14:56:49 +010033#include "WebViewClient.h"
34#include "WebViewImpl.h"
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000035#include "core/editing/SelectionType.h"
Ben Murdoche69819b2013-07-17 14:56:49 +010036
37using namespace WebCore;
38
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000039namespace blink {
Ben Murdoche69819b2013-07-17 14:56:49 +010040
41EditorClientImpl::EditorClientImpl(WebViewImpl* webview)
42 : m_webView(webview)
Ben Murdoche69819b2013-07-17 14:56:49 +010043{
44}
45
46EditorClientImpl::~EditorClientImpl()
47{
48}
49
Torne (Richard Coles)43e75022014-03-21 14:26:12 +000050void EditorClientImpl::respondToChangedSelection(LocalFrame* frame, WebCore::SelectionType selectionType)
Ben Murdoche69819b2013-07-17 14:56:49 +010051{
Torne (Richard Coles)43e75022014-03-21 14:26:12 +000052 WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame);
53 if (webFrame->client())
54 webFrame->client()->didChangeSelection(selectionType != WebCore::RangeSelection);
Ben Murdoche69819b2013-07-17 14:56:49 +010055}
56
57void EditorClientImpl::respondToChangedContents()
58{
59 if (m_webView->client())
60 m_webView->client()->didChangeContents();
61}
62
Torne (Richard Coles)d5428f32014-03-18 10:21:16 +000063bool EditorClientImpl::canCopyCut(LocalFrame* frame, bool defaultValue) const
Ben Murdoche69819b2013-07-17 14:56:49 +010064{
Torne (Richard Coles)09380292014-02-21 12:17:33 +000065 WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame);
66 if (!webFrame->permissionClient())
Ben Murdoche69819b2013-07-17 14:56:49 +010067 return defaultValue;
Torne (Richard Coles)09380292014-02-21 12:17:33 +000068 return webFrame->permissionClient()->allowWriteToClipboard(webFrame, defaultValue);
Ben Murdoche69819b2013-07-17 14:56:49 +010069}
70
Torne (Richard Coles)d5428f32014-03-18 10:21:16 +000071bool EditorClientImpl::canPaste(LocalFrame* frame, bool defaultValue) const
Ben Murdoche69819b2013-07-17 14:56:49 +010072{
Torne (Richard Coles)09380292014-02-21 12:17:33 +000073 WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame);
74 if (!webFrame->permissionClient())
Ben Murdoche69819b2013-07-17 14:56:49 +010075 return defaultValue;
Torne (Richard Coles)09380292014-02-21 12:17:33 +000076 return webFrame->permissionClient()->allowReadFromClipboard(webFrame, defaultValue);
Ben Murdoche69819b2013-07-17 14:56:49 +010077}
78
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000079void EditorClientImpl::didExecuteCommand(String commandName)
Ben Murdoche69819b2013-07-17 14:56:49 +010080{
81 if (m_webView->client())
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000082 m_webView->client()->didExecuteCommand(WebString(commandName));
Ben Murdoche69819b2013-07-17 14:56:49 +010083}
84
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000085bool EditorClientImpl::handleKeyboardEvent()
86{
87 return m_webView->client() && m_webView->client()->handleCurrentKeyboardEvent();
88}
89
90} // namesace blink