File: password_generation_popup_view_android.cc

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (124 lines) | stat: -rw-r--r-- 3,974 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ui/android/autofill/password_generation_popup_view_android.h"

#include <jni.h>

#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
#include "base/logging.h"
#include "chrome/browser/ui/android/window_android_helper.h"
#include "chrome/browser/ui/autofill/password_generation_popup_controller.h"
#include "content/public/browser/android/content_view_core.h"
#include "jni/PasswordGenerationPopupBridge_jni.h"
#include "ui/base/android/view_android.h"
#include "ui/base/android/window_android.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/range/range.h"

namespace autofill {

PasswordGenerationPopupViewAndroid::PasswordGenerationPopupViewAndroid(
    PasswordGenerationPopupController* controller)
    : controller_(controller) {}

void PasswordGenerationPopupViewAndroid::SavedPasswordsLinkClicked(
    JNIEnv* env, jobject obj) {
  if (controller_)
    controller_->OnSavedPasswordsLinkClicked();
}

void PasswordGenerationPopupViewAndroid::Dismissed(JNIEnv* env, jobject obj) {
  if (controller_)
    controller_->ViewDestroyed();

  delete this;
}

void PasswordGenerationPopupViewAndroid::PasswordSelected(
    JNIEnv* env, jobject object) {
  if (controller_)
    controller_->PasswordAccepted();
}

// static
bool PasswordGenerationPopupViewAndroid::Register(JNIEnv* env) {
  return RegisterNativesImpl(env);
}

PasswordGenerationPopupViewAndroid::~PasswordGenerationPopupViewAndroid() {}

void PasswordGenerationPopupViewAndroid::Show() {
  JNIEnv* env = base::android::AttachCurrentThread();
  ui::ViewAndroid* view_android = controller_->container_view();

  DCHECK(view_android);

  java_object_.Reset(Java_PasswordGenerationPopupBridge_create(
      env,
      reinterpret_cast<intptr_t>(this),
      view_android->GetWindowAndroid()->GetJavaObject().obj(),
      view_android->GetJavaObject().obj()));

  UpdateBoundsAndRedrawPopup();
}

void PasswordGenerationPopupViewAndroid::Hide() {
  controller_ = NULL;
  JNIEnv* env = base::android::AttachCurrentThread();
  Java_PasswordGenerationPopupBridge_hide(env, java_object_.obj());
}

gfx::Size PasswordGenerationPopupViewAndroid::GetPreferredSizeOfPasswordView() {
  static const int kUnusedSize = 0;
  return gfx::Size(kUnusedSize, kUnusedSize);
}

void PasswordGenerationPopupViewAndroid::UpdateBoundsAndRedrawPopup() {
  JNIEnv* env = base::android::AttachCurrentThread();
  Java_PasswordGenerationPopupBridge_setAnchorRect(
      env,
      java_object_.obj(),
      controller_->element_bounds().x(),
      controller_->element_bounds().y(),
      controller_->element_bounds().width(),
      controller_->element_bounds().height());

  ScopedJavaLocalRef<jstring> password =
      base::android::ConvertUTF16ToJavaString(env, controller_->password());
  ScopedJavaLocalRef<jstring> suggestion =
      base::android::ConvertUTF16ToJavaString(
          env, controller_->SuggestedText());
  ScopedJavaLocalRef<jstring> help =
      base::android::ConvertUTF16ToJavaString(env, controller_->HelpText());

  Java_PasswordGenerationPopupBridge_show(
      env,
      java_object_.obj(),
      controller_->IsRTL(),
      controller_->display_password(),
      password.obj(),
      suggestion.obj(),
      help.obj(),
      controller_->HelpTextLinkRange().start(),
      controller_->HelpTextLinkRange().end());
}

void PasswordGenerationPopupViewAndroid::PasswordSelectionUpdated() {}

bool PasswordGenerationPopupViewAndroid::IsPointInPasswordBounds(
        const gfx::Point& point) {
  NOTREACHED();
  return false;
}

// static
PasswordGenerationPopupView* PasswordGenerationPopupView::Create(
    PasswordGenerationPopupController* controller) {
  return new PasswordGenerationPopupViewAndroid(controller);
}

}  // namespace autofill