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

Unified Diff: mojo/shell/application_manager_apptest.cc

Issue 1578473002: Pass application ids via AcceptConnection & ConnectToApplication callback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/shell/application_manager.cc ('k') | mojo/shell/application_manager_apptest_driver.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/application_manager_apptest.cc
diff --git a/mojo/shell/application_manager_apptest.cc b/mojo/shell/application_manager_apptest.cc
index b159ef4817dc56532cadd598dd94a46ca82d2bdf..1e18c6b2e0f8f8031b964fad87c3355cd61554c8 100644
--- a/mojo/shell/application_manager_apptest.cc
+++ b/mojo/shell/application_manager_apptest.cc
@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/process/process_handle.h"
+#include "mojo/common/weak_binding_set.h"
#include "mojo/converters/network/network_type_converters.h"
#include "mojo/shell/application_manager_apptests.mojom.h"
#include "mojo/shell/public/cpp/application_impl.h"
@@ -29,10 +30,12 @@ class ApplicationManagerAppTestDelegate
public InterfaceFactory<CreateInstanceForHandleTest>,
public CreateInstanceForHandleTest {
public:
- ApplicationManagerAppTestDelegate() : binding_(this) {}
+ ApplicationManagerAppTestDelegate()
+ : target_id_(Shell::kInvalidApplicationID),
+ binding_(this) {}
~ApplicationManagerAppTestDelegate() override {}
- const std::string& data() const { return data_; }
+ uint32_t target_id() const { return target_id_; }
private:
// ApplicationDelegate:
@@ -50,12 +53,12 @@ class ApplicationManagerAppTestDelegate
}
// CreateInstanceForHandleTest:
- void Ping(const String& data) override {
- data_ = data;
+ void SetTargetID(uint32_t target_id) override {
+ target_id_ = target_id;
base::MessageLoop::current()->QuitWhenIdle();
}
- std::string data_;
+ uint32_t target_id_;
Binding<CreateInstanceForHandleTest> binding_;
@@ -76,10 +79,10 @@ class ApplicationManagerAppTest : public mojo::test::ApplicationTestBase,
protected:
struct ApplicationInfo {
- ApplicationInfo(int id, const std::string& url)
+ ApplicationInfo(uint32_t id, const std::string& url)
: id(id), url(url), pid(base::kNullProcessId) {}
- int id;
+ uint32_t id;
std::string url;
base::ProcessId pid;
};
@@ -92,9 +95,9 @@ class ApplicationManagerAppTest : public mojo::test::ApplicationTestBase,
binding_.WaitForIncomingMethodCall();
}
- const std::string& data() const {
+ uint32_t target_id() const {
DCHECK(delegate_);
- return delegate_->data();
+ return delegate_->target_id();
}
const std::vector<ApplicationInfo>& applications() const {
@@ -117,7 +120,7 @@ class ApplicationManagerAppTest : public mojo::test::ApplicationTestBase,
mojom::ApplicationInfoPtr application) override {
applications_.push_back(ApplicationInfo(application->id, application->url));
}
- void ApplicationInstanceDestroyed(int id) override {
+ void ApplicationInstanceDestroyed(uint32_t id) override {
for (auto it = applications_.begin(); it != applications_.end(); ++it) {
auto& application = *it;
if (application.id == id) {
@@ -126,7 +129,7 @@ class ApplicationManagerAppTest : public mojo::test::ApplicationTestBase,
}
}
}
- void ApplicationPIDAvailable(int id, uint32_t pid) override {
+ void ApplicationPIDAvailable(uint32_t id, uint32_t pid) override {
for (auto& application : applications_) {
if (application.id == id) {
application.pid = pid;
@@ -148,27 +151,33 @@ TEST_F(ApplicationManagerAppTest, CreateInstanceForHandle) {
// 1. Launch a process. (Actually, have the runner launch a process that
// launches a process. #becauselinkerrors).
mojo::shell::test::mojom::DriverPtr driver;
- application_impl()->ConnectToService("exe:application_manager_apptest_driver",
- &driver);
+ scoped_ptr<ApplicationConnection> connection =
+ application_impl()->ConnectToApplication(
+ "exe:application_manager_apptest_driver");
+ connection->ConnectToService(&driver);
// 2. Wait for the target to connect to us. (via
// mojo:application_manager_apptests)
base::MessageLoop::current()->Run();
- // 3.1. Validate that we got the ping from the target process...
- EXPECT_EQ("From Target", data());
+ uint32_t remote_id = Shell::kInvalidApplicationID;
+ EXPECT_TRUE(connection->GetRemoteApplicationID(&remote_id));
+ EXPECT_NE(Shell::kInvalidApplicationID, remote_id);
- // 3.2. ... and that the right applications/processes were created.
- // Note that the target process will be created even if the tests are
- // run with --single-process.
+ // 2. Validate that the right applications/processes were created.
+ // Note that the target process will be created even if the tests are
+ // run with --single-process.
EXPECT_EQ(2u, applications().size());
{
auto& application = applications().front();
+ EXPECT_EQ(remote_id, application.id);
EXPECT_EQ("exe://application_manager_apptest_driver/", application.url);
EXPECT_NE(base::kNullProcessId, application.pid);
}
{
auto& application = applications().back();
+ // We learn about the target process id via a ping from it.
+ EXPECT_EQ(target_id(), application.id);
EXPECT_EQ("exe://application_manager_apptest_target/", application.url);
EXPECT_NE(base::kNullProcessId, application.pid);
}
« no previous file with comments | « mojo/shell/application_manager.cc ('k') | mojo/shell/application_manager_apptest_driver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698