1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.android_webview;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.base.CalledByNative;
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.base.JNINamespace;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@JNINamespace("android_webview")
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public class AwHttpAuthHandler {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    private long mNativeAwHttpAuthHandler;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final boolean mFirstAttempt;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void proceed(String username, String password) {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (mNativeAwHttpAuthHandler != 0) {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            nativeProceed(mNativeAwHttpAuthHandler, username, password);
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mNativeAwHttpAuthHandler = 0;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void cancel() {
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (mNativeAwHttpAuthHandler != 0) {
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            nativeCancel(mNativeAwHttpAuthHandler);
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mNativeAwHttpAuthHandler = 0;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public boolean isFirstAttempt() {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         return mFirstAttempt;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @CalledByNative
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    public static AwHttpAuthHandler create(long nativeAwAuthHandler, boolean firstAttempt) {
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return new AwHttpAuthHandler(nativeAwAuthHandler, firstAttempt);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    private AwHttpAuthHandler(long nativeAwHttpAuthHandler, boolean firstAttempt) {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mNativeAwHttpAuthHandler = nativeAwHttpAuthHandler;
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mFirstAttempt = firstAttempt;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @CalledByNative
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    void handlerDestroyed() {
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mNativeAwHttpAuthHandler = 0;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    private native void nativeProceed(long nativeAwHttpAuthHandler,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            String username, String password);
51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    private native void nativeCancel(long nativeAwHttpAuthHandler);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
53