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

Unified Diff: services/ui/public/cpp/in_flight_change.h

Issue 2651593002: mus: Remove the old client lib. (Closed)
Patch Set: restore test Created 3 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 | « services/ui/public/cpp/BUILD.gn ('k') | services/ui/public/cpp/in_flight_change.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/public/cpp/in_flight_change.h
diff --git a/services/ui/public/cpp/in_flight_change.h b/services/ui/public/cpp/in_flight_change.h
deleted file mode 100644
index ad14be96baf548764cfebde0dde6fb44d9dd7f9d..0000000000000000000000000000000000000000
--- a/services/ui/public/cpp/in_flight_change.h
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_
-#define SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_
-
-#include <stdint.h>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "services/ui/public/cpp/window_observer.h"
-#include "ui/gfx/geometry/rect.h"
-
-namespace ui {
-
-namespace mojom {
-enum class Cursor : int32_t;
-}
-
-class Window;
-class WindowTreeClient;
-
-enum class ChangeType {
- ADD_CHILD,
- ADD_TRANSIENT_WINDOW,
- BOUNDS,
- CAPTURE,
- DELETE_WINDOW,
- DRAG_LOOP,
- FOCUS,
- MOVE_LOOP,
- NEW_TOP_LEVEL_WINDOW,
- NEW_WINDOW,
- OPACITY,
- PREDEFINED_CURSOR,
- PROPERTY,
- REMOVE_CHILD,
- REMOVE_TRANSIENT_WINDOW_FROM_PARENT,
- REORDER,
- SET_MODAL,
- VISIBLE,
-};
-
-// InFlightChange is used to track function calls to the server and take the
-// appropriate action when the call fails, or the same property changes while
-// waiting for the response. When a function is called on the server an
-// InFlightChange is created. The function call is complete when
-// OnChangeCompleted() is received from the server. The following may occur
-// while waiting for a response:
-// . A new value is encountered from the server. For example, the bounds of
-// a window is locally changed and while waiting for the ack
-// OnWindowBoundsChanged() is received.
-// When this happens SetRevertValueFrom() is invoked on the InFlightChange.
-// The expectation is SetRevertValueFrom() takes the value to revert from the
-// supplied change.
-// . While waiting for the ack the property is again modified locally. When
-// this happens a new InFlightChange is created. Once the ack for the first
-// call is received, and the server rejected the change ChangeFailed() is
-// invoked on the first change followed by SetRevertValueFrom() on the second
-// InFlightChange. This allows the new change to update the value to revert
-// should the second call fail.
-// . If the server responds that the call failed and there is not another
-// InFlightChange for the same window outstanding, then ChangeFailed() is
-// invoked followed by Revert(). The expectation is Revert() sets the
-// appropriate value back on the Window.
-//
-// In general there are two classes of changes:
-// 1. We are the only side allowed to make the change.
-// 2. The change can also be applied by another client. For example, the
-// window manager may change the bounds as well as the local client.
-//
-// For (1) use CrashInFlightChange. As the name implies this change CHECKs that
-// the change succeeded. Use the following pattern for this. This code goes
-// where the change is sent to the server (in WindowTreeClient):
-// const uint32_t change_id =
-// ScheduleInFlightChange(base::WrapUnique(new CrashInFlightChange(
-// window, ChangeType::REORDER)));
-//
-// For (2) use the same pattern as (1), but in the on change callback from the
-// server (e.g. OnWindowBoundsChanged()) add the following:
-// // value_from_server is the value supplied from the server. It corresponds
-// // to the value of the property at the time the server processed the
-// // change. If the local change fails, this is the value reverted to.
-// InFlightBoundsChange new_change(window, value_from_server);
-// if (ApplyServerChangeToExistingInFlightChange(new_change)) {
-// // There was an in flight change for the same property. The in flight
-// // change takes the value to revert from |new_change|.
-// return;
-// }
-//
-// // else case is no flight in change and the new value can be applied
-// // immediately.
-// WindowPrivate(window).LocalSetValue(new_value_from_server);
-//
-class InFlightChange {
- public:
- InFlightChange(Window* window, ChangeType type);
- virtual ~InFlightChange();
-
- // NOTE: for properties not associated with any window window is null.
- Window* window() { return window_; }
- const Window* window() const { return window_; }
- ChangeType change_type() const { return change_type_; }
-
- // Returns true if the two changes are considered the same. This is only
- // invoked if the window id and ChangeType match.
- virtual bool Matches(const InFlightChange& change) const;
-
- // Called in two cases:
- // . When the corresponding property on the server changes. In this case
- // |change| corresponds to the value from the server.
- // . When |change| unsuccesfully completes.
- virtual void SetRevertValueFrom(const InFlightChange& change) = 0;
-
- // The change failed. Normally you need not take any action here as Revert()
- // is called as appropriate.
- virtual void ChangeFailed();
-
- // The change failed and there is no pending change of the same type
- // outstanding, revert the value.
- virtual void Revert() = 0;
-
- private:
- Window* window_;
- const ChangeType change_type_;
-};
-
-class InFlightBoundsChange : public InFlightChange {
- public:
- InFlightBoundsChange(Window* window, const gfx::Rect& revert_bounds);
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- gfx::Rect revert_bounds_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightBoundsChange);
-};
-
-class InFlightDragChange : public InFlightChange {
- public:
- InFlightDragChange(Window* window, ChangeType type);
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(InFlightDragChange);
-};
-
-// Inflight change that crashes on failure. This is useful for changes that are
-// expected to always complete.
-class CrashInFlightChange : public InFlightChange {
- public:
- CrashInFlightChange(Window* window, ChangeType type);
- ~CrashInFlightChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void ChangeFailed() override;
- void Revert() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CrashInFlightChange);
-};
-
-// Use this class for properties that are specific to the client, and not a
-// particular window. For example, only a single window can have focus, so focus
-// is specific to the client.
-//
-// This does not implement InFlightChange::Revert, subclasses must implement
-// that to update the WindowTreeClient.
-class InFlightWindowTreeClientChange : public InFlightChange,
- public WindowObserver {
- public:
- InFlightWindowTreeClientChange(WindowTreeClient* client,
- Window* revert_value,
- ChangeType type);
- ~InFlightWindowTreeClientChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
-
- protected:
- WindowTreeClient* client() { return client_; }
- Window* revert_window() { return revert_window_; }
-
- private:
- void SetRevertWindow(Window* window);
-
- // WindowObserver:
- void OnWindowDestroying(Window* window) override;
-
- WindowTreeClient* client_;
- Window* revert_window_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightWindowTreeClientChange);
-};
-
-class InFlightCaptureChange : public InFlightWindowTreeClientChange {
- public:
- InFlightCaptureChange(WindowTreeClient* client, Window* revert_value);
- ~InFlightCaptureChange() override;
-
- // InFlightChange:
- void Revert() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(InFlightCaptureChange);
-};
-
-class InFlightFocusChange : public InFlightWindowTreeClientChange {
- public:
- InFlightFocusChange(WindowTreeClient* client, Window* revert_value);
- ~InFlightFocusChange() override;
-
- // InFlightChange:
- void Revert() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(InFlightFocusChange);
-};
-
-class InFlightPropertyChange : public InFlightChange {
- public:
- InFlightPropertyChange(
- Window* window,
- const std::string& property_name,
- const base::Optional<std::vector<uint8_t>>& revert_value);
- ~InFlightPropertyChange() override;
-
- // InFlightChange:
- bool Matches(const InFlightChange& change) const override;
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- const std::string property_name_;
- base::Optional<std::vector<uint8_t>> revert_value_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightPropertyChange);
-};
-
-class InFlightPredefinedCursorChange : public InFlightChange {
- public:
- InFlightPredefinedCursorChange(Window* window, mojom::Cursor revert_value);
- ~InFlightPredefinedCursorChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- mojom::Cursor revert_cursor_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightPredefinedCursorChange);
-};
-
-class InFlightVisibleChange : public InFlightChange {
- public:
- InFlightVisibleChange(Window* window, const bool revert_value);
- ~InFlightVisibleChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- bool revert_visible_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightVisibleChange);
-};
-
-class InFlightOpacityChange : public InFlightChange {
- public:
- InFlightOpacityChange(Window* window, float revert_value);
- ~InFlightOpacityChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- float revert_opacity_;
-
- DISALLOW_COPY_AND_ASSIGN(InFlightOpacityChange);
-};
-
-class InFlightSetModalChange : public InFlightChange {
- public:
- explicit InFlightSetModalChange(Window* window);
- ~InFlightSetModalChange() override;
-
- // InFlightChange:
- void SetRevertValueFrom(const InFlightChange& change) override;
- void Revert() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(InFlightSetModalChange);
-};
-
-} // namespace ui
-
-#endif // SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_
« no previous file with comments | « services/ui/public/cpp/BUILD.gn ('k') | services/ui/public/cpp/in_flight_change.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698