Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Unified Diff: content/browser/renderer_host/dwrite_font_proxy_message_filter_win_unittest.cc

Issue 1378353006: Implementation of dwrite font proxy and removal of dwrite font cache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge to head Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/dwrite_font_proxy_message_filter_win_unittest.cc
diff --git a/content/browser/renderer_host/dwrite_font_proxy_message_filter_win_unittest.cc b/content/browser/renderer_host/dwrite_font_proxy_message_filter_win_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..09c96c673e2b7faa5f2f53b2b127e0e90078ec45
--- /dev/null
+++ b/content/browser/renderer_host/dwrite_font_proxy_message_filter_win_unittest.cc
@@ -0,0 +1,133 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/renderer_host/dwrite_font_proxy_message_filter_win.h"
+
+#include <dwrite.h>
+
+#include "base/memory/ref_counted.h"
+#include "base/test/test_simple_task_runner.h"
+#include "base/thread_task_runner_handle.h"
+#include "content/common/dwrite_font_proxy_messages.h"
+#include "ipc/ipc_message_macros.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace mswr = Microsoft::WRL;
+
+namespace content {
+
+bool RunTasksSynchronously(BrowserThread::ID thread,
+ const tracked_objects::Location& location,
+ const base::Closure& task,
+ const base::Closure& reply) {
+ task.Run();
+ reply.Run();
+ return true;
+}
+
+class FilterWithFakeSender : public DWriteFontProxyMessageFilter {
+ public:
+ FilterWithFakeSender()
+ : DWriteFontProxyMessageFilter(&RunTasksSynchronously) {}
+ bool Send(IPC::Message* msg) override {
+ EXPECT_EQ(nullptr, replyMessage_.get());
+ replyMessage_.reset(msg);
+ return true;
+ }
+
+ IPC::Message* GetReply() { return replyMessage_.get(); }
+
+ void ResetReply() { replyMessage_.reset(nullptr); }
+
+ private:
+ scoped_ptr<IPC::Message> replyMessage_;
+};
+
+class DWriteFontProxyMessageFilterUnitTest : public testing::Test {
+ public:
+ DWriteFontProxyMessageFilterUnitTest() {
+ filter_ = new FilterWithFakeSender();
+ }
+
+ void Send(IPC::SyncMessage* message) {
+ std::unique_ptr<IPC::SyncMessage> deleter(message);
+ scoped_ptr<IPC::MessageReplyDeserializer> serializer(
+ message->GetReplyDeserializer());
+ filter_->OnMessageReceived(*message);
+ ASSERT_NE(nullptr, filter_->GetReply());
+ serializer->SerializeOutputParameters(*(filter_->GetReply()));
+ }
+
+ scoped_refptr<FilterWithFakeSender> filter_;
+};
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, GetFamilyCount) {
+ uint32 familyCount = 0;
+ Send(new DWriteFontProxyMsg_GetFamilyCount(&familyCount));
+ EXPECT_NE(0u, familyCount); // Assume there's some fonts on the test system.
+}
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, FindFamily) {
+ uint32 arialIndex = 0;
+ Send(new DWriteFontProxyMsg_FindFamily(L"Arial", &arialIndex));
+ EXPECT_NE(UINT_MAX, arialIndex);
+
+ filter_->ResetReply();
+ uint32 timesIndex = 0;
+ Send(new DWriteFontProxyMsg_FindFamily(L"Times New Roman", &timesIndex));
+ EXPECT_NE(UINT_MAX, timesIndex);
+ EXPECT_NE(arialIndex, timesIndex);
+
+ filter_->ResetReply();
+ uint32 unknownIndex = 0;
+ Send(new DWriteFontProxyMsg_FindFamily(L"Not a font family", &unknownIndex));
+ EXPECT_EQ(UINT_MAX, unknownIndex);
+}
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, GetFamilyNames) {
+ uint32 arialIndex = 0;
+ Send(new DWriteFontProxyMsg_FindFamily(L"Arial", &arialIndex));
+ filter_->ResetReply();
+
+ std::vector<StringPair> names;
+ Send(new DWriteFontProxyMsg_GetFamilyNames(arialIndex, &names));
+
+ EXPECT_LT(0u, names.size());
+ for (auto& pair : names) {
+ EXPECT_STRNE(L"", pair.first.c_str());
+ EXPECT_STRNE(L"", pair.second.c_str());
+ }
+}
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, GetFamilyNamesIndexOutOfBounds) {
+ std::vector<StringPair> names;
+ uint32 invalidIndex = 1000000;
+ Send(new DWriteFontProxyMsg_GetFamilyNames(invalidIndex, &names));
+
+ EXPECT_EQ(0u, names.size());
+}
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, GetFontFiles) {
+ uint32 arialIndex = 0;
+ Send(new DWriteFontProxyMsg_FindFamily(L"Arial", &arialIndex));
+ filter_->ResetReply();
+
+ std::vector<base::string16> files;
+ Send(new DWriteFontProxyMsg_GetFontFiles(arialIndex, &files));
+
+ EXPECT_LT(0u, files.size());
+ for (base::string16& file : files) {
+ EXPECT_STRNE(L"", file.c_str());
+ }
+}
+
+TEST_F(DWriteFontProxyMessageFilterUnitTest, GetFontFilesIndexOutOfBounds) {
+ std::vector<base::string16> files;
+ uint32 invalidIndex = 1000000;
+ Send(new DWriteFontProxyMsg_GetFontFiles(invalidIndex, &files));
+
+ EXPECT_EQ(0u, files.size());
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698