| Index: mojo/public/bindings/lib/shared_data.h | 
| diff --git a/mojo/public/bindings/lib/shared_data.h b/mojo/public/bindings/lib/shared_data.h | 
| index 791c54e9c574d23635314a2b5f0f693bfd7721dd..c40b8f91330520692251a003b29022a2a66a12c8 100644 | 
| --- a/mojo/public/bindings/lib/shared_data.h | 
| +++ b/mojo/public/bindings/lib/shared_data.h | 
| @@ -16,6 +16,9 @@ class SharedData { | 
| holder_->Release(); | 
| } | 
|  | 
| +  SharedData() : holder_(new Holder()) { | 
| +  } | 
| + | 
| explicit SharedData(const T& value) : holder_(new Holder(value)) { | 
| } | 
|  | 
| @@ -31,16 +34,27 @@ class SharedData { | 
| holder_->Retain(); | 
| } | 
|  | 
| +  void reset() { | 
| +    holder_->Release(); | 
| +    holder_ = new Holder(); | 
| +  } | 
| + | 
| +  void reset(const T& value) { | 
| +    holder_->Release(); | 
| +    holder_ = new Holder(value); | 
| +  } | 
| + | 
| void set_value(const T& value) { | 
| holder_->value = value; | 
| } | 
| +  T* mutable_value() { | 
| +    return &holder_->value; | 
| +  } | 
| const T& value() const { | 
| return holder_->value; | 
| } | 
|  | 
| private: | 
| -  SharedData();  // NOT IMPLEMENTED | 
| - | 
| class Holder { | 
| public: | 
| Holder() : value(), ref_count_(1) { | 
|  |