Ensure that we have an valid intent before we launch it
This commit is contained in:
parent
4a5ce92553
commit
edd8960009
6 changed files with 46 additions and 0 deletions
|
|
@ -21,6 +21,12 @@
|
|||
|
||||
namespace anbox {
|
||||
namespace android {
|
||||
bool Intent::valid() const {
|
||||
// At the moment we only support component+package for intents
|
||||
// (see android/service/android_api_skeleton.cpp for more details)
|
||||
return !(component.empty() && package.empty());
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &out, const Intent &intent) {
|
||||
out << "[";
|
||||
if (!intent.action.empty())
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ struct Intent {
|
|||
std::string package;
|
||||
std::string component;
|
||||
std::vector<std::string> categories;
|
||||
|
||||
bool valid() const;
|
||||
};
|
||||
|
||||
std::ostream &operator<<(std::ostream &out, const Intent &intent);
|
||||
|
|
|
|||
|
|
@ -79,6 +79,11 @@ anbox::cmds::Launch::Launch()
|
|||
stack_));
|
||||
|
||||
action([this](const cli::Command::Context&) {
|
||||
if (!intent_.valid()) {
|
||||
ERROR("The intent you provided is invalid. Please provide a correct launch intent.");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
auto trap = core::posix::trap_signals_for_process({core::posix::Signal::sig_term, core::posix::Signal::sig_int});
|
||||
trap->signal_raised().connect([trap](const core::posix::Signal& signal) {
|
||||
INFO("Signal %i received. Good night.", static_cast<int>(signal));
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
add_subdirectory(android)
|
||||
add_subdirectory(support)
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(graphics)
|
||||
|
|
|
|||
1
tests/anbox/android/CMakeLists.txt
Normal file
1
tests/anbox/android/CMakeLists.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
ANBOX_ADD_TEST(intent_tests intent_tests.cpp)
|
||||
31
tests/anbox/android/intent_tests.cpp
Normal file
31
tests/anbox/android/intent_tests.cpp
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (C) 2017 Simon Fels <morphis@gravedo.de>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 3, as published
|
||||
* by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranties of
|
||||
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "anbox/android/intent.h"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(Intent, IsValid) {
|
||||
anbox::android::Intent intent;
|
||||
ASSERT_FALSE(intent.valid());
|
||||
intent.component = "foo";
|
||||
ASSERT_TRUE(intent.valid());
|
||||
intent.package = "bla";
|
||||
ASSERT_TRUE(intent.valid());
|
||||
intent.component = "";
|
||||
ASSERT_TRUE(intent.valid());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue