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

Side by Side Diff: mash/catalog_viewer/catalog_viewer.cc

Issue 2096293002: Eliminate usage of InterfacePtr::WaitForIncomingResponse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix trybots failure Created 4 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "mash/catalog_viewer/catalog_viewer.h" 5 #include "mash/catalog_viewer/catalog_viewer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 23 matching lines...) Expand all
34 34
35 class CatalogViewerContents : public views::WidgetDelegateView, 35 class CatalogViewerContents : public views::WidgetDelegateView,
36 public ui::TableModel { 36 public ui::TableModel {
37 public: 37 public:
38 CatalogViewerContents(CatalogViewer* catalog_viewer, 38 CatalogViewerContents(CatalogViewer* catalog_viewer,
39 catalog::mojom::CatalogPtr catalog) 39 catalog::mojom::CatalogPtr catalog)
40 : catalog_viewer_(catalog_viewer), 40 : catalog_viewer_(catalog_viewer),
41 catalog_(std::move(catalog)), 41 catalog_(std::move(catalog)),
42 table_view_(nullptr), 42 table_view_(nullptr),
43 table_view_parent_(nullptr), 43 table_view_parent_(nullptr),
44 observer_(nullptr), 44 observer_(nullptr) {
45 weak_ptr_factory_(this) {
46 table_view_ = new views::TableView(this, GetColumns(), views::TEXT_ONLY, 45 table_view_ = new views::TableView(this, GetColumns(), views::TEXT_ONLY,
47 false); 46 false);
48 set_background(views::Background::CreateStandardPanelBackground()); 47 set_background(views::Background::CreateStandardPanelBackground());
49 48
50 table_view_parent_ = table_view_->CreateParentIfNecessary(); 49 table_view_parent_ = table_view_->CreateParentIfNecessary();
51 AddChildView(table_view_parent_); 50 AddChildView(table_view_parent_);
52 51
53 catalog_->GetEntries(nullptr,
54 base::Bind(&CatalogViewerContents::OnGotCatalogEntries,
55 weak_ptr_factory_.GetWeakPtr()));
56 // We don't want to show an empty UI so we just block until we have all the 52 // We don't want to show an empty UI so we just block until we have all the
57 // data. 53 // data. GetEntries is a sync call.
58 catalog_.WaitForIncomingResponse(); 54 mojo::Array<catalog::mojom::EntryPtr> entries;
55 bool got = catalog_->GetEntries(nullptr, &entries);
56 if (got) {
57 for (auto& entry : entries)
58 entries_.push_back(Entry(entry->display_name, entry->name));
59 observer_->OnModelChanged();
60 }
59 } 61 }
60 ~CatalogViewerContents() override { 62 ~CatalogViewerContents() override {
61 table_view_->SetModel(nullptr); 63 table_view_->SetModel(nullptr);
62 catalog_viewer_->RemoveWindow(GetWidget()); 64 catalog_viewer_->RemoveWindow(GetWidget());
63 } 65 }
64 66
65 private: 67 private:
66 struct Entry { 68 struct Entry {
67 Entry(const std::string& name, const std::string& url) 69 Entry(const std::string& name, const std::string& url)
68 : name(name), url(url) {} 70 : name(name), url(url) {}
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 default: 112 default:
111 NOTREACHED(); 113 NOTREACHED();
112 break; 114 break;
113 } 115 }
114 return base::string16(); 116 return base::string16();
115 } 117 }
116 void SetObserver(ui::TableModelObserver* observer) override { 118 void SetObserver(ui::TableModelObserver* observer) override {
117 observer_ = observer; 119 observer_ = observer;
118 } 120 }
119 121
120 void OnGotCatalogEntries(mojo::Array<catalog::mojom::EntryPtr> entries) {
121 entries_.clear();
122 for (auto& entry : entries)
123 entries_.push_back(Entry(entry->display_name, entry->name));
124 observer_->OnModelChanged();
125 }
126
127 static std::vector<ui::TableColumn> GetColumns() { 122 static std::vector<ui::TableColumn> GetColumns() {
128 std::vector<ui::TableColumn> columns; 123 std::vector<ui::TableColumn> columns;
129 124
130 ui::TableColumn name_column; 125 ui::TableColumn name_column;
131 name_column.id = 0; 126 name_column.id = 0;
132 // TODO(beng): use resources. 127 // TODO(beng): use resources.
133 name_column.title = base::ASCIIToUTF16("Name"); 128 name_column.title = base::ASCIIToUTF16("Name");
134 name_column.width = -1; 129 name_column.width = -1;
135 name_column.percent = 0.4f; 130 name_column.percent = 0.4f;
136 name_column.sortable = true; 131 name_column.sortable = true;
(...skipping 13 matching lines...) Expand all
150 145
151 CatalogViewer* catalog_viewer_; 146 CatalogViewer* catalog_viewer_;
152 catalog::mojom::CatalogPtr catalog_; 147 catalog::mojom::CatalogPtr catalog_;
153 148
154 views::TableView* table_view_; 149 views::TableView* table_view_;
155 views::View* table_view_parent_; 150 views::View* table_view_parent_;
156 ui::TableModelObserver* observer_; 151 ui::TableModelObserver* observer_;
157 152
158 std::vector<Entry> entries_; 153 std::vector<Entry> entries_;
159 154
160 base::WeakPtrFactory<CatalogViewerContents> weak_ptr_factory_;
161
162 DISALLOW_COPY_AND_ASSIGN(CatalogViewerContents); 155 DISALLOW_COPY_AND_ASSIGN(CatalogViewerContents);
163 }; 156 };
164 157
165 } // namespace 158 } // namespace
166 159
167 CatalogViewer::CatalogViewer() {} 160 CatalogViewer::CatalogViewer() {}
168 CatalogViewer::~CatalogViewer() {} 161 CatalogViewer::~CatalogViewer() {}
169 162
170 void CatalogViewer::RemoveWindow(views::Widget* window) { 163 void CatalogViewer::RemoveWindow(views::Widget* window) {
171 auto it = std::find(windows_.begin(), windows_.end(), window); 164 auto it = std::find(windows_.begin(), windows_.end(), window);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 windows_.push_back(window); 201 windows_.push_back(window);
209 } 202 }
210 203
211 void CatalogViewer::Create(shell::Connection* connection, 204 void CatalogViewer::Create(shell::Connection* connection,
212 mojom::LaunchableRequest request) { 205 mojom::LaunchableRequest request) {
213 bindings_.AddBinding(this, std::move(request)); 206 bindings_.AddBinding(this, std::move(request));
214 } 207 }
215 208
216 } // namespace catalog_viewer 209 } // namespace catalog_viewer
217 } // namespace mash 210 } // namespace mash
OLDNEW
« no previous file with comments | « components/leveldb/remote_iterator_unittest.cc ('k') | mojo/public/cpp/bindings/interface_ptr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698