зеркало из https://github.com/mozilla/gecko-dev.git
Bug 720933 - Android Sync 0.3 code drop. a=mobile
Bug 718848 - Part 7: More link styling, pin display styling, alignment per UI feedback. Bug 718848 - Part 6: Fixed regression of progressbar layout. Bug 718848 - Part 5: Indentation alignment. Bug 718848 - Part 4: Fixes for links, icon blurriness, PIN display. Bug 718848 - Part 3: Whitespace changes. Bug 718848 - Part 2: Setting theme on start of Sync setup. Bug 718848 - Part 1: Theme and layout changes, per UI meeting. Bug 717075 - make classic setup hint text visible. Added basic SyncTheme. Bug 717691 - Part 1: fall back to supported cipher suites for older Android releases. Bug 717691 - Part 0: Specify HTTP 1.1 in HTTP requests. Bug 718848 - Part 2: fixed string revision: "computer" not "desktop". r=rnewman Bug 719669 - Part 1: throw IncorrectZkpException when g^x^q % p = 1 in J-PAKE. Bug 719669 - Part 0: code reformatting and string tidying. Bug 718149 - go somewhere useful after Firefox Sync set up, on launch.
This commit is contained in:
Родитель
810d4c676e
Коммит
69a6774d4f
|
@ -6,13 +6,18 @@
|
|||
<!-- Main titles. -->
|
||||
<!ENTITY sync.app.name.label '&syncBrand.fullName.label;'>
|
||||
<!ENTITY sync.title.connect.label 'Connect to &syncBrand.shortName.label;'>
|
||||
<!ENTITY sync.title.adddevice.label 'Add a &syncBrand.fullName.label; Account'>
|
||||
<!ENTITY sync.title.pair.label 'Pair a Device'>
|
||||
|
||||
<!-- J-PAKE Key Screen -->
|
||||
<!ENTITY sync.subtitle.connect.label 'To activate your new device, select “Set up &syncBrand.shortName.label;” on the device.'>
|
||||
<!ENTITY sync.subtitle.header.label 'Enter this code on your computer'>
|
||||
<!ENTITY sync.subtitle.connectlocation.label 'Select “&sync.title.pair.label;” in the &syncBrand.shortName.label; section of your desktop Firefox options.'>
|
||||
<!ENTITY sync.subtitle.pair.label 'To activate, select “Pair a device” on your other device.'>
|
||||
<!ENTITY sync.pin.default.label '...\n...\n...\n'>
|
||||
<!ENTITY sync.pin.oneline.label '...'>
|
||||
<!ENTITY sync.link.show.label 'Show me how.'>
|
||||
<!ENTITY sync.link.advancedsetup.label 'Advanced setup...'>
|
||||
<!ENTITY sync.link.nodevice.label 'I don\'t have the device with me…'>
|
||||
|
||||
<!-- J-PAKE Waiting Screen -->
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#000000" />
|
||||
<stroke android:width="1dp" android:color="#FFFFFF" />
|
||||
<padding
|
||||
android:left="1dp"
|
||||
android:top="1dp"
|
||||
android:right="1dp"
|
||||
android:bottom="1dp" />
|
||||
</shape>
|
|
@ -1,23 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
<LinearLayout
|
||||
android:id="@+id/account_top"
|
||||
style="@style/SyncTop">
|
||||
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
style="@style/SyncLayout" >
|
||||
|
||||
android:id="@+id/account_content"
|
||||
style="@style/SyncLayout"
|
||||
android:layout_below="@id/account_top"
|
||||
android:layout_above="@+id/account_bottom">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SyncLayout" >
|
||||
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
|
||||
<View
|
||||
style="@style/SyncViewLine" />
|
||||
|
||||
style="@style/SyncLayout.Vertical"
|
||||
android:padding="20dp" >
|
||||
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:text="@string/sync_subtitle_account" />
|
||||
android:text="@string/sync_subtitle_account"
|
||||
android:layout_marginBottom="10dp" />
|
||||
|
||||
<EditText android:id="@+id/usernameInput"
|
||||
style="@style/SyncEditItem"
|
||||
|
@ -43,26 +51,26 @@
|
|||
style="@style/SyncEditItem"
|
||||
android:visibility="gone"
|
||||
android:hint="@string/sync_input_server" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/accountConnectButton"
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="connectClickHandler"
|
||||
android:clickable="false"
|
||||
android:enabled="false"
|
||||
android:text="@string/sync_button_connect" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</TableLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@id/account_bottom"
|
||||
style="@style/SyncBottom"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButton"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
|
||||
<Button
|
||||
style="@style/SyncButton"
|
||||
android:id="@+id/accountConnectButton"
|
||||
android:onClick="connectClickHandler"
|
||||
android:clickable="false"
|
||||
android:enabled="false"
|
||||
android:text="@string/sync_button_connect" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
|
@ -1,65 +1,87 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/setup_top"
|
||||
style="@style/SyncTop" >
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
android:id="@+id/setup_title"
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
style="@style/SyncLayout" >
|
||||
style="@style/SyncLayout"
|
||||
android:fillViewport="true"
|
||||
android:layout_below="@id/setup_top"
|
||||
android:layout_above="@+id/setup_bottom" >
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SyncLayout" >
|
||||
<RelativeLayout
|
||||
style="@style/SyncLayout.Vertical"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="15dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_title"
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="2dp"
|
||||
android:background="#FFFFFF" />
|
||||
android:id="@+id/setup_header"
|
||||
style="@style/SyncTextItem"
|
||||
android:gravity="left"
|
||||
android:layout_marginTop="15dp"
|
||||
android:text="@string/sync_subtitle_header"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
android:id="@+id/setup_subtitle"
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_below="@id/setup_header"
|
||||
android:gravity="left"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/sync_subtitle_connect" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_subtitle"
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/sync_subtitle_pair" />
|
||||
|
||||
<TextView
|
||||
style="@style/SyncLinkItem"
|
||||
android:onClick="showClickHandler"
|
||||
android:text="@string/sync_link_show" />
|
||||
android:id="@+id/setup_showme"
|
||||
style="@style/SyncLinkItem"
|
||||
android:layout_below="@id/setup_subtitle"
|
||||
android:layout_marginTop="2dp"
|
||||
android:onClick="showClickHandler"
|
||||
android:text="@string/sync_link_show" />
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SyncTextItem"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_pin"
|
||||
style="@style/SyncTextItem"
|
||||
android:text="@string/sync_pin_default"
|
||||
android:textSize="40dp" />
|
||||
style="@style/SyncLayout"
|
||||
android:layout_below="@id/setup_showme"
|
||||
android:paddingTop="30dp"
|
||||
android:paddingLeft="-15dp"
|
||||
android:orientation="vertical" >
|
||||
<TextView
|
||||
android:id="@+id/text_pin1"
|
||||
style="@style/SyncPinText" />
|
||||
<TextView
|
||||
android:id="@+id/text_pin2"
|
||||
style="@style/SyncPinText" />
|
||||
<TextView
|
||||
android:id="@+id/text_pin3"
|
||||
style="@style/SyncPinText" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/link_nodevice"
|
||||
style="@style/SyncLinkItem"
|
||||
android:onClick="manualClickHandler"
|
||||
android:text="@string/sync_link_nodevice" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:layout_marginTop="10dp"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
android:id="@+id/link_nodevice"
|
||||
style="@style/SyncLinkItem"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:gravity="center"
|
||||
android:paddingBottom="5dp"
|
||||
android:onClick="manualClickHandler"
|
||||
android:text="@string/sync_link_advancedsetup" />
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</TableLayout>
|
||||
<LinearLayout
|
||||
android:id="@id/setup_bottom"
|
||||
style="@style/SyncBottom"
|
||||
android:orientation="horizontal" >
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
|
@ -1,41 +1,45 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_fail" />
|
||||
<View
|
||||
style="@style/SyncViewLine" />
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
<LinearLayout
|
||||
android:id="@+id/failure_top"
|
||||
style="@style/SyncTop" >
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_fail" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:text="@string/sync_subtitle_fail" />
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_below="@id/failure_top"
|
||||
android:layout_above="@+id/failure_bottom"
|
||||
android:padding="20dp"
|
||||
android:text="@string/sync_subtitle_fail" />
|
||||
<LinearLayout
|
||||
android:id="@id/failure_bottom"
|
||||
style="@style/SyncBottom"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
<Button
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:onClick="tryAgainClickHandler"
|
||||
android:text="@string/sync_button_tryagain" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="tryAgainClickHandler"
|
||||
android:text="@string/sync_button_tryagain" />
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="manualClickHandler"
|
||||
android:text="@string/sync_button_manual" />
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
</LinearLayout>
|
||||
|
||||
</TableLayout>
|
||||
<Button
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:onClick="manualClickHandler"
|
||||
android:text="@string/sync_button_manual" />
|
||||
<Button
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,23 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
<View
|
||||
style="@style/SyncViewLine" />
|
||||
<ProgressBar
|
||||
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminateOnly="true"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp" />
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:text="@string/sync_jpake_subtitle_waiting" />
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
<LinearLayout
|
||||
android:id="@+id/waiting_top"
|
||||
style="@style/SyncTop" >
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_connect" />
|
||||
</LinearLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/waiting_content1"
|
||||
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/waiting_top"
|
||||
android:indeterminateOnly="true"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginBottom="15dp"/>
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:gravity="center"
|
||||
android:layout_below="@id/waiting_content1"
|
||||
android:text="@string/sync_jpake_subtitle_waiting" />
|
||||
<LinearLayout
|
||||
style="@style/SyncBottom">
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
</TableLayout>
|
||||
style="@style/SyncButton"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,18 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
<LinearLayout
|
||||
android:id="@+id/internet_top"
|
||||
style="@style/SyncTop">
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_fail" />
|
||||
<View
|
||||
style="@style/SyncViewLine"/>
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:text="@string/sync_subtitle_nointernet" />
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_fail" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_below="@id/internet_top"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/sync_subtitle_nointernet" />
|
||||
<LinearLayout
|
||||
style="@style/SyncBottom" >
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_ok" />
|
||||
</TableLayout>
|
||||
style="@style/SyncButton"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_ok" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,28 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
<LinearLayout
|
||||
android:id="@+id/pair_top"
|
||||
style="@style/SyncTop" >
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon" />
|
||||
<TextView
|
||||
android:id="@+id/setup_title"
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_pair" />
|
||||
</LinearLayout>
|
||||
<ScrollView
|
||||
style="@style/SyncLayout" >
|
||||
style="@style/SyncLayout"
|
||||
android:layout_below="@id/pair_top"
|
||||
android:layout_above="@+id/pair_bottom" >
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SyncLayout" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_title"
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_pair" />
|
||||
|
||||
<View
|
||||
style="@style/SyncViewLine" />
|
||||
style="@style/SyncLayout.Vertical"
|
||||
android:gravity="center"
|
||||
android:padding="10dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_subtitle"
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/sync_subtitle_connect" />
|
||||
|
||||
<TextView
|
||||
style="@style/SyncLinkItem"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:onClick="showClickHandler"
|
||||
android:text="@string/sync_link_show" />
|
||||
|
||||
|
@ -32,16 +40,16 @@
|
|||
android:gravity="center"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<EditText
|
||||
android:id="@+id/pair_row1"
|
||||
style="@style/SyncEditPin" />
|
||||
<EditText
|
||||
android:id="@+id/pair_row2"
|
||||
style="@style/SyncEditPin" />
|
||||
<EditText
|
||||
android:id="@+id/pair_row3"
|
||||
style="@style/SyncEditPin"
|
||||
android:imeOptions="actionDone" />
|
||||
<EditText
|
||||
android:id="@+id/pair_row1"
|
||||
style="@style/SyncEditPin" />
|
||||
<EditText
|
||||
android:id="@+id/pair_row2"
|
||||
style="@style/SyncEditPin" />
|
||||
<EditText
|
||||
android:id="@+id/pair_row3"
|
||||
style="@style/SyncEditPin"
|
||||
android:imeOptions="actionDone" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
@ -54,31 +62,28 @@
|
|||
|
||||
<TextView
|
||||
style="@style/SyncTextItem"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_margin="10dp"
|
||||
android:text="@string/sync_pair_tryagain"
|
||||
android:textSize="10dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/pair_button_connect"
|
||||
style="@style/SyncButtonCommon"
|
||||
android:onClick="connectClickHandler"
|
||||
android:clickable="false"
|
||||
android:enabled="false"
|
||||
android:text="@string/sync_button_connect" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</TableLayout>
|
||||
<LinearLayout
|
||||
android:id="@id/pair_bottom"
|
||||
style="@style/SyncBottom"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
style="@style/SyncButton"
|
||||
android:onClick="cancelClickHandler"
|
||||
android:text="@string/sync_button_cancel" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/pair_button_connect"
|
||||
style="@style/SyncButton"
|
||||
android:onClick="connectClickHandler"
|
||||
android:clickable="false"
|
||||
android:enabled="false"
|
||||
android:text="@string/sync_button_connect" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,38 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncTextFrame" >
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/SyncLayout" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/success_top"
|
||||
style="@style/SyncTop" >
|
||||
<ImageView
|
||||
style="@style/SyncTopIcon"/>
|
||||
<TextView
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_success" />
|
||||
|
||||
<View style="@style/SyncViewLine" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/setup_success_subtitle"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:padding="20dp"
|
||||
android:text="@string/sync_subtitle_success" />
|
||||
style="@style/SyncTextTitle"
|
||||
android:text="@string/sync_title_success" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/setup_success_subtitle"
|
||||
style="@style/SyncTextItem"
|
||||
android:gravity="left"
|
||||
android:padding="20dp"
|
||||
android:layout_below="@id/success_top"
|
||||
android:text="@string/sync_subtitle_success" />
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SyncBottom" >
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:onClick="settingsClickHandler"
|
||||
android:text="@string/sync_settings" />
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/link_pair"
|
||||
style="@style/SyncLinkItem"
|
||||
android:layout_gravity="center|bottom"
|
||||
android:onClick="pairClickHandler"
|
||||
android:text="@string/sync_title_pair" />
|
||||
|
||||
</TableLayout>
|
||||
style="@style/SyncButton"
|
||||
android:onClick="settingsClickHandler"
|
||||
android:text="@string/sync_settings" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
|
@ -1,34 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="SyncLayout" parent="@android:style/Widget">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<style name="SyncLayout">
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">fill_parent</item>
|
||||
<item name="android:gravity">center</item>
|
||||
</style>
|
||||
<style name="SyncLayout.Vertical" parent="@style/SyncLayout">
|
||||
<item name="android:orientation">vertical</item>
|
||||
</style>
|
||||
<style name="SyncLayout.Horizontal" parent="@style/SyncLayout">
|
||||
<item name="android:orientation">horizontal</item>
|
||||
</style>
|
||||
|
||||
<!-- TextView Styles -->
|
||||
<style name="SyncTextFrame" parent="@android:style/TextAppearance">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">fill_parent</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:padding">20dp</item>
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:background">#82818A</item>
|
||||
</style>
|
||||
<style name="SyncTextItem" parent="@android:style/TextAppearance.Medium">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:textSize">15dp</item>
|
||||
</style>
|
||||
<style name="SyncLinkItem" parent="SyncTextItem">
|
||||
<item name="android:clickable">true</item>
|
||||
<item name="android:textColor">#99CCFF</item>
|
||||
<item name="android:textColor">#ACC4D5</item>
|
||||
</style>
|
||||
<style name="SyncTextTitle" parent="@style/SyncTextItem">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:paddingBottom">10dp</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:gravity">left</item>
|
||||
<item name="android:textSize">20dp</item>
|
||||
</style>
|
||||
<!-- EditView Styles -->
|
||||
|
@ -44,16 +47,48 @@
|
|||
<item name="android:maxLength">4</item>
|
||||
<item name="android:imeOptions">actionNext</item>
|
||||
</style>
|
||||
<!-- Misc Styles -->
|
||||
<style name="SyncButtonCommon">
|
||||
|
||||
<!-- Theme Styles -->
|
||||
<style name="SyncTheme" parent="@android:style/Theme.NoTitleBar"/>
|
||||
|
||||
<style name="SyncTop">
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:gravity">left</item>
|
||||
<item name="android:orientation">horizontal</item>
|
||||
<item name="android:layout_alignParentTop">true</item>
|
||||
<item name="android:background">@android:drawable/bottom_bar</item>
|
||||
</style>
|
||||
<style name="SyncBottom">
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:layout_alignParentBottom">true</item>
|
||||
<item name="android:background">@android:drawable/bottom_bar</item>
|
||||
</style>
|
||||
<style name="SyncButton" parent="@android:style/Widget.Button">
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_weight">1</item>
|
||||
</style>
|
||||
|
||||
<!-- Text Display Styles -->
|
||||
<style name="SyncPinText" parent="@android:style/Widget.TextView">
|
||||
<item name="android:layout_width">130sp</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:layout_marginBottom">5dp</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:background">@drawable/pin_background</item>
|
||||
<item name="android:textColor">#FFFFFF</item>
|
||||
<item name="android:textSize">35sp</item>
|
||||
<item name="android:text">@string/sync_pin_default</item>
|
||||
</style>
|
||||
<style name="SyncTopIcon">
|
||||
<item name="android:src">@drawable/sync_ic_launcher</item>
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
</style>
|
||||
<style name="SyncViewLine">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">2dp</item>
|
||||
<item name="android:paddingTop">5dp</item>
|
||||
<item name="android:paddingBottom">10dp</item>
|
||||
<item name="android:background">#FFFFFF</item>
|
||||
<item name="android:paddingTop">2dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Chenxia Liu <liuche@mozilla.com>
|
||||
* Chenxia Liu <liuche@mozilla.com>
|
||||
* Richard Newman <rnewman@mozilla.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
|
@ -52,49 +53,49 @@ import org.mozilla.gecko.sync.crypto.KeyBundle;
|
|||
import android.util.Log;
|
||||
|
||||
public class JPakeCrypto {
|
||||
private static final String LOG_TAG = "JpakeCrypto";
|
||||
private static final String LOG_TAG = "JPakeCrypto";
|
||||
|
||||
/*
|
||||
* Primes P and Q, and generator G - from original Mozilla jpake
|
||||
* Primes P and Q, and generator G - from original Mozilla J-PAKE
|
||||
* implementation.
|
||||
*/
|
||||
public static final BigInteger P = new BigInteger(
|
||||
"90066455B5CFC38F9CAA4A48B4281F292C260FEEF01FD61037E56258A7795A1C"
|
||||
+ "7AD46076982CE6BB956936C6AB4DCFE05E6784586940CA544B9B2140E1EB523F"
|
||||
+ "009D20A7E7880E4E5BFA690F1B9004A27811CD9904AF70420EEFD6EA11EF7DA1"
|
||||
+ "29F58835FF56B89FAA637BC9AC2EFAAB903402229F491D8D3485261CD068699B"
|
||||
+ "6BA58A1DDBBEF6DB51E8FE34E8A78E542D7BA351C21EA8D8F1D29F5D5D159394"
|
||||
+ "87E27F4416B0CA632C59EFD1B1EB66511A5A0FBF615B766C5862D0BD8A3FE7A0"
|
||||
+ "E0DA0FB2FE1FCB19E8F9996A8EA0FCCDE538175238FC8B0EE6F29AF7F642773E"
|
||||
+ "BE8CD5402415A01451A840476B2FCEB0E388D30D4B376C37FE401C2A2C2F941D"
|
||||
+ "AD179C540C1C8CE030D460C4D983BE9AB0B20F69144C1AE13F9383EA1C08504F"
|
||||
+ "B0BF321503EFE43488310DD8DC77EC5B8349B8BFE97C2C560EA878DE87C11E3D"
|
||||
+ "597F1FEA742D73EEC7F37BE43949EF1A0D15C3F3E3FC0A8335617055AC91328E"
|
||||
+ "C22B50FC15B941D3D1624CD88BC25F3E941FDDC6200689581BFEC416B4B2CB73",
|
||||
16);
|
||||
public static final BigInteger P = new BigInteger(
|
||||
"90066455B5CFC38F9CAA4A48B4281F292C260FEEF01FD61037E56258A7795A1C" +
|
||||
"7AD46076982CE6BB956936C6AB4DCFE05E6784586940CA544B9B2140E1EB523F" +
|
||||
"009D20A7E7880E4E5BFA690F1B9004A27811CD9904AF70420EEFD6EA11EF7DA1" +
|
||||
"29F58835FF56B89FAA637BC9AC2EFAAB903402229F491D8D3485261CD068699B" +
|
||||
"6BA58A1DDBBEF6DB51E8FE34E8A78E542D7BA351C21EA8D8F1D29F5D5D159394" +
|
||||
"87E27F4416B0CA632C59EFD1B1EB66511A5A0FBF615B766C5862D0BD8A3FE7A0" +
|
||||
"E0DA0FB2FE1FCB19E8F9996A8EA0FCCDE538175238FC8B0EE6F29AF7F642773E" +
|
||||
"BE8CD5402415A01451A840476B2FCEB0E388D30D4B376C37FE401C2A2C2F941D" +
|
||||
"AD179C540C1C8CE030D460C4D983BE9AB0B20F69144C1AE13F9383EA1C08504F" +
|
||||
"B0BF321503EFE43488310DD8DC77EC5B8349B8BFE97C2C560EA878DE87C11E3D" +
|
||||
"597F1FEA742D73EEC7F37BE43949EF1A0D15C3F3E3FC0A8335617055AC91328E" +
|
||||
"C22B50FC15B941D3D1624CD88BC25F3E941FDDC6200689581BFEC416B4B2CB73",
|
||||
16);
|
||||
|
||||
public static final BigInteger Q = new BigInteger(
|
||||
"CFA0478A54717B08CE64805B76E5B14249A77A4838469DF7F7DC987EFCCFB11D",
|
||||
16);
|
||||
public static final BigInteger Q = new BigInteger(
|
||||
"CFA0478A54717B08CE64805B76E5B14249A77A4838469DF7F7DC987EFCCFB11D",
|
||||
16);
|
||||
|
||||
public static final BigInteger G = new BigInteger(
|
||||
"5E5CBA992E0A680D885EB903AEA78E4A45A469103D448EDE3B7ACCC54D521E37"
|
||||
+ "F84A4BDD5B06B0970CC2D2BBB715F7B82846F9A0C393914C792E6A923E2117AB"
|
||||
+ "805276A975AADB5261D91673EA9AAFFEECBFA6183DFCB5D3B7332AA19275AFA1"
|
||||
+ "F8EC0B60FB6F66CC23AE4870791D5982AAD1AA9485FD8F4A60126FEB2CF05DB8"
|
||||
+ "A7F0F09B3397F3937F2E90B9E5B9C9B6EFEF642BC48351C46FB171B9BFA9EF17"
|
||||
+ "A961CE96C7E7A7CC3D3D03DFAD1078BA21DA425198F07D2481622BCE45969D9C"
|
||||
+ "4D6063D72AB7A0F08B2F49A7CC6AF335E08C4720E31476B67299E231F8BD90B3"
|
||||
+ "9AC3AE3BE0C6B6CACEF8289A2E2873D58E51E029CAFBD55E6841489AB66B5B4B"
|
||||
+ "9BA6E2F784660896AFF387D92844CCB8B69475496DE19DA2E58259B090489AC8"
|
||||
+ "E62363CDF82CFD8EF2A427ABCD65750B506F56DDE3B988567A88126B914D7828"
|
||||
+ "E2B63A6D7ED0747EC59E0E0A23CE7D8A74C1D2C2A7AFB6A29799620F00E11C33"
|
||||
+ "787F7DED3B30E1A22D09F1FBDA1ABBBFBF25CAE05A13F812E34563F99410E73B",
|
||||
16);
|
||||
public static final BigInteger G = new BigInteger(
|
||||
"5E5CBA992E0A680D885EB903AEA78E4A45A469103D448EDE3B7ACCC54D521E37" +
|
||||
"F84A4BDD5B06B0970CC2D2BBB715F7B82846F9A0C393914C792E6A923E2117AB" +
|
||||
"805276A975AADB5261D91673EA9AAFFEECBFA6183DFCB5D3B7332AA19275AFA1" +
|
||||
"F8EC0B60FB6F66CC23AE4870791D5982AAD1AA9485FD8F4A60126FEB2CF05DB8" +
|
||||
"A7F0F09B3397F3937F2E90B9E5B9C9B6EFEF642BC48351C46FB171B9BFA9EF17" +
|
||||
"A961CE96C7E7A7CC3D3D03DFAD1078BA21DA425198F07D2481622BCE45969D9C" +
|
||||
"4D6063D72AB7A0F08B2F49A7CC6AF335E08C4720E31476B67299E231F8BD90B3" +
|
||||
"9AC3AE3BE0C6B6CACEF8289A2E2873D58E51E029CAFBD55E6841489AB66B5B4B" +
|
||||
"9BA6E2F784660896AFF387D92844CCB8B69475496DE19DA2E58259B090489AC8" +
|
||||
"E62363CDF82CFD8EF2A427ABCD65750B506F56DDE3B988567A88126B914D7828" +
|
||||
"E2B63A6D7ED0747EC59E0E0A23CE7D8A74C1D2C2A7AFB6A29799620F00E11C33" +
|
||||
"787F7DED3B30E1A22D09F1FBDA1ABBBFBF25CAE05A13F812E34563F99410E73B",
|
||||
16);
|
||||
|
||||
/**
|
||||
*
|
||||
* Round 1 of JPAKE protocol.
|
||||
* Round 1 of J-PAKE protocol.
|
||||
* Generate x1, x2, and ZKP for other party.
|
||||
*
|
||||
* @param mySignerId
|
||||
|
@ -118,7 +119,7 @@ public class JPakeCrypto {
|
|||
}
|
||||
|
||||
/**
|
||||
* Round 2 of JPAKE protocol.
|
||||
* Round 2 of J-PAKE protocol.
|
||||
* Generate A and ZKP for A.
|
||||
* Verify ZKP from other party. Does not check for replay ZKP.
|
||||
*
|
||||
|
@ -135,7 +136,7 @@ public class JPakeCrypto {
|
|||
public static void round2(String secret, JPakeParty jp,
|
||||
JPakeNumGenerator gen) throws Gx4IsOneException, IncorrectZkpException {
|
||||
|
||||
Log.d(LOG_TAG, "round2 started");
|
||||
Log.d(LOG_TAG, "round2 started.");
|
||||
|
||||
if (jp.gx4 == BigInteger.ONE) {
|
||||
throw new Gx4IsOneException();
|
||||
|
@ -159,11 +160,11 @@ public class JPakeCrypto {
|
|||
jp.thisZkpA = createZkp(y1, y2, a, jp.signerId, gen);
|
||||
jp.thisA = a;
|
||||
|
||||
Log.d(LOG_TAG, "round2 finished");
|
||||
Log.d(LOG_TAG, "round2 finished.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Final round of JPAKE protocol.
|
||||
* Final round of J-PAKE protocol.
|
||||
*
|
||||
* @param b
|
||||
* @param zkp
|
||||
|
@ -174,7 +175,7 @@ public class JPakeCrypto {
|
|||
*/
|
||||
public static KeyBundle finalRound(String secret, JPakeParty jp)
|
||||
throws IncorrectZkpException {
|
||||
Log.d(LOG_TAG, "final round started");
|
||||
Log.d(LOG_TAG, "Final round started.");
|
||||
BigInteger gb = jp.gx1.multiply(jp.gx2).mod(P).multiply(jp.gx3)
|
||||
.mod(P);
|
||||
checkZkp(gb, jp.otherA, jp.otherZkpA);
|
||||
|
@ -188,7 +189,7 @@ public class JPakeCrypto {
|
|||
byte[] hmac = new byte[32];
|
||||
generateKeyAndHmac(k, enc, hmac);
|
||||
|
||||
Log.d(LOG_TAG, "final round finished; returning key");
|
||||
Log.d(LOG_TAG, "Final round finished; returning key.");
|
||||
return new KeyBundle(enc, hmac);
|
||||
}
|
||||
|
||||
|
@ -198,8 +199,7 @@ public class JPakeCrypto {
|
|||
try {
|
||||
Mac hmacSha256;
|
||||
hmacSha256 = Mac.getInstance("HmacSHA256");
|
||||
SecretKeySpec secret_key = new SecretKeySpec(key,
|
||||
"HmacSHA256");
|
||||
SecretKeySpec secret_key = new SecretKeySpec(key, "HmacSHA256");
|
||||
hmacSha256.init(secret_key);
|
||||
result = hmacSha256.doFinal(data);
|
||||
} catch (GeneralSecurityException e) {
|
||||
|
@ -243,14 +243,18 @@ public class JPakeCrypto {
|
|||
// Check parameters of zkp, and compare to computed hash. These shouldn't
|
||||
// fail.
|
||||
if (gx.compareTo(BigInteger.ZERO) < 1) {// g^x > 1
|
||||
Log.e(LOG_TAG, "g^x > 1 fails");
|
||||
Log.e(LOG_TAG, "g^x > 1 fails.");
|
||||
throw new IncorrectZkpException();
|
||||
} else if (gx.compareTo(P.subtract(BigInteger.ONE)) > -1) { // g^x < p-1
|
||||
Log.e(LOG_TAG, "g^x < p-1 fails");
|
||||
}
|
||||
if (gx.compareTo(P.subtract(BigInteger.ONE)) > -1) { // g^x < p-1
|
||||
Log.e(LOG_TAG, "g^x < p-1 fails.");
|
||||
throw new IncorrectZkpException();
|
||||
} else if (gx.modPow(Q, P).compareTo(BigInteger.ONE) != 0) {
|
||||
Log.e(LOG_TAG, "g^x^q % p = 1 fails");
|
||||
} else if (zkp.gr.compareTo(g.modPow(zkp.b, P).multiply(gx.modPow(h, P)).mod(P)) != 0) {
|
||||
}
|
||||
if (gx.modPow(Q, P).compareTo(BigInteger.ONE) != 0) {
|
||||
Log.e(LOG_TAG, "g^x^q % p = 1 fails.");
|
||||
throw new IncorrectZkpException();
|
||||
}
|
||||
if (zkp.gr.compareTo(g.modPow(zkp.b, P).multiply(gx.modPow(h, P)).mod(P)) != 0) {
|
||||
// b = r-h*x ==> g^r = g^b*g^x^(h)
|
||||
Log.i(LOG_TAG, "gb*g(xh) = "
|
||||
+ g.modPow(zkp.b, P).multiply(gx.modPow(h, P)).mod(P).toString(16));
|
||||
|
@ -260,11 +264,10 @@ public class JPakeCrypto {
|
|||
Log.d(LOG_TAG, "g^(xh) = " + gx.modPow(h, P).toString(16));
|
||||
Log.d(LOG_TAG, "gx = " + gx.toString(16));
|
||||
Log.d(LOG_TAG, "h = " + h.toString(16));
|
||||
Log.e(LOG_TAG, "zkp calculation incorrect");
|
||||
Log.e(LOG_TAG, "zkp calculation incorrect.");
|
||||
throw new IncorrectZkpException();
|
||||
} else {
|
||||
Log.d(LOG_TAG, "*** ZKP SUCCESS ***");
|
||||
}
|
||||
Log.d(LOG_TAG, "*** ZKP SUCCESS ***");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -50,6 +50,7 @@ import android.util.Log;
|
|||
import ch.boye.httpclientandroidlib.Header;
|
||||
import ch.boye.httpclientandroidlib.HttpEntity;
|
||||
import ch.boye.httpclientandroidlib.HttpResponse;
|
||||
import ch.boye.httpclientandroidlib.HttpVersion;
|
||||
import ch.boye.httpclientandroidlib.auth.Credentials;
|
||||
import ch.boye.httpclientandroidlib.auth.UsernamePasswordCredentials;
|
||||
import ch.boye.httpclientandroidlib.client.ClientProtocolException;
|
||||
|
@ -157,6 +158,7 @@ public class BaseResource implements Resource {
|
|||
HttpConnectionParams.setConnectionTimeout(params, delegate.connectionTimeout());
|
||||
HttpConnectionParams.setSoTimeout(params, delegate.socketTimeout());
|
||||
HttpProtocolParams.setContentCharset(params, charset);
|
||||
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
|
||||
delegate.addHeaders(request, client);
|
||||
}
|
||||
|
||||
|
@ -182,8 +184,7 @@ public class BaseResource implements Resource {
|
|||
SchemeRegistry schemeRegistry = new SchemeRegistry();
|
||||
schemeRegistry.register(new Scheme("https", 443, sf));
|
||||
schemeRegistry.register(new Scheme("http", 80, new PlainSocketFactory()));
|
||||
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(
|
||||
schemeRegistry);
|
||||
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(schemeRegistry);
|
||||
connManager = cm;
|
||||
return cm;
|
||||
}
|
||||
|
|
|
@ -173,7 +173,7 @@ public class SyncStorageRequest implements Resource {
|
|||
}
|
||||
}
|
||||
|
||||
public static String USER_AGENT = "Firefox AndroidSync 0.2";
|
||||
public static String USER_AGENT = "Firefox AndroidSync 0.3";
|
||||
protected SyncResourceDelegate resourceDelegate;
|
||||
public SyncStorageRequestDelegate delegate;
|
||||
protected BaseResource resource;
|
||||
|
|
|
@ -43,19 +43,59 @@ import java.net.Socket;
|
|||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import ch.boye.httpclientandroidlib.conn.ssl.SSLSocketFactory;
|
||||
import ch.boye.httpclientandroidlib.params.HttpParams;
|
||||
|
||||
public class TLSSocketFactory extends SSLSocketFactory {
|
||||
private static final String LOG_TAG = "TLSSocketFactory";
|
||||
private static final String[] DEFAULT_CIPHER_SUITES = new String[] {
|
||||
"SSL_RSA_WITH_RC4_128_SHA", // "RC4_SHA"
|
||||
};
|
||||
private static final String[] DEFAULT_PROTOCOLS = new String[] {
|
||||
"SSLv3",
|
||||
"TLSv1"
|
||||
};
|
||||
|
||||
// Guarded by `this`.
|
||||
private static String[] cipherSuites = DEFAULT_CIPHER_SUITES;
|
||||
|
||||
public TLSSocketFactory(SSLContext sslContext) {
|
||||
super(sslContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to specify the cipher suites to use for a connection. If
|
||||
* setting fails (as it will on Android 2.2, because the wrong names
|
||||
* are in use to specify ciphers), attempt to set the defaults.
|
||||
*
|
||||
* We store the list of cipher suites in `cipherSuites`, which
|
||||
* avoids this fallback handling having to be executed more than once.
|
||||
*
|
||||
* This method is synchronized to ensure correct use of that member.
|
||||
*
|
||||
* See Bug 717691 for more details.
|
||||
*
|
||||
* @param socket
|
||||
* The SSLSocket on which to operate.
|
||||
*/
|
||||
public static synchronized void setEnabledCipherSuites(SSLSocket socket) {
|
||||
try {
|
||||
socket.setEnabledCipherSuites(cipherSuites);
|
||||
} catch (IllegalArgumentException e) {
|
||||
cipherSuites = socket.getSupportedCipherSuites();
|
||||
Log.d(LOG_TAG, "Setting enabled cipher suites failed: " + e.getMessage());
|
||||
Log.d(LOG_TAG, "Using " + cipherSuites.length + " supported suites.");
|
||||
socket.setEnabledCipherSuites(cipherSuites);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(HttpParams params) throws IOException {
|
||||
SSLSocket socket = (SSLSocket) super.createSocket(params);
|
||||
socket.setEnabledProtocols(new String[] { "SSLv3", "TLSv1" });
|
||||
socket.setEnabledCipherSuites(new String[] { "SSL_RSA_WITH_RC4_128_SHA" });
|
||||
socket.setEnabledProtocols(DEFAULT_PROTOCOLS);
|
||||
setEnabledCipherSuites(socket);
|
||||
return socket;
|
||||
}
|
||||
|
||||
|
|
|
@ -82,6 +82,7 @@ public class AccountActivity extends AccountAuthenticatorActivity {
|
|||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(R.style.SyncTheme);
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.sync_account);
|
||||
mContext = getApplicationContext();
|
||||
|
@ -132,7 +133,7 @@ public class AccountActivity extends AccountAuthenticatorActivity {
|
|||
}
|
||||
|
||||
public void cancelClickHandler(View target) {
|
||||
moveTaskToBack(true);
|
||||
finish();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -50,6 +50,7 @@ public class SetupFailureActivity extends Activity {
|
|||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(R.style.SyncTheme);
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.sync_setup_failure);
|
||||
mContext = this.getApplicationContext();
|
||||
|
|
|
@ -44,15 +44,18 @@ import android.app.Activity;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class SetupSuccessActivity extends Activity {
|
||||
private final static String LOG_TAG = "SetupSuccessActivity";
|
||||
private TextView setupSubtitle;
|
||||
private Context mContext;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(R.style.SyncTheme);
|
||||
super.onCreate(savedInstanceState);
|
||||
mContext = getApplicationContext();
|
||||
Bundle extras = this.getIntent().getExtras();
|
||||
|
@ -68,7 +71,7 @@ public class SetupSuccessActivity extends Activity {
|
|||
|
||||
/* Click Handlers */
|
||||
public void settingsClickHandler(View target) {
|
||||
Intent intent = new Intent("android.settings.SYNC_SETTINGS");
|
||||
Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
|
||||
intent.setFlags(Constants.FLAG_ACTIVITY_REORDER_TO_FRONT_NO_ANIMATION);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
|
|
|
@ -53,6 +53,7 @@ import android.net.ConnectivityManager;
|
|||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
|
@ -79,7 +80,9 @@ public class SetupSyncActivity extends AccountAuthenticatorActivity {
|
|||
private TextView setupTitleView;
|
||||
private TextView setupNoDeviceLinkTitleView;
|
||||
private TextView setupSubtitleView;
|
||||
private TextView pinTextView;
|
||||
private TextView pinTextView1;
|
||||
private TextView pinTextView2;
|
||||
private TextView pinTextView3;
|
||||
private JPakeClient jClient;
|
||||
|
||||
// Android context.
|
||||
|
@ -94,6 +97,7 @@ public class SetupSyncActivity extends AccountAuthenticatorActivity {
|
|||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(R.style.SyncTheme);
|
||||
Log.i(LOG_TAG, "Called SetupSyncActivity.onCreate.");
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
@ -134,9 +138,14 @@ public class SetupSyncActivity extends AccountAuthenticatorActivity {
|
|||
return;
|
||||
}
|
||||
}
|
||||
// Display toast for "Only one account supported."
|
||||
// Display toast for "Only one account supported." and redirect to account management.
|
||||
Toast toast = Toast.makeText(mContext, R.string.sync_notification_oneaccount, Toast.LENGTH_LONG);
|
||||
toast.show();
|
||||
|
||||
Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
|
||||
intent.setFlags(Constants.FLAG_ACTIVITY_REORDER_TO_FRONT_NO_ANIMATION);
|
||||
startActivity(intent);
|
||||
|
||||
finish();
|
||||
}
|
||||
|
||||
|
@ -202,20 +211,23 @@ public class SetupSyncActivity extends AccountAuthenticatorActivity {
|
|||
}
|
||||
// Format PIN for display.
|
||||
int charPerLine = pin.length() / 3;
|
||||
String prettyPin = pin.substring(0, charPerLine) + "\n";
|
||||
prettyPin += pin.substring(charPerLine, 2 * charPerLine) + "\n";
|
||||
prettyPin += pin.substring(2 * charPerLine, pin.length());
|
||||
final String pin1 = pin.substring(0, charPerLine);
|
||||
final String pin2 = pin.substring(charPerLine, 2 * charPerLine);
|
||||
final String pin3 = pin.substring(2 * charPerLine, pin.length());
|
||||
|
||||
final String toDisplay = prettyPin;
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
TextView view = pinTextView;
|
||||
if (view == null) {
|
||||
TextView view1 = pinTextView1;
|
||||
TextView view2 = pinTextView2;
|
||||
TextView view3 = pinTextView3;
|
||||
if (view1 == null || view2 == null || view3 == null) {
|
||||
Log.w(LOG_TAG, "Couldn't find view to display PIN.");
|
||||
return;
|
||||
}
|
||||
view.setText(toDisplay);
|
||||
view1.setText(pin1);
|
||||
view2.setText(pin2);
|
||||
view3.setText(pin3);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -475,7 +487,9 @@ public class SetupSyncActivity extends AccountAuthenticatorActivity {
|
|||
setupTitleView = ((TextView) findViewById(R.id.setup_title));
|
||||
setupSubtitleView = (TextView) findViewById(R.id.setup_subtitle);
|
||||
setupNoDeviceLinkTitleView = (TextView) findViewById(R.id.link_nodevice);
|
||||
pinTextView = ((TextView) findViewById(R.id.text_pin));
|
||||
pinTextView1 = ((TextView) findViewById(R.id.text_pin1));
|
||||
pinTextView2 = ((TextView) findViewById(R.id.text_pin2));
|
||||
pinTextView3 = ((TextView) findViewById(R.id.text_pin3));
|
||||
|
||||
// UI checks.
|
||||
if (setupTitleView == null) {
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
mobile/android/base/resources/drawable/pin_background.xml
|
||||
mobile/android/base/resources/drawable/sync_icon.png
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
<string name="sync_app_name">&sync.app.name.label;</string>
|
||||
<string name="sync_title_connect">&sync.title.connect.label;</string>
|
||||
<string name="sync_title_connect">&sync.title.adddevice.label;</string>
|
||||
<string name="sync_title_pair">&sync.title.pair.label;</string>
|
||||
|
||||
<!-- J-PAKE PIN Screen -->
|
||||
<string name="sync_subtitle_connect">&sync.subtitle.connect.label;</string>
|
||||
<string name="sync_subtitle_header">&sync.subtitle.header.label;</string>
|
||||
<string name="sync_subtitle_connect">&sync.subtitle.connectlocation.label;</string>
|
||||
<string name="sync_subtitle_pair">&sync.subtitle.pair.label;</string>
|
||||
<string name="sync_pin_default">&sync.pin.default.label;</string>
|
||||
<string name="sync_link_show">&sync.link.show.label;</string>
|
||||
<string name="sync_link_nodevice">&sync.link.nodevice.label;</string>
|
||||
<string name="sync_pin_default">&sync.pin.oneline.label;</string>
|
||||
<string name="sync_link_show"><u>&sync.link.show.label;</u></string>
|
||||
<string name="sync_link_advancedsetup"><u>&sync.link.advancedsetup.label;</u></string>
|
||||
|
||||
<!-- J-PAKE Waiting Screen -->
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче