| OLD | NEW |
| 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 <deque> | 5 #include <deque> |
| 6 #include <iomanip> | 6 #include <iomanip> |
| 7 #include <iostream> | 7 #include <iostream> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop/message_loop.h" |
| 10 #include "examples/media_test/keystroke.h" | 11 #include "examples/media_test/keystroke.h" |
| 11 #include "examples/media_test/media_test.h" | 12 #include "examples/media_test/media_test.h" |
| 12 #include "mojo/application/application_runner_chromium.h" | |
| 13 #include "mojo/public/c/system/main.h" | 13 #include "mojo/public/c/system/main.h" |
| 14 #include "mojo/public/cpp/application/application_delegate.h" | 14 #include "mojo/public/cpp/application/application_impl_base.h" |
| 15 #include "mojo/public/cpp/application/application_impl.h" | 15 #include "mojo/public/cpp/application/run_application.h" |
| 16 | 16 |
| 17 namespace mojo { | 17 namespace mojo { |
| 18 namespace media { | 18 namespace media { |
| 19 namespace examples { | 19 namespace examples { |
| 20 | 20 |
| 21 class MediaTestApp : public mojo::ApplicationDelegate { | 21 class MediaTestApp : public mojo::ApplicationImplBase { |
| 22 public: | 22 public: |
| 23 MediaTestApp() {} | 23 MediaTestApp() {} |
| 24 | 24 |
| 25 ~MediaTestApp() override {} | 25 ~MediaTestApp() override {} |
| 26 | 26 |
| 27 // ApplicationDelegate implementation. | 27 // ApplicationImplBase overrides. |
| 28 void Initialize(mojo::ApplicationImpl* app) override { | 28 void OnInitialize() override { |
| 29 app_ = app; | 29 ProcessArgs(args()); |
| 30 ProcessArgs(app->args()); | |
| 31 | 30 |
| 32 std::cout << std::endl << "MEDIA TEST" << std::endl << std::endl; | 31 std::cout << std::endl << "MEDIA TEST" << std::endl << std::endl; |
| 33 | 32 |
| 34 if (input_file_names_.empty()) { | 33 if (input_file_names_.empty()) { |
| 35 std::cout << "Please provide the names of the files you want to play;" | 34 std::cout << "Please provide the names of the files you want to play;" |
| 36 << " for example:" << std::endl | 35 << " for example:" << std::endl |
| 37 << "mojo/devtools/common/mojo_run \\" << std::endl | 36 << "mojo/devtools/common/mojo_run \\" << std::endl |
| 38 << " \"https://core.mojoapps.io/media_test.mojo \\" | 37 << " \"https://core.mojoapps.io/media_test.mojo \\" |
| 39 << std::endl | 38 << std::endl |
| 40 << " http:/localhost/superstition.ogg \\" << std::endl | 39 << " http:/localhost/superstition.ogg \\" << std::endl |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 } | 87 } |
| 89 } | 88 } |
| 90 | 89 |
| 91 input_file_names_iter_ = input_file_names_.begin(); | 90 input_file_names_iter_ = input_file_names_.begin(); |
| 92 } | 91 } |
| 93 | 92 |
| 94 // Creates a new MediaTest object to play the file referenced by | 93 // Creates a new MediaTest object to play the file referenced by |
| 95 // input_file_names_iter_. | 94 // input_file_names_iter_. |
| 96 void CreateNewMediaTest() { | 95 void CreateNewMediaTest() { |
| 97 MOJO_DCHECK(input_file_names_iter_ != input_file_names_.end()); | 96 MOJO_DCHECK(input_file_names_iter_ != input_file_names_.end()); |
| 98 media_test_ = MediaTest::Create(app_, *input_file_names_iter_); | 97 media_test_ = MediaTest::Create(shell(), *input_file_names_iter_); |
| 99 | 98 |
| 100 metadata_shown_ = false; | 99 metadata_shown_ = false; |
| 101 media_test_->RegisterUpdateCallback( | 100 media_test_->RegisterUpdateCallback( |
| 102 [this]() { HandleMediaTestUpdateCallback(); }); | 101 [this]() { HandleMediaTestUpdateCallback(); }); |
| 103 | 102 |
| 104 media_test_->Play(); | 103 media_test_->Play(); |
| 105 } | 104 } |
| 106 | 105 |
| 107 void HandleMediaTestUpdateCallback() { | 106 void HandleMediaTestUpdateCallback() { |
| 108 if (media_test_->state() == MediaTest::State::kEnded && | 107 if (media_test_->state() == MediaTest::State::kEnded && |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 void PlayNext() { | 286 void PlayNext() { |
| 288 if (++input_file_names_iter_ == input_file_names_.end()) { | 287 if (++input_file_names_iter_ == input_file_names_.end()) { |
| 289 input_file_names_iter_ = input_file_names_.begin(); | 288 input_file_names_iter_ = input_file_names_.begin(); |
| 290 } else { | 289 } else { |
| 291 CreateNewMediaTest(); | 290 CreateNewMediaTest(); |
| 292 } | 291 } |
| 293 } | 292 } |
| 294 | 293 |
| 295 const char* clear_line() const { return paint_ ? kClearLine : ""; } | 294 const char* clear_line() const { return paint_ ? kClearLine : ""; } |
| 296 | 295 |
| 297 mojo::ApplicationImpl* app_; | |
| 298 std::unique_ptr<MediaTest> media_test_; | 296 std::unique_ptr<MediaTest> media_test_; |
| 299 std::deque<std::string> input_file_names_; | 297 std::deque<std::string> input_file_names_; |
| 300 decltype(input_file_names_.begin()) input_file_names_iter_; | 298 decltype(input_file_names_.begin()) input_file_names_iter_; |
| 301 bool quit_ = false; | 299 bool quit_ = false; |
| 302 bool paint_ = true; | 300 bool paint_ = true; |
| 303 bool metadata_shown_ = false; | 301 bool metadata_shown_ = false; |
| 304 uint64_t duration_ns_; | 302 uint64_t duration_ns_; |
| 305 | 303 |
| 306 DISALLOW_COPY_AND_ASSIGN(MediaTestApp); | 304 DISALLOW_COPY_AND_ASSIGN(MediaTestApp); |
| 307 }; | 305 }; |
| 308 | 306 |
| 309 const char* MediaTestApp::kHome = "\r"; | 307 const char* MediaTestApp::kHome = "\r"; |
| 310 const char* MediaTestApp::kClearLine = "\033[K"; | 308 const char* MediaTestApp::kClearLine = "\033[K"; |
| 311 const char* MediaTestApp::kUp = "\033[A"; | 309 const char* MediaTestApp::kUp = "\033[A"; |
| 312 | 310 |
| 313 } // namespace examples | 311 } // namespace examples |
| 314 } // namespace media | 312 } // namespace media |
| 315 } // namespace mojo | 313 } // namespace mojo |
| 316 | 314 |
| 317 MojoResult MojoMain(MojoHandle application_request) { | 315 MojoResult MojoMain(MojoHandle application_request) { |
| 318 mojo::ApplicationRunnerChromium runner( | 316 mojo::media::examples::MediaTestApp media_test_app; |
| 319 new mojo::media::examples::MediaTestApp); | 317 return mojo::RunMainApplication(application_request, &media_test_app); |
| 320 return runner.Run(application_request); | |
| 321 } | 318 } |
| OLD | NEW |