| Index: mojo/services/view_manager/test_change_tracker.h
|
| diff --git a/mojo/services/view_manager/test_change_tracker.h b/mojo/services/view_manager/test_change_tracker.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..822efad938e5ac4eb42becea45d5e842270aad9a
|
| --- /dev/null
|
| +++ b/mojo/services/view_manager/test_change_tracker.h
|
| @@ -0,0 +1,157 @@
|
| +// Copyright 2014 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_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
|
| +#define SERVICES_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "mojo/public/cpp/bindings/array.h"
|
| +#include "third_party/mojo_services/src/geometry/public/interfaces/geometry.mojom.h"
|
| +#include "third_party/mojo_services/src/view_manager/public/cpp/types.h"
|
| +#include "third_party/mojo_services/src/view_manager/public/interfaces/view_manager.mojom.h"
|
| +
|
| +namespace view_manager {
|
| +
|
| +enum ChangeType {
|
| + CHANGE_TYPE_EMBED,
|
| + CHANGE_TYPE_EMBEDDED_APP_DISCONNECTED,
|
| + // TODO(sky): NODE->VIEW.
|
| + CHANGE_TYPE_NODE_BOUNDS_CHANGED,
|
| + CHANGE_TYPE_NODE_VIEWPORT_METRICS_CHANGED,
|
| + CHANGE_TYPE_NODE_HIERARCHY_CHANGED,
|
| + CHANGE_TYPE_NODE_REORDERED,
|
| + CHANGE_TYPE_NODE_VISIBILITY_CHANGED,
|
| + CHANGE_TYPE_NODE_DRAWN_STATE_CHANGED,
|
| + CHANGE_TYPE_NODE_DELETED,
|
| + CHANGE_TYPE_INPUT_EVENT,
|
| + CHANGE_TYPE_PROPERTY_CHANGED,
|
| + CHANGE_TYPE_DELEGATE_EMBED,
|
| +};
|
| +
|
| +// TODO(sky): consider nuking and converting directly to ViewData.
|
| +struct TestView {
|
| + TestView();
|
| + ~TestView();
|
| +
|
| + // Returns a string description of this.
|
| + std::string ToString() const;
|
| +
|
| + // Returns a string description that includes visible and drawn.
|
| + std::string ToString2() const;
|
| +
|
| + mojo::Id parent_id;
|
| + mojo::Id view_id;
|
| + bool visible;
|
| + bool drawn;
|
| + std::map<std::string, std::vector<uint8_t>> properties;
|
| +};
|
| +
|
| +// Tracks a call to ViewManagerClient. See the individual functions for the
|
| +// fields that are used.
|
| +struct Change {
|
| + Change();
|
| + ~Change();
|
| +
|
| + ChangeType type;
|
| + mojo::ConnectionSpecificId connection_id;
|
| + std::vector<TestView> views;
|
| + mojo::Id view_id;
|
| + mojo::Id view_id2;
|
| + mojo::Id view_id3;
|
| + mojo::Rect bounds;
|
| + mojo::Rect bounds2;
|
| + int32_t event_action;
|
| + mojo::String creator_url;
|
| + mojo::String embed_url;
|
| + mojo::OrderDirection direction;
|
| + bool bool_value;
|
| + std::string property_key;
|
| + std::string property_value;
|
| +};
|
| +
|
| +// Converts Changes to string descriptions.
|
| +std::vector<std::string> ChangesToDescription1(
|
| + const std::vector<Change>& changes);
|
| +
|
| +// Convenience for returning the description of the first item in |changes|.
|
| +// Returns an empty string if |changes| has something other than one entry.
|
| +std::string SingleChangeToDescription(const std::vector<Change>& changes);
|
| +
|
| +// Convenience for returning the description of the first item in |views|.
|
| +// Returns an empty string if |views| has something other than one entry.
|
| +std::string SingleViewDescription(const std::vector<TestView>& views);
|
| +
|
| +// Returns a string description of |changes[0].views|. Returns an empty string
|
| +// if change.size() != 1.
|
| +std::string ChangeViewDescription(const std::vector<Change>& changes);
|
| +
|
| +// Converts ViewDatas to TestViews.
|
| +void ViewDatasToTestViews(const mojo::Array<mojo::ViewDataPtr>& data,
|
| + std::vector<TestView>* test_views);
|
| +
|
| +// TestChangeTracker is used to record ViewManagerClient functions. It notifies
|
| +// a delegate any time a change is added.
|
| +class TestChangeTracker {
|
| + public:
|
| + // Used to notify the delegate when a change is added. A change corresponds to
|
| + // a single ViewManagerClient function.
|
| + class Delegate {
|
| + public:
|
| + virtual void OnChangeAdded() = 0;
|
| +
|
| + protected:
|
| + virtual ~Delegate() {}
|
| + };
|
| +
|
| + TestChangeTracker();
|
| + ~TestChangeTracker();
|
| +
|
| + void set_delegate(Delegate* delegate) {
|
| + delegate_ = delegate;
|
| + }
|
| +
|
| + std::vector<Change>* changes() { return &changes_; }
|
| +
|
| + // Each of these functions generate a Change. There is one per
|
| + // ViewManagerClient function.
|
| + void OnEmbed(mojo::ConnectionSpecificId connection_id,
|
| + const mojo::String& creator_url,
|
| + mojo::ViewDataPtr root);
|
| + void OnEmbeddedAppDisconnected(mojo::Id view_id);
|
| + void OnViewBoundsChanged(mojo::Id view_id,
|
| + mojo::RectPtr old_bounds,
|
| + mojo::RectPtr new_bounds);
|
| + void OnViewViewportMetricsChanged(mojo::ViewportMetricsPtr old_bounds,
|
| + mojo::ViewportMetricsPtr new_bounds);
|
| + void OnViewHierarchyChanged(mojo::Id view_id,
|
| + mojo::Id new_parent_id,
|
| + mojo::Id old_parent_id,
|
| + mojo::Array<mojo::ViewDataPtr> views);
|
| + void OnViewReordered(mojo::Id view_id,
|
| + mojo::Id relative_view_id,
|
| + mojo::OrderDirection direction);
|
| + void OnViewDeleted(mojo::Id view_id);
|
| + void OnViewVisibilityChanged(mojo::Id view_id, bool visible);
|
| + void OnViewDrawnStateChanged(mojo::Id view_id, bool drawn);
|
| + void OnViewInputEvent(mojo::Id view_id, mojo::EventPtr event);
|
| + void OnViewSharedPropertyChanged(mojo::Id view_id,
|
| + mojo::String name,
|
| + mojo::Array<uint8_t> data);
|
| + void DelegateEmbed(const mojo::String& url);
|
| +
|
| + private:
|
| + void AddChange(const Change& change);
|
| +
|
| + Delegate* delegate_;
|
| + std::vector<Change> changes_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestChangeTracker);
|
| +};
|
| +
|
| +} // namespace view_manager
|
| +
|
| +#endif // SERVICES_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
|
|
|