| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2012 Google, Inc. All Rights Reserved. | 2  * Copyright (C) 2012 Google, Inc. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions | 5  * modification, are permitted provided that the following conditions | 
| 6  * are met: | 6  * are met: | 
| 7  * 1. Redistributions of source code must retain the above copyright | 7  * 1. Redistributions of source code must retain the above copyright | 
| 8  *    notice, this list of conditions and the following disclaimer. | 8  *    notice, this list of conditions and the following disclaimer. | 
| 9  * 2. Redistributions in binary form must reproduce the above copyright | 9  * 2. Redistributions in binary form must reproduce the above copyright | 
| 10  *    notice, this list of conditions and the following disclaimer in the | 10  *    notice, this list of conditions and the following disclaimer in the | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 33 namespace WebCore { | 33 namespace WebCore { | 
| 34 | 34 | 
| 35 template<class T, class S> | 35 template<class T, class S> | 
| 36 class RefCountedSupplement : public RefCounted<S> { | 36 class RefCountedSupplement : public RefCounted<S> { | 
| 37 public: | 37 public: | 
| 38     typedef RefCountedSupplement<T, S> ThisType; | 38     typedef RefCountedSupplement<T, S> ThisType; | 
| 39 | 39 | 
| 40     virtual ~RefCountedSupplement() { } | 40     virtual ~RefCountedSupplement() { } | 
| 41     virtual void hostDestroyed() { } | 41     virtual void hostDestroyed() { } | 
| 42 | 42 | 
| 43     class Wrapper : public Supplement<T> { | 43     class Wrapper FINAL : public Supplement<T> { | 
| 44     public: | 44     public: | 
| 45         explicit Wrapper(PassRefPtr<ThisType> wrapped) : m_wrapped(wrapped) { } | 45         explicit Wrapper(PassRefPtr<ThisType> wrapped) : m_wrapped(wrapped) { } | 
| 46         virtual ~Wrapper() { m_wrapped->hostDestroyed();  } | 46         virtual ~Wrapper() { m_wrapped->hostDestroyed();  } | 
| 47 #if !ASSERT_DISABLED || defined(ADDRESS_SANITIZER) | 47 #if !ASSERT_DISABLED || defined(ADDRESS_SANITIZER) | 
| 48         virtual bool isRefCountedWrapper() const OVERRIDE { return true; } | 48         virtual bool isRefCountedWrapper() const OVERRIDE { return true; } | 
| 49 #endif | 49 #endif | 
| 50         ThisType* wrapped() const { return m_wrapped.get(); } | 50         ThisType* wrapped() const { return m_wrapped.get(); } | 
| 51     private: | 51     private: | 
| 52 | 52 | 
| 53         RefPtr<ThisType> m_wrapped; | 53         RefPtr<ThisType> m_wrapped; | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 64         if (!found) | 64         if (!found) | 
| 65             return 0; | 65             return 0; | 
| 66         ASSERT_WITH_SECURITY_IMPLICATION(found->isRefCountedWrapper()); | 66         ASSERT_WITH_SECURITY_IMPLICATION(found->isRefCountedWrapper()); | 
| 67         return static_cast<Wrapper*>(found)->wrapped(); | 67         return static_cast<Wrapper*>(found)->wrapped(); | 
| 68     } | 68     } | 
| 69 }; | 69 }; | 
| 70 | 70 | 
| 71 } // namespace WebCore | 71 } // namespace WebCore | 
| 72 | 72 | 
| 73 #endif // RefCountedSupplement_h | 73 #endif // RefCountedSupplement_h | 
| OLD | NEW | 
|---|