| Index: cc/layer_animation_controller.cc | 
| diff --git a/cc/layer_animation_controller.cc b/cc/layer_animation_controller.cc | 
| index d5ed278bc57932638f4de36a9a67dc26f2399e3f..76bef283e3c2c830fc02f55839446ee5de66cfe4 100644 | 
| --- a/cc/layer_animation_controller.cc | 
| +++ b/cc/layer_animation_controller.cc | 
| @@ -231,6 +231,19 @@ void LayerAnimationController::removeObserver(LayerAnimationValueObserver* obser | 
| m_observers.RemoveObserver(observer); | 
| } | 
|  | 
| +bool LayerAnimationController::hasNonOrphanedObserver() | 
| +{ | 
| +    if (m_observers.might_have_observers()) { | 
| +        ObserverListBase<LayerAnimationValueObserver>::Iterator it(m_observers); | 
| +        LayerAnimationValueObserver* obs; | 
| +        while ((obs = it.GetNext()) != NULL) { | 
| +            if (!obs->IsOrphaned()) | 
| +                return true; | 
| +        } | 
| +    } | 
| +    return false; | 
| +} | 
| + | 
| void LayerAnimationController::pushNewAnimationsToImplThread(LayerAnimationController* controllerImpl) const | 
| { | 
| // Any new animations owned by the main thread's controller are cloned and adde to the impl thread's controller. | 
|  |