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

Side by Side Diff: extensions/browser/api/mime_handler_private/mime_handler_private_unittest.cc

Issue 2326913003: Privatize StrongBinding lifetime management (Closed)
Patch Set: rebase Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/api/mime_handler_private/mime_handler_private.h" 5 #include "extensions/browser/api/mime_handler_private/mime_handler_private.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "content/public/browser/stream_handle.h" 12 #include "content/public/browser/stream_handle.h"
13 #include "content/public/browser/stream_info.h" 13 #include "content/public/browser/stream_info.h"
14 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h" 14 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h"
15 #include "mojo/public/cpp/bindings/strong_binding.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
17 namespace extensions { 18 namespace extensions {
18 19
19 class TestStreamHandle : public content::StreamHandle { 20 class TestStreamHandle : public content::StreamHandle {
20 public: 21 public:
21 TestStreamHandle() : url_("stream://url") {} 22 TestStreamHandle() : url_("stream://url") {}
22 23
23 ~TestStreamHandle() override { 24 ~TestStreamHandle() override {
24 while (!close_callbacks_.empty()) { 25 while (!close_callbacks_.empty()) {
(...skipping 15 matching lines...) Expand all
40 41
41 class MimeHandlerServiceImplTest : public testing::Test { 42 class MimeHandlerServiceImplTest : public testing::Test {
42 public: 43 public:
43 void SetUp() override { 44 void SetUp() override {
44 std::unique_ptr<content::StreamInfo> stream_info(new content::StreamInfo); 45 std::unique_ptr<content::StreamInfo> stream_info(new content::StreamInfo);
45 stream_info->handle = base::WrapUnique(new TestStreamHandle); 46 stream_info->handle = base::WrapUnique(new TestStreamHandle);
46 stream_info->mime_type = "test/unit"; 47 stream_info->mime_type = "test/unit";
47 stream_info->original_url = GURL("test://extensions_unittests"); 48 stream_info->original_url = GURL("test://extensions_unittests");
48 stream_container_.reset( 49 stream_container_.reset(
49 new StreamContainer(std::move(stream_info), 1, true, GURL(), "")); 50 new StreamContainer(std::move(stream_info), 1, true, GURL(), ""));
50 service_.reset(new MimeHandlerServiceImpl(stream_container_->GetWeakPtr(), 51 service_binding_ =
51 mojo::GetProxy(&service_ptr_))); 52 mojo::MakeStrongBinding(base::MakeUnique<MimeHandlerServiceImpl>(
53 stream_container_->GetWeakPtr()),
54 mojo::GetProxy(&service_ptr_));
52 } 55 }
53 void TearDown() override { 56 void TearDown() override {
54 service_.reset(); 57 service_binding_->Close();
55 stream_container_.reset(); 58 stream_container_.reset();
56 } 59 }
57 60
58 void AbortCallback() { abort_called_ = true; } 61 void AbortCallback() { abort_called_ = true; }
59 void GetStreamInfoCallback(mime_handler::StreamInfoPtr stream_info) { 62 void GetStreamInfoCallback(mime_handler::StreamInfoPtr stream_info) {
60 stream_info_ = std::move(stream_info); 63 stream_info_ = std::move(stream_info);
61 } 64 }
62 65
63 base::MessageLoop message_loop_; 66 base::MessageLoop message_loop_;
64 std::unique_ptr<StreamContainer> stream_container_; 67 std::unique_ptr<StreamContainer> stream_container_;
65 mime_handler::MimeHandlerServicePtr service_ptr_; 68 mime_handler::MimeHandlerServicePtr service_ptr_;
66 std::unique_ptr<mime_handler::MimeHandlerService> service_; 69 mojo::StrongBindingPtr<mime_handler::MimeHandlerService> service_binding_;
67 bool abort_called_ = false; 70 bool abort_called_ = false;
68 mime_handler::StreamInfoPtr stream_info_; 71 mime_handler::StreamInfoPtr stream_info_;
69 }; 72 };
70 73
71 TEST_F(MimeHandlerServiceImplTest, Abort) { 74 TEST_F(MimeHandlerServiceImplTest, Abort) {
72 service_->AbortStream(base::Bind(&MimeHandlerServiceImplTest::AbortCallback, 75 service_binding_->impl()->AbortStream(base::Bind(
73 base::Unretained(this))); 76 &MimeHandlerServiceImplTest::AbortCallback, base::Unretained(this)));
74 EXPECT_TRUE(abort_called_); 77 EXPECT_TRUE(abort_called_);
75 78
76 abort_called_ = false; 79 abort_called_ = false;
77 service_->AbortStream(base::Bind(&MimeHandlerServiceImplTest::AbortCallback, 80 service_binding_->impl()->AbortStream(base::Bind(
78 base::Unretained(this))); 81 &MimeHandlerServiceImplTest::AbortCallback, base::Unretained(this)));
79 EXPECT_TRUE(abort_called_); 82 EXPECT_TRUE(abort_called_);
80 83
81 stream_container_.reset(); 84 stream_container_.reset();
82 abort_called_ = false; 85 abort_called_ = false;
83 service_->AbortStream(base::Bind(&MimeHandlerServiceImplTest::AbortCallback, 86 service_binding_->impl()->AbortStream(base::Bind(
84 base::Unretained(this))); 87 &MimeHandlerServiceImplTest::AbortCallback, base::Unretained(this)));
85 EXPECT_TRUE(abort_called_); 88 EXPECT_TRUE(abort_called_);
86 } 89 }
87 90
88 TEST_F(MimeHandlerServiceImplTest, GetStreamInfo) { 91 TEST_F(MimeHandlerServiceImplTest, GetStreamInfo) {
89 service_->GetStreamInfo( 92 service_binding_->impl()->GetStreamInfo(
90 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback, 93 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback,
91 base::Unretained(this))); 94 base::Unretained(this)));
92 ASSERT_TRUE(stream_info_); 95 ASSERT_TRUE(stream_info_);
93 EXPECT_TRUE(stream_info_->embedded); 96 EXPECT_TRUE(stream_info_->embedded);
94 EXPECT_EQ(1, stream_info_->tab_id); 97 EXPECT_EQ(1, stream_info_->tab_id);
95 EXPECT_EQ("test/unit", stream_info_->mime_type); 98 EXPECT_EQ("test/unit", stream_info_->mime_type);
96 EXPECT_EQ("test://extensions_unittests", stream_info_->original_url); 99 EXPECT_EQ("test://extensions_unittests", stream_info_->original_url);
97 EXPECT_EQ("stream://url", stream_info_->stream_url); 100 EXPECT_EQ("stream://url", stream_info_->stream_url);
98 101
99 service_->AbortStream(base::Bind(&MimeHandlerServiceImplTest::AbortCallback, 102 service_binding_->impl()->AbortStream(base::Bind(
100 base::Unretained(this))); 103 &MimeHandlerServiceImplTest::AbortCallback, base::Unretained(this)));
101 EXPECT_TRUE(abort_called_); 104 EXPECT_TRUE(abort_called_);
102 service_->GetStreamInfo( 105 service_binding_->impl()->GetStreamInfo(
103 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback, 106 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback,
104 base::Unretained(this))); 107 base::Unretained(this)));
105 ASSERT_FALSE(stream_info_); 108 ASSERT_FALSE(stream_info_);
106 109
107 stream_container_.reset(); 110 stream_container_.reset();
108 service_->GetStreamInfo( 111 service_binding_->impl()->GetStreamInfo(
109 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback, 112 base::Bind(&MimeHandlerServiceImplTest::GetStreamInfoCallback,
110 base::Unretained(this))); 113 base::Unretained(this)));
111 ASSERT_FALSE(stream_info_); 114 ASSERT_FALSE(stream_info_);
112 } 115 }
113 116
114 } // namespace extensions 117 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/mime_handler_private/mime_handler_private.cc ('k') | extensions/browser/api/serial/serial_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698