OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/android/view_android.h" | 5 #include "ui/android/view_android.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "cc/layers/layer.h" | 10 #include "cc/layers/layer.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 if (this != &other) { | 41 if (this != &other) { |
42 view_ = other.view_; | 42 view_ = other.view_; |
43 other.view_.reset(); | 43 other.view_.reset(); |
44 delegate_ = other.delegate_; | 44 delegate_ = other.delegate_; |
45 other.delegate_.reset(); | 45 other.delegate_.reset(); |
46 } | 46 } |
47 return *this; | 47 return *this; |
48 } | 48 } |
49 | 49 |
50 ViewAndroid::ScopedAnchorView::~ScopedAnchorView() { | 50 ViewAndroid::ScopedAnchorView::~ScopedAnchorView() { |
| 51 Reset(); |
| 52 } |
| 53 |
| 54 void ViewAndroid::ScopedAnchorView::Reset() { |
51 JNIEnv* env = base::android::AttachCurrentThread(); | 55 JNIEnv* env = base::android::AttachCurrentThread(); |
52 const ScopedJavaLocalRef<jobject> view = view_.get(env); | 56 const ScopedJavaLocalRef<jobject> view = view_.get(env); |
53 const ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); | 57 const ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); |
54 if (!view.is_null() && !delegate.is_null()) { | 58 if (!view.is_null() && !delegate.is_null()) { |
55 Java_ViewAndroidDelegate_removeView(env, delegate, view); | 59 Java_ViewAndroidDelegate_removeView(env, delegate, view); |
56 } | 60 } |
57 view_.reset(); | 61 view_.reset(); |
58 } | |
59 | |
60 void ViewAndroid::ScopedAnchorView::Reset() { | |
61 view_.reset(); | |
62 delegate_.reset(); | 62 delegate_.reset(); |
63 } | 63 } |
64 | 64 |
65 const base::android::ScopedJavaLocalRef<jobject> | 65 const base::android::ScopedJavaLocalRef<jobject> |
66 ViewAndroid::ScopedAnchorView::view() const { | 66 ViewAndroid::ScopedAnchorView::view() const { |
67 JNIEnv* env = base::android::AttachCurrentThread(); | 67 JNIEnv* env = base::android::AttachCurrentThread(); |
68 return view_.get(env); | 68 return view_.get(env); |
69 } | 69 } |
70 | 70 |
71 ViewAndroid::ViewAndroid(const JavaRef<jobject>& delegate) | 71 ViewAndroid::ViewAndroid(const JavaRef<jobject>& delegate) |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 void ViewAndroid::StartDragAndDrop(const JavaRef<jstring>& jtext, | 170 void ViewAndroid::StartDragAndDrop(const JavaRef<jstring>& jtext, |
171 const JavaRef<jobject>& jimage) { | 171 const JavaRef<jobject>& jimage) { |
172 ScopedJavaLocalRef<jobject> delegate(GetViewAndroidDelegate()); | 172 ScopedJavaLocalRef<jobject> delegate(GetViewAndroidDelegate()); |
173 if (delegate.is_null()) | 173 if (delegate.is_null()) |
174 return; | 174 return; |
175 JNIEnv* env = base::android::AttachCurrentThread(); | 175 JNIEnv* env = base::android::AttachCurrentThread(); |
176 Java_ViewAndroidDelegate_startDragAndDrop(env, delegate, jtext, jimage); | 176 Java_ViewAndroidDelegate_startDragAndDrop(env, delegate, jtext, jimage); |
177 } | 177 } |
178 | 178 |
179 } // namespace ui | 179 } // namespace ui |
OLD | NEW |