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

Side by Side Diff: examples/moterm_example_app/moterm_example_app.cc

Issue 1375313006: For c++, Generate enum classes instead of enum from mojom. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « examples/keyboard_client/keyboard_client.cc ('k') | examples/native_run_app/native_run_app.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // This is a simple example application (with an embeddable view), which embeds 5 // This is a simple example application (with an embeddable view), which embeds
6 // the Moterm view, uses it to prompt the user, etc. 6 // the Moterm view, uses it to prompt the user, etc.
7 7
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 21 matching lines...) Expand all
32 #include "mojo/services/view_manager/public/cpp/view_manager_client_factory.h" 32 #include "mojo/services/view_manager/public/cpp/view_manager_client_factory.h"
33 #include "mojo/services/view_manager/public/cpp/view_manager_delegate.h" 33 #include "mojo/services/view_manager/public/cpp/view_manager_delegate.h"
34 #include "mojo/services/view_manager/public/cpp/view_observer.h" 34 #include "mojo/services/view_manager/public/cpp/view_observer.h"
35 35
36 // Kind of like |fputs()| (doesn't wait for result). 36 // Kind of like |fputs()| (doesn't wait for result).
37 void Fputs(mojo::files::File* file, const char* s) { 37 void Fputs(mojo::files::File* file, const char* s) {
38 size_t length = strlen(s); 38 size_t length = strlen(s);
39 mojo::Array<uint8_t> a(length); 39 mojo::Array<uint8_t> a(length);
40 memcpy(&a[0], s, length); 40 memcpy(&a[0], s, length);
41 41
42 file->Write(a.Pass(), 0, mojo::files::WHENCE_FROM_CURRENT, 42 file->Write(a.Pass(), 0, mojo::files::Whence::FROM_CURRENT,
43 mojo::files::File::WriteCallback()); 43 mojo::files::File::WriteCallback());
44 } 44 }
45 45
46 class MotermExampleAppView : public mojo::ViewObserver { 46 class MotermExampleAppView : public mojo::ViewObserver {
47 public: 47 public:
48 explicit MotermExampleAppView(mojo::Shell* shell, mojo::View* view) 48 explicit MotermExampleAppView(mojo::Shell* shell, mojo::View* view)
49 : shell_(shell), view_(view), moterm_view_(), weak_factory_(this) { 49 : shell_(shell), view_(view), moterm_view_(), weak_factory_(this) {
50 view_->AddObserver(this); 50 view_->AddObserver(this);
51 51
52 moterm_view_ = view_->view_manager()->CreateView(); 52 moterm_view_ = view_->view_manager()->CreateView();
53 view_->AddChild(moterm_view_); 53 view_->AddChild(moterm_view_);
54 moterm_view_->SetBounds(view_->bounds()); 54 moterm_view_->SetBounds(view_->bounds());
55 moterm_view_->SetVisible(true); 55 moterm_view_->SetVisible(true);
56 mojo::ServiceProviderPtr moterm_sp; 56 mojo::ServiceProviderPtr moterm_sp;
57 moterm_view_->Embed("mojo:moterm", GetProxy(&moterm_sp), nullptr); 57 moterm_view_->Embed("mojo:moterm", GetProxy(&moterm_sp), nullptr);
58 moterm_sp->ConnectToService(mojo::terminal::Terminal::Name_, 58 moterm_sp->ConnectToService(mojo::terminal::Terminal::Name_,
59 GetProxy(&moterm_terminal_).PassMessagePipe()); 59 GetProxy(&moterm_terminal_).PassMessagePipe());
60 Resize(); 60 Resize();
61 StartPrompt(true); 61 StartPrompt(true);
62 } 62 }
63 63
64 ~MotermExampleAppView() override {} 64 ~MotermExampleAppView() override {}
65 65
66 private: 66 private:
67 void Resize() { 67 void Resize() {
68 moterm_terminal_->SetSize(0, 0, false, [](mojo::files::Error error, 68 moterm_terminal_->SetSize(0, 0, false, [](mojo::files::Error error,
69 uint32_t rows, uint32_t columns) { 69 uint32_t rows, uint32_t columns) {
70 DCHECK_EQ(error, mojo::files::ERROR_OK); 70 DCHECK_EQ(error, mojo::files::Error::OK);
71 DVLOG(1) << "New size: " << rows << "x" << columns; 71 DVLOG(1) << "New size: " << rows << "x" << columns;
72 }); 72 });
73 } 73 }
74 74
75 void StartPrompt(bool first_time) { 75 void StartPrompt(bool first_time) {
76 if (!moterm_file_) { 76 if (!moterm_file_) {
77 moterm_terminal_->Connect(GetProxy(&moterm_file_), false, 77 moterm_terminal_->Connect(GetProxy(&moterm_file_), false,
78 [](mojo::files::Error error) { 78 [](mojo::files::Error error) {
79 DCHECK_EQ(error, mojo::files::ERROR_OK); 79 DCHECK_EQ(error, mojo::files::Error::OK);
80 }); 80 });
81 } 81 }
82 82
83 if (first_time) { 83 if (first_time) {
84 // Display some welcome text. 84 // Display some welcome text.
85 Fputs(moterm_file_.get(), 85 Fputs(moterm_file_.get(),
86 "Welcome to " 86 "Welcome to "
87 "\x1b[1m\x1b[34mM\x1b[31mo\x1b[33mt\x1b[34me\x1b[32mr\x1b[31mm\n" 87 "\x1b[1m\x1b[34mM\x1b[31mo\x1b[33mt\x1b[34me\x1b[32mr\x1b[31mm\n"
88 "\n"); 88 "\n");
89 } 89 }
90 90
91 Fputs(moterm_file_.get(), "\x1b[0m\nWhere do you want to go today?\n:) "); 91 Fputs(moterm_file_.get(), "\x1b[0m\nWhere do you want to go today?\n:) ");
92 moterm_file_->Read(1000, 0, mojo::files::WHENCE_FROM_CURRENT, 92 moterm_file_->Read(1000, 0, mojo::files::Whence::FROM_CURRENT,
93 base::Bind(&MotermExampleAppView::OnInputFromPrompt, 93 base::Bind(&MotermExampleAppView::OnInputFromPrompt,
94 weak_factory_.GetWeakPtr())); 94 weak_factory_.GetWeakPtr()));
95 } 95 }
96 void OnInputFromPrompt(mojo::files::Error error, 96 void OnInputFromPrompt(mojo::files::Error error,
97 mojo::Array<uint8_t> bytes_read) { 97 mojo::Array<uint8_t> bytes_read) {
98 if (error != mojo::files::ERROR_OK || !bytes_read) { 98 if (error != mojo::files::Error::OK || !bytes_read) {
99 // TODO(vtl): Handle errors? 99 // TODO(vtl): Handle errors?
100 NOTIMPLEMENTED(); 100 NOTIMPLEMENTED();
101 return; 101 return;
102 } 102 }
103 103
104 std::string dest_url; 104 std::string dest_url;
105 if (bytes_read.size() >= 1) { 105 if (bytes_read.size() >= 1) {
106 base::TrimWhitespaceASCII( 106 base::TrimWhitespaceASCII(
107 std::string(reinterpret_cast<const char*>(&bytes_read[0]), 107 std::string(reinterpret_cast<const char*>(&bytes_read[0]),
108 bytes_read.size()), 108 bytes_read.size()),
(...skipping 15 matching lines...) Expand all
124 mojo::terminal::TerminalClientPtr dest_terminal_client; 124 mojo::terminal::TerminalClientPtr dest_terminal_client;
125 mojo::ConnectToService(dest_sp.get(), &dest_terminal_client); 125 mojo::ConnectToService(dest_sp.get(), &dest_terminal_client);
126 moterm_terminal_->ConnectToClient( 126 moterm_terminal_->ConnectToClient(
127 dest_terminal_client.Pass(), true, 127 dest_terminal_client.Pass(), true,
128 base::Bind(&MotermExampleAppView::OnDestinationDone, 128 base::Bind(&MotermExampleAppView::OnDestinationDone,
129 weak_factory_.GetWeakPtr())); 129 weak_factory_.GetWeakPtr()));
130 } 130 }
131 void OnDestinationDone(mojo::files::Error error) { 131 void OnDestinationDone(mojo::files::Error error) {
132 // We should always succeed. (It'll only fail on synchronous failures, which 132 // We should always succeed. (It'll only fail on synchronous failures, which
133 // only occur when it's busy.) 133 // only occur when it's busy.)
134 DCHECK_EQ(error, mojo::files::ERROR_OK); 134 DCHECK_EQ(error, mojo::files::Error::OK);
135 StartPrompt(false); 135 StartPrompt(false);
136 } 136 }
137 137
138 // |ViewObserver|: 138 // |ViewObserver|:
139 void OnViewDestroyed(mojo::View* view) override { 139 void OnViewDestroyed(mojo::View* view) override {
140 DCHECK(view == view_); 140 DCHECK(view == view_);
141 delete this; 141 delete this;
142 } 142 }
143 143
144 void OnViewBoundsChanged(mojo::View* view, 144 void OnViewBoundsChanged(mojo::View* view,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 mojo::ApplicationImpl* application_impl_; 195 mojo::ApplicationImpl* application_impl_;
196 scoped_ptr<mojo::ViewManagerClientFactory> view_manager_client_factory_; 196 scoped_ptr<mojo::ViewManagerClientFactory> view_manager_client_factory_;
197 197
198 DISALLOW_COPY_AND_ASSIGN(MotermExampleApp); 198 DISALLOW_COPY_AND_ASSIGN(MotermExampleApp);
199 }; 199 };
200 200
201 MojoResult MojoMain(MojoHandle application_request) { 201 MojoResult MojoMain(MojoHandle application_request) {
202 mojo::ApplicationRunnerChromium runner(new MotermExampleApp()); 202 mojo::ApplicationRunnerChromium runner(new MotermExampleApp());
203 return runner.Run(application_request); 203 return runner.Run(application_request);
204 } 204 }
OLDNEW
« no previous file with comments | « examples/keyboard_client/keyboard_client.cc ('k') | examples/native_run_app/native_run_app.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698