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

Unified Diff: mojo/shell/public/cpp/lib/shell_connection.cc

Issue 1725353003: Eliminate mojo::Shell client lib class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@15connector
Patch Set: . Created 4 years, 10 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
Index: mojo/shell/public/cpp/lib/shell_connection.cc
diff --git a/mojo/shell/public/cpp/lib/shell_connection.cc b/mojo/shell/public/cpp/lib/shell_connection.cc
index e14cc77e59308d71fbfcbfc924c43b3d24160722..5977cc64a9f1be90a37145f983a3a009b49c1db6 100644
--- a/mojo/shell/public/cpp/lib/shell_connection.cc
+++ b/mojo/shell/public/cpp/lib/shell_connection.cc
@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <algorithm>
-#include <utility>
-
#include "base/bind.h"
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
@@ -17,65 +14,6 @@
namespace mojo {
-class AppRefCountImpl : public AppRefCount {
- public:
- AppRefCountImpl(ShellConnection* connection,
- scoped_refptr<base::SingleThreadTaskRunner> app_task_runner)
- : connection_(connection),
- app_task_runner_(app_task_runner) {}
- ~AppRefCountImpl() override {
-#ifndef NDEBUG
- // Ensure that this object is used on only one thread at a time, or else
- // there could be races where the object is being reset on one thread and
- // cloned on another.
- if (clone_task_runner_)
- DCHECK(clone_task_runner_->BelongsToCurrentThread());
-#endif
-
- if (app_task_runner_->BelongsToCurrentThread()) {
- connection_->Release();
- } else {
- app_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&ShellConnection::Release, base::Unretained(connection_)));
- }
- }
-
- private:
- // AppRefCount:
- scoped_ptr<AppRefCount> Clone() override {
- if (app_task_runner_->BelongsToCurrentThread()) {
- connection_->AddRef();
- } else {
- app_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&ShellConnection::AddRef, base::Unretained(connection_)));
- }
-
-#ifndef NDEBUG
- // Ensure that this object is used on only one thread at a time, or else
- // there could be races where the object is being reset on one thread and
- // cloned on another.
- if (clone_task_runner_) {
- DCHECK(clone_task_runner_->BelongsToCurrentThread());
- } else {
- clone_task_runner_ = base::MessageLoop::current()->task_runner();
- }
-#endif
-
- return make_scoped_ptr(new AppRefCountImpl(connection_, app_task_runner_));
- }
-
- ShellConnection* connection_;
- scoped_refptr<base::SingleThreadTaskRunner> app_task_runner_;
-
-#ifndef NDEBUG
- scoped_refptr<base::SingleThreadTaskRunner> clone_task_runner_;
-#endif
-
- DISALLOW_COPY_AND_ASSIGN(AppRefCountImpl);
-};
-
////////////////////////////////////////////////////////////////////////////////
// ShellConnection, public:
@@ -84,7 +22,6 @@ ShellConnection::ShellConnection(
InterfaceRequest<shell::mojom::ShellClient> request)
: client_(client),
binding_(this, std::move(request)),
- ref_count_(0),
weak_factory_(this) {}
ShellConnection::~ShellConnection() {}
@@ -95,36 +32,6 @@ void ShellConnection::WaitForInitialize() {
}
////////////////////////////////////////////////////////////////////////////////
-// ShellConnection, Shell implementation:
-
-scoped_ptr<Connection> ShellConnection::Connect(const std::string& url) {
- return connector_->Connect(url);
-}
-
-scoped_ptr<Connection> ShellConnection::Connect(
- Connector::ConnectParams* params) {
- return connector_->Connect(params);
-}
-
-scoped_ptr<Connector> ShellConnection::CloneConnector() const {
- return connector_->Clone();
-}
-
-scoped_ptr<AppRefCount> ShellConnection::CreateAppRefCount() {
- AddRef();
- return make_scoped_ptr(
- new AppRefCountImpl(this, base::MessageLoop::current()->task_runner()));
-}
-
-void ShellConnection::Quit() {
- client_->Quit();
- if (base::MessageLoop::current() &&
- base::MessageLoop::current()->is_running()) {
- base::MessageLoop::current()->QuitWhenIdle();
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
// ShellConnection, shell::mojom::ShellClient implementation:
void ShellConnection::Initialize(shell::mojom::ConnectorPtr connector,
@@ -135,7 +42,7 @@ void ShellConnection::Initialize(shell::mojom::ConnectorPtr connector,
std::move(connector),
base::Bind(&ShellConnection::OnConnectionError,
weak_factory_.GetWeakPtr())));
- client_->Initialize(this, url, id, user_id);
+ client_->Initialize(connector_.get(), url, id, user_id);
}
void ShellConnection::AcceptConnection(
@@ -162,27 +69,12 @@ void ShellConnection::AcceptConnection(
// ShellConnection, private:
void ShellConnection::OnConnectionError() {
- base::WeakPtr<ShellConnection> ptr(weak_factory_.GetWeakPtr());
-
// We give the client notice first, since it might want to do something on
// shell connection errors other than immediate termination of the run
// loop. The application might want to continue servicing connections other
// than the one to the shell.
- bool quit_now = client_->ShellConnectionLost();
- if (quit_now)
- Quit();
- if (!ptr)
- return;
- connector_.reset();
-}
-
-void ShellConnection::AddRef() {
- ++ref_count_;
-}
-
-void ShellConnection::Release() {
- if (!--ref_count_)
- Quit();
+ if (client_->ShellConnectionLost())
+ connector_.reset();
}
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698