Diff
Modified: trunk/Source/WebKit2/ChangeLog (178535 => 178536)
--- trunk/Source/WebKit2/ChangeLog 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/ChangeLog 2015-01-15 23:42:11 UTC (rev 178536)
@@ -1,3 +1,33 @@
+2015-01-15 Enrica Casucci <[email protected]>
+
+ [WK2] Add support for fully editable WKWebView.
+ https://bugs.webkit.org/show_bug.cgi?id=140515
+
+ Reviewed by Anders Carlsson.
+
+ WKWebView has now a new property (_editable) to control
+ the editability of the entire content.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode):
+ (WebKit::WebPageCreationParameters::decode):
+ * Shared/WebPageCreationParameters.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _isEditable]):
+ (-[WKWebView _setEditable:]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/API/mac/WKView.mm:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::WebPageProxy):
+ (WebKit::WebPageProxy::setEditable):
+ (WebKit::WebPageProxy::creationParameters):
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::isEditable):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::setEditable):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
2015-01-15 Anders Carlsson <[email protected]>
Clearing the website data store should clear local storage
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp (178535 => 178536)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2015-01-15 23:42:11 UTC (rev 178536)
@@ -39,6 +39,7 @@
encoder.encodeEnum(drawingAreaType);
encoder << pageGroupData;
encoder << drawsBackground;
+ encoder << isEditable;
encoder << drawsTransparentBackground;
encoder << underlayColor;
encoder << useFixedLayout;
@@ -95,6 +96,8 @@
return false;
if (!decoder.decode(parameters.drawsBackground))
return false;
+ if (!decoder.decode(parameters.isEditable))
+ return false;
if (!decoder.decode(parameters.drawsTransparentBackground))
return false;
if (!decoder.decode(parameters.underlayColor))
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.h (178535 => 178536)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2015-01-15 23:42:11 UTC (rev 178536)
@@ -66,6 +66,7 @@
bool drawsBackground;
bool drawsTransparentBackground;
+ bool isEditable;
WebCore::Color underlayColor;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (178535 => 178536)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-01-15 23:42:11 UTC (rev 178536)
@@ -1605,6 +1605,16 @@
@implementation WKWebView (WKPrivate)
+- (BOOL)_isEditable
+{
+ return _page->isEditable();
+}
+
+- (void)_setEditable:(BOOL)editable
+{
+ _page->setEditable(editable);
+}
+
- (_WKRemoteObjectRegistry *)_remoteObjectRegistry
{
if (!_remoteObjectRegistry) {
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (178535 => 178536)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-01-15 23:42:11 UTC (rev 178536)
@@ -82,6 +82,8 @@
@property (nonatomic, readonly) pid_t _webProcessIdentifier;
+@property (nonatomic, getter=_isEditable, setter=_setEditable:) BOOL _editable;
+
// FIXME: Remove these once nobody is using them.
@property (nonatomic, readonly) NSData *_sessionStateData;
- (void)_restoreFromSessionStateData:(NSData *)sessionStateData;
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (178535 => 178536)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-01-15 23:42:11 UTC (rev 178536)
@@ -743,11 +743,9 @@
Editing-related methods still unimplemented that are implemented in WebKit1:
-- (void)capitalizeWord:(id)sender;
- (void)changeFont:(id)sender;
- (void)complete:(id)sender;
- (void)copyFont:(id)sender;
-- (void)lowercaseWord:(id)sender;
- (void)makeBaseWritingDirectionLeftToRight:(id)sender;
- (void)makeBaseWritingDirectionNatural:(id)sender;
- (void)makeBaseWritingDirectionRightToLeft:(id)sender;
@@ -755,7 +753,6 @@
- (void)scrollLineDown:(id)sender;
- (void)scrollLineUp:(id)sender;
- (void)showGuessPanel:(id)sender;
-- (void)uppercaseWord:(id)sender;
Some other editing-related methods still unimplemented:
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (178535 => 178536)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-01-15 23:42:11 UTC (rev 178536)
@@ -291,6 +291,7 @@
#if PLATFORM(MAC) && !USE(ASYNC_NSTEXTINPUTCLIENT)
, m_temporarilyClosedComposition(false)
#endif
+ , m_isEditable(false)
, m_textZoomFactor(1)
, m_pageZoomFactor(1)
, m_pageScaleFactor(1)
@@ -1394,6 +1395,17 @@
m_process->send(Messages::WebPage::ExecuteEditCommand(commandName), m_pageID);
}
+void WebPageProxy::setEditable(bool editable)
+{
+ if (editable == m_isEditable)
+ return;
+ if (!isValid())
+ return;
+
+ m_isEditable = editable;
+ m_process->send(Messages::WebPage::SetEditable(editable), m_pageID);
+}
+
#if !PLATFORM(IOS)
void WebPageProxy::didCommitLayerTree(const RemoteLayerTreeTransaction&)
{
@@ -4616,6 +4628,7 @@
parameters.store = preferencesStore();
parameters.pageGroupData = m_pageGroup->data();
parameters.drawsBackground = m_drawsBackground;
+ parameters.isEditable = m_isEditable;
parameters.drawsTransparentBackground = m_drawsTransparentBackground;
parameters.underlayColor = m_underlayColor;
parameters.useFixedLayout = m_useFixedLayout;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (178535 => 178536)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-01-15 23:42:11 UTC (rev 178536)
@@ -411,6 +411,8 @@
bool maintainsInactiveSelection() const { return m_maintainsInactiveSelection; }
void setMaintainsInactiveSelection(bool);
+ void setEditable(bool);
+ bool isEditable() const { return m_isEditable; }
#if PLATFORM(IOS)
void executeEditCommand(const String& commandName, std::function<void (CallbackBase::Error)>);
@@ -1446,6 +1448,7 @@
String m_toolTip;
EditorState m_editorState;
+ bool m_isEditable;
#if PLATFORM(MAC) && !USE(ASYNC_NSTEXTINPUTCLIENT)
bool m_temporarilyClosedComposition; // Editor state changed from hasComposition to !hasComposition, but that was only with shouldIgnoreCompositionSelectionChange yet.
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (178535 => 178536)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-01-15 23:42:11 UTC (rev 178536)
@@ -921,6 +921,19 @@
frame.editor().command(commandName).execute(argument);
}
+void WebPage::setEditable(bool editable)
+{
+ m_page->setEditable(editable);
+ m_page->setTabKeyCyclesThroughElements(!editable);
+ Frame& frame = m_page->focusController().focusedOrMainFrame();
+ if (editable) {
+ frame.editor().applyEditingStyleToBodyElement();
+ // If the page is made editable and the selection is empty, set it to something.
+ if (frame.selection().isNone())
+ frame.selection().setSelectionFromNone();
+ }
+}
+
bool WebPage::isEditingCommandEnabled(const String& commandName)
{
Frame& frame = m_page->focusController().focusedOrMainFrame();
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (178535 => 178536)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-01-15 23:42:11 UTC (rev 178536)
@@ -933,6 +933,7 @@
void setViewState(WebCore::ViewState::Flags, bool wantsDidUpdateViewState, const Vector<uint64_t>& callbackIDs);
void validateCommand(const String&, uint64_t);
void executeEditCommand(const String&);
+ void setEditable(bool);
void updateUserActivity();
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (178535 => 178536)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-01-15 23:16:18 UTC (rev 178535)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-01-15 23:42:11 UTC (rev 178536)
@@ -179,6 +179,7 @@
Close()
TryClose()
+ SetEditable(bool editable)
ValidateCommand(String name, uint64_t callbackID)
ExecuteEditCommand(String name)