Skip to content

Commit

Permalink
Merge r187640 - [GTK] Have DataObjectGtk::unknownTypes() return a ref…
Browse files Browse the repository at this point in the history
…erence to the HashMap object

https://bugs.webkit.org/show_bug.cgi?id=147401

Reviewed by Carlos Garcia Campos.

Don't copy the DataObjectGtk::m_unknownTypes HashMap on every retrieval through
DataObjectGtk::unknownTypes(). The range-based for-loops that iterate over the
map in PasteboardGtk.cpp and PasteboardHelper.cpp are also cleaned up.

* platform/gtk/DataObjectGtk.cpp:
(WebCore::DataObjectGtk::unknownTypes):
* platform/gtk/DataObjectGtk.h:
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::writePasteboard):
(WebCore::Pasteboard::types):
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::fillSelectionData):
  • Loading branch information
zdobersek authored and carlosgcampos committed Aug 5, 2015
1 parent 214c173 commit 9519baa
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 14 deletions.
20 changes: 20 additions & 0 deletions Source/WebCore/ChangeLog
@@ -1,3 +1,23 @@
2015-07-31 Zan Dobersek <zdobersek@igalia.com>

[GTK] Have DataObjectGtk::unknownTypes() return a reference to the HashMap object
https://bugs.webkit.org/show_bug.cgi?id=147401

Reviewed by Carlos Garcia Campos.

Don't copy the DataObjectGtk::m_unknownTypes HashMap on every retrieval through
DataObjectGtk::unknownTypes(). The range-based for-loops that iterate over the
map in PasteboardGtk.cpp and PasteboardHelper.cpp are also cleaned up.

* platform/gtk/DataObjectGtk.cpp:
(WebCore::DataObjectGtk::unknownTypes):
* platform/gtk/DataObjectGtk.h:
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::writePasteboard):
(WebCore::Pasteboard::types):
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::fillSelectionData):

2015-07-30 Michael Catanzaro <mcatanzaro@igalia.com>

[GTK] Crashes when SoupSession is destroyed in exit handler
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/platform/gtk/DataObjectGtk.cpp
Expand Up @@ -33,7 +33,7 @@ static void replaceNonBreakingSpaceWithSpace(String& str)
str.replace(NonBreakingSpaceCharacter, SpaceCharacter);
}

HashMap<String, String> DataObjectGtk::unknownTypes() const
const HashMap<String, String>& DataObjectGtk::unknownTypes() const
{
return m_unknownTypeData;
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebCore/platform/gtk/DataObjectGtk.h
Expand Up @@ -54,7 +54,7 @@ class DataObjectGtk : public RefCounted<DataObjectGtk> {
String text() const { return m_text; }
String markup() const { return m_markup; }
String unknownTypeData(const String& type) const { return m_unknownTypeData.get(type); }
HashMap<String, String> unknownTypes() const;
const HashMap<String, String>& unknownTypes() const;
void setText(const String&);
void setMarkup(const String&);
void setUnknownTypeData(const String& type, const String& data) { m_unknownTypeData.set(type, data); }
Expand Down
12 changes: 4 additions & 8 deletions Source/WebCore/platform/gtk/PasteboardGtk.cpp
Expand Up @@ -204,10 +204,8 @@ void Pasteboard::writePasteboard(const Pasteboard& sourcePasteboard)
if (sourceDataObject->hasImage())
m_dataObject->setImage(sourceDataObject->image());
if (sourceDataObject->hasUnknownTypeData()) {
auto types = m_dataObject->unknownTypes();
auto end = types.end();
for (auto it = types.begin(); it != end; ++it)
m_dataObject->setUnknownTypeData(it->key, it->value);
for (auto& it : m_dataObject->unknownTypes())
m_dataObject->setUnknownTypeData(it.key, it.value);
}

if (m_gtkClipboard)
Expand Down Expand Up @@ -300,10 +298,8 @@ Vector<String> Pasteboard::types()
if (m_dataObject->hasFilenames())
types.append(ASCIILiteral("Files"));

auto unknownTypes = m_dataObject->unknownTypes();
auto end = unknownTypes.end();
for (auto it = unknownTypes.begin(); it != end; ++it)
types.append(it->key);
for (auto& key : m_dataObject->unknownTypes().keys())
types.append(key);

return types;
}
Expand Down
6 changes: 2 additions & 4 deletions Source/WebCore/platform/gtk/PasteboardHelper.cpp
Expand Up @@ -162,10 +162,8 @@ void PasteboardHelper::fillSelectionData(GtkSelectionData* selectionData, guint
GVariantBuilder builder;
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);

auto types = dataObject->unknownTypes();
auto end = types.end();
for (auto it = types.begin(); it != end; ++it) {
GUniquePtr<gchar> dictItem(g_strdup_printf("{'%s', '%s'}", it->key.utf8().data(), it->value.utf8().data()));
for (auto& it : dataObject->unknownTypes()) {
GUniquePtr<gchar> dictItem(g_strdup_printf("{'%s', '%s'}", it.key.utf8().data(), it.value.utf8().data()));
g_variant_builder_add_parsed(&builder, dictItem.get());
}

Expand Down

0 comments on commit 9519baa

Please sign in to comment.