| Index: mojo/public/cpp/bindings/filter_chain.h
|
| diff --git a/mojo/public/cpp/bindings/lib/filter_chain.h b/mojo/public/cpp/bindings/filter_chain.h
|
| similarity index 55%
|
| rename from mojo/public/cpp/bindings/lib/filter_chain.h
|
| rename to mojo/public/cpp/bindings/filter_chain.h
|
| index 77b8448f794e7431512f70fd917971dc92fe1ea3..a27c6cad21423c0554bedc4152bc042fe50f9d3d 100644
|
| --- a/mojo/public/cpp/bindings/lib/filter_chain.h
|
| +++ b/mojo/public/cpp/bindings/filter_chain.h
|
| @@ -2,20 +2,19 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_FILTER_CHAIN_H_
|
| -#define MOJO_PUBLIC_CPP_BINDINGS_LIB_FILTER_CHAIN_H_
|
| +#ifndef MOJO_PUBLIC_CPP_BINDINGS_FILTER_CHAIN_H_
|
| +#define MOJO_PUBLIC_CPP_BINDINGS_FILTER_CHAIN_H_
|
|
|
| #include <utility>
|
| #include <vector>
|
|
|
| #include "base/macros.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "mojo/public/cpp/bindings/message.h"
|
| -#include "mojo/public/cpp/bindings/message_filter.h"
|
|
|
| namespace mojo {
|
| -namespace internal {
|
|
|
| -class FilterChain {
|
| +class FilterChain : public MessageReceiver {
|
| public:
|
| // Doesn't take ownership of |sink|. Therefore |sink| has to stay alive while
|
| // this object is alive.
|
| @@ -23,28 +22,22 @@ class FilterChain {
|
|
|
| FilterChain(FilterChain&& other);
|
| FilterChain& operator=(FilterChain&& other);
|
| - ~FilterChain();
|
| + ~FilterChain() override;
|
|
|
| template <typename FilterType, typename... Args>
|
| inline void Append(Args&&... args);
|
|
|
| - // Takes ownership of |filter|.
|
| - void Append(MessageFilter* filter);
|
| + void Append(std::unique_ptr<MessageReceiver> filter);
|
|
|
| // Doesn't take ownership of |sink|. Therefore |sink| has to stay alive while
|
| // this object is alive.
|
| void SetSink(MessageReceiver* sink);
|
|
|
| - // Returns a receiver to accept messages. Messages flow through all filters in
|
| - // the same order as they were appended to the chain. If all filters allow a
|
| - // message to pass, it will be forwarded to |sink_|.
|
| - // The returned value is invalidated when this object goes away.
|
| - MessageReceiver* GetHead();
|
| + // MessageReceiver:
|
| + bool Accept(Message* message) override;
|
|
|
| private:
|
| - // Owned by this object.
|
| - // TODO(dcheng): Use unique_ptr.
|
| - std::vector<MessageFilter*> filters_;
|
| + std::vector<std::unique_ptr<MessageReceiver>> filters_;
|
|
|
| MessageReceiver* sink_;
|
|
|
| @@ -53,14 +46,13 @@ class FilterChain {
|
|
|
| template <typename FilterType, typename... Args>
|
| inline void FilterChain::Append(Args&&... args) {
|
| - Append(new FilterType(std::forward<Args>(args)..., sink_));
|
| + Append(base::MakeUnique<FilterType>(std::forward<Args>(args)...));
|
| }
|
|
|
| template <>
|
| inline void FilterChain::Append<PassThroughFilter>() {
|
| }
|
|
|
| -} // namespace internal
|
| } // namespace mojo
|
|
|
| -#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_FILTER_CHAIN_H_
|
| +#endif // MOJO_PUBLIC_CPP_BINDINGS_FILTER_CHAIN_H_
|
|
|