Matthew Finkel pushed to branch tor-browser-91.2.0-10.5-2 at The Tor Project / Applications / fenix
Commits:
-
bd49ef24
by Matthew Finkel at 2021-10-20T18:46:13+00:00
-
5228c8ee
by Matthew Finkel at 2021-10-21T04:09:02+00:00
20 changed files:
- LICENSE
- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
- app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt
- app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt
- app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlInteractor.kt
- app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt
- − app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TorInfoBannerViewHolder.kt
- app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
- app/src/main/java/org/mozilla/fenix/theme/ThemeManager.kt
- + app/src/main/res/drawable/ic_yec_activist_android.png
- − app/src/main/res/drawable/info_banner_padded_background.xml
- + app/src/main/res/drawable/tor_yec_donate_rounded_corners.xml
- − app/src/main/res/drawable/vpn_survey_icon.png
- + app/src/main/res/font/corben_bold.ttf
- + app/src/main/res/font/corben_regular.ttf
- app/src/main/res/layout/fragment_home.xml
- − app/src/main/res/layout/tor_info_banner.xml
- app/src/main/res/values/colors.xml
- app/src/main/res/values/styles.xml
- app/src/main/res/values/torbrowser_strings.xml
Changes:
... | ... | @@ -371,3 +371,102 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice |
371 | 371 |
|
372 | 372 |
This Source Code Form is "Incompatible With Secondary Licenses", as
|
373 | 373 |
defined by the Mozilla Public License, v. 2.0.
|
374 |
+ |
|
375 |
+===============================================================================
|
|
376 |
+ |
|
377 |
+"Corben" font.
|
|
378 |
+ |
|
379 |
+Copyright (c) 2010, 2011 by vernon adams (vern@newtypography.co.uk),
|
|
380 |
+with Reserved Font Name Corben.
|
|
381 |
+ |
|
382 |
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
383 |
+This license is copied below, and is also available with a FAQ at:
|
|
384 |
+http://scripts.sil.org/OFL
|
|
385 |
+ |
|
386 |
+ |
|
387 |
+-----------------------------------------------------------
|
|
388 |
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
389 |
+-----------------------------------------------------------
|
|
390 |
+ |
|
391 |
+PREAMBLE
|
|
392 |
+The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
393 |
+development of collaborative font projects, to support the font creation
|
|
394 |
+efforts of academic and linguistic communities, and to provide a free and
|
|
395 |
+open framework in which fonts may be shared and improved in partnership
|
|
396 |
+with others.
|
|
397 |
+ |
|
398 |
+The OFL allows the licensed fonts to be used, studied, modified and
|
|
399 |
+redistributed freely as long as they are not sold by themselves. The
|
|
400 |
+fonts, including any derivative works, can be bundled, embedded,
|
|
401 |
+redistributed and/or sold with any software provided that any reserved
|
|
402 |
+names are not used by derivative works. The fonts and derivatives,
|
|
403 |
+however, cannot be released under any other type of license. The
|
|
404 |
+requirement for fonts to remain under this license does not apply
|
|
405 |
+to any document created using the fonts or their derivatives.
|
|
406 |
+ |
|
407 |
+DEFINITIONS
|
|
408 |
+"Font Software" refers to the set of files released by the Copyright
|
|
409 |
+Holder(s) under this license and clearly marked as such. This may
|
|
410 |
+include source files, build scripts and documentation.
|
|
411 |
+ |
|
412 |
+"Reserved Font Name" refers to any names specified as such after the
|
|
413 |
+copyright statement(s).
|
|
414 |
+ |
|
415 |
+"Original Version" refers to the collection of Font Software components as
|
|
416 |
+distributed by the Copyright Holder(s).
|
|
417 |
+ |
|
418 |
+"Modified Version" refers to any derivative made by adding to, deleting,
|
|
419 |
+or substituting -- in part or in whole -- any of the components of the
|
|
420 |
+Original Version, by changing formats or by porting the Font Software to a
|
|
421 |
+new environment.
|
|
422 |
+ |
|
423 |
+"Author" refers to any designer, engineer, programmer, technical
|
|
424 |
+writer or other person who contributed to the Font Software.
|
|
425 |
+ |
|
426 |
+PERMISSION & CONDITIONS
|
|
427 |
+Permission is hereby granted, free of charge, to any person obtaining
|
|
428 |
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
429 |
+redistribute, and sell modified and unmodified copies of the Font
|
|
430 |
+Software, subject to the following conditions:
|
|
431 |
+ |
|
432 |
+1) Neither the Font Software nor any of its individual components,
|
|
433 |
+in Original or Modified Versions, may be sold by itself.
|
|
434 |
+ |
|
435 |
+2) Original or Modified Versions of the Font Software may be bundled,
|
|
436 |
+redistributed and/or sold with any software, provided that each copy
|
|
437 |
+contains the above copyright notice and this license. These can be
|
|
438 |
+included either as stand-alone text files, human-readable headers or
|
|
439 |
+in the appropriate machine-readable metadata fields within text or
|
|
440 |
+binary files as long as those fields can be easily viewed by the user.
|
|
441 |
+ |
|
442 |
+3) No Modified Version of the Font Software may use the Reserved Font
|
|
443 |
+Name(s) unless explicit written permission is granted by the corresponding
|
|
444 |
+Copyright Holder. This restriction only applies to the primary font name as
|
|
445 |
+presented to the users.
|
|
446 |
+ |
|
447 |
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
448 |
+Software shall not be used to promote, endorse or advertise any
|
|
449 |
+Modified Version, except to acknowledge the contribution(s) of the
|
|
450 |
+Copyright Holder(s) and the Author(s) or with their explicit written
|
|
451 |
+permission.
|
|
452 |
+ |
|
453 |
+5) The Font Software, modified or unmodified, in part or in whole,
|
|
454 |
+must be distributed entirely under this license, and must not be
|
|
455 |
+distributed under any other license. The requirement for fonts to
|
|
456 |
+remain under this license does not apply to any document created
|
|
457 |
+using the Font Software.
|
|
458 |
+ |
|
459 |
+TERMINATION
|
|
460 |
+This license becomes null and void if any of the above conditions are
|
|
461 |
+not met.
|
|
462 |
+ |
|
463 |
+DISCLAIMER
|
|
464 |
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
465 |
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
466 |
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
467 |
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
468 |
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
469 |
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
470 |
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
471 |
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
472 |
+OTHER DEALINGS IN THE FONT SOFTWARE.
|
... | ... | @@ -50,6 +50,7 @@ import com.google.android.material.snackbar.Snackbar |
50 | 50 |
import kotlinx.android.synthetic.main.fragment_home.*
|
51 | 51 |
import kotlinx.android.synthetic.main.fragment_home.view.bottomBarShadow
|
52 | 52 |
import kotlinx.android.synthetic.main.fragment_home.view.bottom_bar
|
53 |
+import kotlinx.android.synthetic.main.fragment_home.view.donate_now_button
|
|
53 | 54 |
import kotlinx.android.synthetic.main.fragment_home.view.exploreprivately
|
54 | 55 |
import kotlinx.android.synthetic.main.fragment_home.view.homeAppBar
|
55 | 56 |
import kotlinx.android.synthetic.main.fragment_home.view.menuButton
|
... | ... | @@ -59,6 +60,7 @@ import kotlinx.android.synthetic.main.fragment_home.view.tab_button |
59 | 60 |
import kotlinx.android.synthetic.main.fragment_home.view.toolbar
|
60 | 61 |
import kotlinx.android.synthetic.main.fragment_home.view.toolbarLayout
|
61 | 62 |
import kotlinx.android.synthetic.main.fragment_home.view.toolbar_wrapper
|
63 |
+import kotlinx.android.synthetic.main.fragment_home.view.yec_activist_image
|
|
62 | 64 |
import kotlinx.android.synthetic.main.no_collections_message.view.add_tabs_to_collections_button
|
63 | 65 |
import kotlinx.coroutines.Dispatchers.IO
|
64 | 66 |
import kotlinx.coroutines.Dispatchers.Main
|
... | ... | @@ -88,6 +90,7 @@ import mozilla.components.support.base.feature.ViewBoundFeatureWrapper |
88 | 90 |
import mozilla.components.support.ktx.android.content.res.resolveAttribute
|
89 | 91 |
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
|
90 | 92 |
import mozilla.components.ui.tabcounter.TabCounterMenu
|
93 |
+import mozilla.components.support.locale.LocaleManager
|
|
91 | 94 |
import org.mozilla.fenix.BrowserDirection
|
92 | 95 |
import org.mozilla.fenix.BuildConfig
|
93 | 96 |
import org.mozilla.fenix.Config
|
... | ... | @@ -127,6 +130,7 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder |
127 | 130 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.topsites.DefaultTopSitesView
|
128 | 131 |
import org.mozilla.fenix.onboarding.FenixOnboarding
|
129 | 132 |
import org.mozilla.fenix.settings.SupportUtils
|
133 |
+import org.mozilla.fenix.settings.advanced.getSelectedLocale
|
|
130 | 134 |
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
|
131 | 135 |
import org.mozilla.fenix.tor.bootstrap.TorQuickStart
|
132 | 136 |
import org.mozilla.fenix.theme.ThemeManager
|
... | ... | @@ -333,6 +337,20 @@ class HomeFragment : Fragment() { |
333 | 337 |
activity.themeManager.applyStatusBarTheme(activity)
|
334 | 338 |
adjustHomeFragmentView(currentMode.getCurrentMode(), view)
|
335 | 339 |
showSessionControlView(view)
|
340 |
+ |
|
341 |
+ view?.donate_now_button?.setOnClickListener {
|
|
342 |
+ val country = LocaleManager.getSelectedLocale(requireContext()).country
|
|
343 |
+ var locale = LocaleManager.getSelectedLocale(requireContext()).language
|
|
344 |
+ if (country != "") {
|
|
345 |
+ locale = "${locale}-${country}"
|
|
346 |
+ }
|
|
347 |
+ val localeUrl = "https://www.torproject.org/donate/donate-phr-bp1-mobile-${locale}"
|
|
348 |
+ activity.openToBrowserAndLoad(
|
|
349 |
+ searchTermOrURL = localeUrl,
|
|
350 |
+ newTab = true,
|
|
351 |
+ from = BrowserDirection.FromHome
|
|
352 |
+ )
|
|
353 |
+ }
|
|
336 | 354 |
view
|
337 | 355 |
}
|
338 | 356 |
|
... | ... | @@ -340,6 +358,28 @@ class HomeFragment : Fragment() { |
340 | 358 |
super.onConfigurationChanged(newConfig)
|
341 | 359 |
|
342 | 360 |
getMenuButton()?.dismissMenu()
|
361 |
+ |
|
362 |
+ //view.donationmatch.setOnClickListener {
|
|
363 |
+ // activity.openToBrowserAndLoad(
|
|
364 |
+ // searchTermOrURL = "https://blog.torproject.org/friends-of-tor-match-2020",
|
|
365 |
+ // newTab = true,
|
|
366 |
+ // from = BrowserDirection.FromHome
|
|
367 |
+ // )
|
|
368 |
+ //}
|
|
369 |
+ |
|
370 |
+ view?.donate_now_button?.setOnClickListener {
|
|
371 |
+ val country = LocaleManager.getSelectedLocale(requireContext()).country
|
|
372 |
+ var locale = LocaleManager.getSelectedLocale(requireContext()).language
|
|
373 |
+ if (country != "") {
|
|
374 |
+ locale = "${locale}-${country}"
|
|
375 |
+ }
|
|
376 |
+ val localeUrl = "https://www.torproject.org/donate/donate-phr-bp1-mobile-${locale}"
|
|
377 |
+ (activity as HomeActivity).openToBrowserAndLoad(
|
|
378 |
+ searchTermOrURL = localeUrl,
|
|
379 |
+ newTab = true,
|
|
380 |
+ from = BrowserDirection.FromHome
|
|
381 |
+ )
|
|
382 |
+ }
|
|
343 | 383 |
}
|
344 | 384 |
|
345 | 385 |
private fun dismissTip(tip: Tip) {
|
... | ... | @@ -474,6 +514,14 @@ class HomeFragment : Fragment() { |
474 | 514 |
toolbarLayoutHeight - SESSION_CONTROL_VIEW_PADDING
|
475 | 515 |
)
|
476 | 516 |
}
|
517 |
+ view.donate_now_button?.apply {
|
|
518 |
+ (layoutParams as ViewGroup.MarginLayoutParams).setMargins(
|
|
519 |
+ 0,
|
|
520 |
+ 0,
|
|
521 |
+ 0,
|
|
522 |
+ toolbarLayoutHeight - SESSION_CONTROL_VIEW_PADDING
|
|
523 |
+ )
|
|
524 |
+ }
|
|
477 | 525 |
}
|
478 | 526 |
} else {
|
479 | 527 |
view.sessionControlRecyclerView?.apply {
|
... | ... | @@ -484,16 +532,41 @@ class HomeFragment : Fragment() { |
484 | 532 |
height - SESSION_CONTROL_VIEW_PADDING
|
485 | 533 |
)
|
486 | 534 |
}
|
535 |
+ view.donate_now_button?.apply {
|
|
536 |
+ (layoutParams as ViewGroup.MarginLayoutParams).setMargins(
|
|
537 |
+ 0,
|
|
538 |
+ 0,
|
|
539 |
+ 0,
|
|
540 |
+ height - SESSION_CONTROL_VIEW_PADDING
|
|
541 |
+ )
|
|
542 |
+ }
|
|
487 | 543 |
}
|
488 | 544 |
}
|
489 |
- // Hide the onion pattern during Onboarding, too.
|
|
490 |
- view?.onion_pattern_image?.apply {
|
|
545 |
+ |
|
546 |
+ // Hide the EOY image during Onboarding, too.
|
|
547 |
+ view?.yec_activist_image?.apply {
|
|
548 |
+ visibility = if (onboarding.userHasBeenOnboarded()) {
|
|
549 |
+ View.VISIBLE
|
|
550 |
+ } else {
|
|
551 |
+ View.GONE
|
|
552 |
+ }
|
|
553 |
+ }
|
|
554 |
+ // Hide the EOY donate button during Onboarding, too.
|
|
555 |
+ view?.donate_now_button?.apply {
|
|
491 | 556 |
visibility = if (onboarding.userHasBeenOnboarded()) {
|
492 | 557 |
View.VISIBLE
|
493 | 558 |
} else {
|
494 | 559 |
View.GONE
|
495 | 560 |
}
|
496 | 561 |
}
|
562 |
+ // Hide the onion pattern during Onboarding, too.
|
|
563 |
+ //view?.onion_pattern_image?.apply {
|
|
564 |
+ // visibility = if (onboarding.userHasBeenOnboarded()) {
|
|
565 |
+ // View.VISIBLE
|
|
566 |
+ // } else {
|
|
567 |
+ // View.GONE
|
|
568 |
+ // }
|
|
569 |
+ //}
|
|
497 | 570 |
view?.homeAppBar?.apply {
|
498 | 571 |
visibility = View.VISIBLE
|
499 | 572 |
|
... | ... | @@ -25,7 +25,6 @@ import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder |
25 | 25 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.NoCollectionsMessageViewHolder
|
26 | 26 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.PrivateBrowsingDescriptionViewHolder
|
27 | 27 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.TorBootstrapPagerViewHolder
|
28 |
-import org.mozilla.fenix.home.sessioncontrol.viewholders.TorInfoBannerViewHolder
|
|
29 | 28 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.TabInCollectionViewHolder
|
30 | 29 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSitePagerViewHolder
|
31 | 30 |
import org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding.ExperimentDefaultBrowserCardViewHolder
|
... | ... | @@ -91,7 +90,6 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { |
91 | 90 |
}
|
92 | 91 |
|
93 | 92 |
object PrivateBrowsingDescription : AdapterItem(PrivateBrowsingDescriptionViewHolder.LAYOUT_ID)
|
94 |
- object TorInfoBanner : AdapterItem(TorInfoBannerViewHolder.LAYOUT_ID)
|
|
95 | 93 |
object NoCollectionsMessage : AdapterItem(NoCollectionsMessageViewHolder.LAYOUT_ID)
|
96 | 94 |
|
97 | 95 |
object TorBootstrap : AdapterItem(TorBootstrapPagerViewHolder.LAYOUT_ID)
|
... | ... | @@ -231,10 +229,6 @@ class SessionControlAdapter( |
231 | 229 |
view,
|
232 | 230 |
interactor
|
233 | 231 |
)
|
234 |
- TorInfoBannerViewHolder.LAYOUT_ID -> TorInfoBannerViewHolder(
|
|
235 |
- view,
|
|
236 |
- interactor
|
|
237 |
- )
|
|
238 | 232 |
TorBootstrapPagerViewHolder.LAYOUT_ID -> TorBootstrapPagerViewHolder(
|
239 | 233 |
view,
|
240 | 234 |
components,
|
... | ... | @@ -94,11 +94,6 @@ interface SessionControlController { |
94 | 94 |
*/
|
95 | 95 |
fun handlePrivateBrowsingLearnMoreClicked()
|
96 | 96 |
|
97 |
- /**
|
|
98 |
- * @see [TabSessionInteractor.onTorInfoBannerLaunchClicked]
|
|
99 |
- */
|
|
100 |
- fun handleTorInfoBannerLaunchClicked()
|
|
101 |
- |
|
102 | 97 |
/**
|
103 | 98 |
* @see [TopSiteInteractor.onRenameTopSiteClicked]
|
104 | 99 |
*/
|
... | ... | @@ -652,12 +647,4 @@ class DefaultSessionControlController( |
652 | 647 |
override fun handleTorNetworkSettingsClicked() {
|
653 | 648 |
openTorNetworkSettings()
|
654 | 649 |
}
|
655 |
- |
|
656 |
- override fun handleTorInfoBannerLaunchClicked() {
|
|
657 |
- activity.openToBrowserAndLoad(
|
|
658 |
- searchTermOrURL = SupportUtils.TOR_INFO_BANNER_URL,
|
|
659 |
- newTab = true,
|
|
660 |
- from = BrowserDirection.FromHome
|
|
661 |
- )
|
|
662 |
- }
|
|
663 | 650 |
}
|
... | ... | @@ -23,12 +23,6 @@ interface TabSessionInteractor { |
23 | 23 |
* "Common myths about private browsing" link in private mode.
|
24 | 24 |
*/
|
25 | 25 |
fun onPrivateBrowsingLearnMoreClicked()
|
26 |
- |
|
27 |
- /**
|
|
28 |
- * Shows the Info Banner web page in a new tab. Called when a user clicks on the
|
|
29 |
- * "Learn More" button.
|
|
30 |
- */
|
|
31 |
- fun onTorInfoBannerLaunchClicked()
|
|
32 | 26 |
}
|
33 | 27 |
|
34 | 28 |
/**
|
... | ... | @@ -418,8 +412,4 @@ class SessionControlInteractor( |
418 | 412 |
override fun onTorBootstrapNetworkSettingsClicked() {
|
419 | 413 |
controller.handleTorNetworkSettingsClicked()
|
420 | 414 |
}
|
421 |
- |
|
422 |
- override fun onTorInfoBannerLaunchClicked() {
|
|
423 |
- controller.handleTorInfoBannerLaunchClicked()
|
|
424 |
- }
|
|
425 | 415 |
}
|
... | ... | @@ -92,7 +92,7 @@ private fun showCollections( |
92 | 92 |
}
|
93 | 93 |
}
|
94 | 94 |
|
95 |
-private fun privateModeAdapterItems() = listOf(AdapterItem.TorInfoBanner)
|
|
95 |
+private fun privateModeAdapterItems() = listOf(AdapterItem.PrivateBrowsingDescription)
|
|
96 | 96 |
|
97 | 97 |
private fun bootstrapAdapterItems() = listOf(AdapterItem.TorBootstrap)
|
98 | 98 |
|
1 |
-/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2 |
- * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3 |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
4 |
- |
|
5 |
-package org.mozilla.fenix.home.sessioncontrol.viewholders
|
|
6 |
- |
|
7 |
-import android.graphics.Typeface
|
|
8 |
-import android.text.SpannableString
|
|
9 |
-import android.text.Spanned
|
|
10 |
-import android.text.style.StyleSpan
|
|
11 |
-import android.view.View
|
|
12 |
-import androidx.recyclerview.widget.RecyclerView
|
|
13 |
-import kotlinx.android.synthetic.main.tor_info_banner.view.*
|
|
14 |
-import org.mozilla.fenix.R
|
|
15 |
-import org.mozilla.fenix.home.sessioncontrol.TabSessionInteractor
|
|
16 |
- |
|
17 |
-class TorInfoBannerViewHolder(
|
|
18 |
- view: View,
|
|
19 |
- private val interactor: TabSessionInteractor
|
|
20 |
-) : RecyclerView.ViewHolder(view) {
|
|
21 |
- |
|
22 |
- init {
|
|
23 |
- with(view.info_banner_launch_button) {
|
|
24 |
- setOnClickListener {
|
|
25 |
- interactor.onTorInfoBannerLaunchClicked()
|
|
26 |
- }
|
|
27 |
- }
|
|
28 |
- }
|
|
29 |
- |
|
30 |
- companion object {
|
|
31 |
- const val LAYOUT_ID = R.layout.tor_info_banner
|
|
32 |
- }
|
|
33 |
-}
|
... | ... | @@ -40,7 +40,6 @@ object SupportUtils { |
40 | 40 |
const val DONATE_URL = "https://donate.torproject.org/"
|
41 | 41 |
const val TB_MANUAL_URL = "https://tb-manual.torproject.org/mobile-tor"
|
42 | 42 |
const val TOR_RELEASES = "https://www.torproject.org/releases/"
|
43 |
- const val TOR_INFO_BANNER_URL = "http://eh5esdnd6fkbkapfc6nuyvkjgbtnzq2is72lmpwbdbxepd2z7zbgzsqd.onion/index.php/664393"
|
|
44 | 43 |
|
45 | 44 |
enum class SumoTopic(internal val topicStr: String) {
|
46 | 45 |
FENIX_MOVING("sync-delist"),
|
... | ... | @@ -32,7 +32,7 @@ abstract class ThemeManager { |
32 | 32 |
@get:StyleRes
|
33 | 33 |
val currentThemeResource get() = when (currentTheme) {
|
34 | 34 |
BrowsingMode.Normal -> R.style.NormalTheme
|
35 |
- BrowsingMode.Private -> R.style.PrivateTheme
|
|
35 |
+ BrowsingMode.Private -> R.style.PrivateEOYTheme
|
|
36 | 36 |
}
|
37 | 37 |
|
38 | 38 |
/**
|
No preview for this file type
1 |
-<?xml version="1.0" encoding="utf-8"?><!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
2 |
- - License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3 |
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
4 |
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
|
5 |
- android:color="@color/info_banner_padded_background_color">
|
|
6 |
- <item
|
|
7 |
- android:bottom="6dp"
|
|
8 |
- android:top="6dp">
|
|
9 |
- <shape android:shape="rectangle">
|
|
10 |
- <corners android:radius="4dp" />
|
|
11 |
- </shape>
|
|
12 |
- </item>
|
|
13 |
-</ripple>
|
1 |
+<?xml version="1.0" encoding="utf-8"?>
|
|
2 |
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
3 |
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4 |
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
5 |
+ |
|
6 |
+<!-- Used for rounding the corners of a button -->
|
|
7 |
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
|
8 |
+ android:shape="rectangle">
|
|
9 |
+ <solid android:color="#EFB149" />
|
|
10 |
+ <corners android:radius="10dp" />
|
|
11 |
+</shape>
|
No preview for this file type
No preview for this file type
No preview for this file type
... | ... | @@ -81,21 +81,79 @@ |
81 | 81 |
|
82 | 82 |
<TextView
|
83 | 83 |
android:id="@+id/exploreprivately"
|
84 |
- android:layout_width="wrap_content"
|
|
84 |
+ android:layout_width="match_parent"
|
|
85 | 85 |
android:layout_height="wrap_content"
|
86 |
- android:layout_gravity="center|center_vertical"
|
|
87 |
- android:gravity="center_horizontal"
|
|
86 |
+ android:layout_gravity="center_horizontal|center_vertical"
|
|
88 | 87 |
android:clickable="false"
|
89 |
- android:ellipsize="end"
|
|
90 | 88 |
android:focusable="false"
|
89 |
+ android:fontFamily="@font/corben_bold"
|
|
90 |
+ android:gravity="center"
|
|
91 | 91 |
android:importantForAccessibility="no"
|
92 |
- android:text="@string/tor_explore_privately"
|
|
93 |
- android:fontFamily="Roboto-Medium"
|
|
94 |
- android:textColor="#DEFFFFFF"
|
|
95 |
- android:textSize="40sp"
|
|
96 |
- android:lineSpacingMultiplier="1.1"
|
|
97 |
- app:layout_scrollFlags="scroll"
|
|
98 |
- android:visibility="gone" />
|
|
92 |
+ android:paddingStart="35dp"
|
|
93 |
+ android:paddingTop="20dp"
|
|
94 |
+ android:paddingEnd="35dp"
|
|
95 |
+ android:text="@string/tor_privacy_human_right"
|
|
96 |
+ android:textColor="#FAF5DF"
|
|
97 |
+ android:textSize="30sp"
|
|
98 |
+ app:layout_scrollFlags="scroll" />
|
|
99 |
+ |
|
100 |
+ <LinearLayout
|
|
101 |
+ android:layout_width="match_parent"
|
|
102 |
+ android:layout_height="wrap_content"
|
|
103 |
+ android:layout_weight="1"
|
|
104 |
+ android:orientation="vertical">
|
|
105 |
+ |
|
106 |
+ <ImageView
|
|
107 |
+ android:id="@+id/yec_activist_image"
|
|
108 |
+ android:layout_width="wrap_content"
|
|
109 |
+ android:layout_height="200dp"
|
|
110 |
+ android:layout_weight="1"
|
|
111 |
+ android:paddingStart="35dp"
|
|
112 |
+ android:paddingEnd="35dp"
|
|
113 |
+ app:layout_scrollFlags="scroll"
|
|
114 |
+ app:srcCompat="@drawable/ic_yec_activist_android"
|
|
115 |
+ tools:ignore="ContentDescription" />
|
|
116 |
+ |
|
117 |
+ <Button
|
|
118 |
+ android:id="@+id/donate_now_button"
|
|
119 |
+ style="@style/TorDonateYecButton"
|
|
120 |
+ android:layout_width="match_parent"
|
|
121 |
+ android:layout_height="wrap_content"
|
|
122 |
+ android:layout_gravity="center"
|
|
123 |
+ android:layout_marginStart="35dp"
|
|
124 |
+ android:layout_marginEnd="35dp"
|
|
125 |
+ android:background="@drawable/tor_yec_donate_rounded_corners"
|
|
126 |
+ android:fontFamily="Roboto-Medium"
|
|
127 |
+ android:gravity="center"
|
|
128 |
+ android:text="@string/tor_onboarding_donate_button"
|
|
129 |
+ android:textAllCaps="false"
|
|
130 |
+ android:textColor="#000000"
|
|
131 |
+ android:textSize="18sp"
|
|
132 |
+ android:textStyle="bold"
|
|
133 |
+ android:visibility="visible"
|
|
134 |
+ tools:ignore="ButtonStyleXmlDetector" />
|
|
135 |
+ |
|
136 |
+ <TextView
|
|
137 |
+ android:id="@+id/donationmatch"
|
|
138 |
+ android:layout_width="match_parent"
|
|
139 |
+ android:layout_height="wrap_content"
|
|
140 |
+ android:layout_gravity="center_vertical"
|
|
141 |
+ android:clickable="false"
|
|
142 |
+ android:focusable="false"
|
|
143 |
+ android:fontFamily="@font/corben_regular"
|
|
144 |
+ android:gravity="center"
|
|
145 |
+ android:importantForAccessibility="no"
|
|
146 |
+ android:lineSpacingMultiplier="1.1"
|
|
147 |
+ android:paddingStart="35dp"
|
|
148 |
+ android:paddingTop="10dp"
|
|
149 |
+ android:paddingEnd="35dp"
|
|
150 |
+ android:paddingBottom="20dp"
|
|
151 |
+ android:text="@string/tor_donationmatch_202110"
|
|
152 |
+ android:textColor="#FAF5DF"
|
|
153 |
+ android:textSize="18sp"
|
|
154 |
+ android:visibility="visible"
|
|
155 |
+ app:layout_scrollFlags="scroll" />
|
|
156 |
+ </LinearLayout>
|
|
99 | 157 |
|
100 | 158 |
</com.google.android.material.appbar.AppBarLayout>
|
101 | 159 |
|
... | ... | @@ -121,11 +179,12 @@ |
121 | 179 |
android:layout_width="match_parent"
|
122 | 180 |
android:layout_height="wrap_content"
|
123 | 181 |
android:layout_gravity="bottom"
|
124 |
- app:srcCompat="@drawable/ic_onion_pattern"
|
|
125 |
- tools:ignore="ContentDescription"
|
|
182 |
+ android:visibility="gone"
|
|
126 | 183 |
app:layout_constraintBottom_toTopOf="@id/toolbarLayout"
|
127 | 184 |
app:layout_constraintEnd_toEndOf="parent"
|
128 |
- app:layout_constraintStart_toStartOf="parent" />
|
|
185 |
+ app:layout_constraintStart_toStartOf="parent"
|
|
186 |
+ app:srcCompat="@drawable/ic_onion_pattern"
|
|
187 |
+ tools:ignore="ContentDescription" />
|
|
129 | 188 |
|
130 | 189 |
<androidx.constraintlayout.widget.ConstraintLayout
|
131 | 190 |
android:id="@+id/toolbarLayout"
|
1 |
-<?xml version="1.0" encoding="utf-8"?>
|
|
2 |
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
3 |
- - License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4 |
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
5 |
-<androidx.constraintlayout.widget.ConstraintLayout
|
|
6 |
- xmlns:android="http://schemas.android.com/apk/res/android"
|
|
7 |
- xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
8 |
- android:id="@+id/info_banner_wrapper"
|
|
9 |
- style="@style/OnboardingCardLightWithPadding"
|
|
10 |
- android:layout_width="match_parent"
|
|
11 |
- android:layout_height="wrap_content"
|
|
12 |
- android:clipChildren="false"
|
|
13 |
- android:clipToPadding="false">
|
|
14 |
- |
|
15 |
- <LinearLayout
|
|
16 |
- android:id="@+id/info_banner_header_wrapper"
|
|
17 |
- android:layout_width="match_parent"
|
|
18 |
- android:layout_height="wrap_content"
|
|
19 |
- app:layout_constraintStart_toStartOf="parent"
|
|
20 |
- app:layout_constraintTop_toTopOf="parent"
|
|
21 |
- android:importantForAccessibility="no">
|
|
22 |
- |
|
23 |
- <ImageView
|
|
24 |
- android:id="@+id/tor_info_banner_icon"
|
|
25 |
- android:layout_width="wrap_content"
|
|
26 |
- android:layout_height="32dp"
|
|
27 |
- android:layout_marginEnd="10dp"
|
|
28 |
- android:adjustViewBounds="true"
|
|
29 |
- android:clickable="false"
|
|
30 |
- android:focusable="false"
|
|
31 |
- android:importantForAccessibility="no"
|
|
32 |
- app:srcCompat="@drawable/vpn_survey_icon"/>
|
|
33 |
- |
|
34 |
- <TextView
|
|
35 |
- android:id="@+id/info_banner_header"
|
|
36 |
- android:layout_width="match_parent"
|
|
37 |
- android:layout_height="wrap_content"
|
|
38 |
- android:ellipsize="none"
|
|
39 |
- android:lineSpacingExtra="6dp"
|
|
40 |
- android:paddingHorizontal="4dp"
|
|
41 |
- android:paddingTop="4dp"
|
|
42 |
- android:scrollHorizontally="false"
|
|
43 |
- android:textAlignment="viewStart"
|
|
44 |
- android:textColor="?primaryText"
|
|
45 |
- android:textSize="20sp"
|
|
46 |
- android:text="Do you use a VPN?" />
|
|
47 |
- </LinearLayout>
|
|
48 |
- |
|
49 |
- <TextView
|
|
50 |
- android:id="@+id/info_banner_description"
|
|
51 |
- android:layout_width="match_parent"
|
|
52 |
- android:layout_height="wrap_content"
|
|
53 |
- android:ellipsize="none"
|
|
54 |
- android:lineSpacingExtra="6dp"
|
|
55 |
- android:paddingHorizontal="4dp"
|
|
56 |
- android:paddingTop="4dp"
|
|
57 |
- app:layout_constraintEnd_toEndOf="parent"
|
|
58 |
- app:layout_constraintStart_toStartOf="parent"
|
|
59 |
- app:layout_constraintTop_toBottomOf="@id/info_banner_header_wrapper"
|
|
60 |
- android:scrollHorizontally="false"
|
|
61 |
- android:textAlignment="viewStart"
|
|
62 |
- android:textColor="?primaryText"
|
|
63 |
- android:textSize="16sp"
|
|
64 |
- android:text="We’d like to learn more about how and why our users use VPNs. Complete this short ten-minute survey to tell us about your experience:" />
|
|
65 |
- |
|
66 |
- <Button
|
|
67 |
- style="@style/PositiveButton"
|
|
68 |
- android:id="@+id/info_banner_launch_button"
|
|
69 |
- android:text="Learn More"
|
|
70 |
- android:layout_marginTop="16dp"
|
|
71 |
- android:textSize="18dp"
|
|
72 |
- android:textColor="@android:color/black"
|
|
73 |
- android:background="@drawable/info_banner_padded_background"
|
|
74 |
- android:fontFamily="Roboto-Medium"
|
|
75 |
- app:layout_constraintEnd_toEndOf="parent"
|
|
76 |
- app:layout_constraintStart_toStartOf="parent"
|
|
77 |
- app:layout_constraintTop_toBottomOf="@id/info_banner_description" />
|
|
78 |
- |
|
79 |
-</androidx.constraintlayout.widget.ConstraintLayout>
|
... | ... | @@ -191,6 +191,8 @@ |
191 | 191 |
<color name="mozac_widget_favicon_background_private_theme">@color/photonInk50</color>
|
192 | 192 |
<color name="mozac_widget_favicon_border_private_theme">@color/photonInk50</color>
|
193 | 193 |
|
194 |
+ <color name="tor_yec_home_background">#2A1B51</color>
|
|
195 |
+ |
|
194 | 196 |
<!-- Tab Tray -->
|
195 | 197 |
<color name="tab_tray_item_text_private_theme">@color/photonLightGrey05</color>
|
196 | 198 |
<color name="tab_tray_item_url_private_theme">@color/photonLightGrey60</color>
|
... | ... | @@ -424,7 +426,4 @@ |
424 | 426 |
|
425 | 427 |
<!-- Toolbar menu icon colors -->
|
426 | 428 |
<color name="toolbar_menu_transparent">@android:color/transparent</color>
|
427 |
- |
|
428 |
- <!-- Tor -->
|
|
429 |
- <color name="info_banner_padded_background_color">#A76FFA</color>
|
|
430 | 429 |
</resources>
|
... | ... | @@ -284,6 +284,10 @@ |
284 | 284 |
|
285 | 285 |
<style name="PrivateTheme" parent="PrivateThemeBase" />
|
286 | 286 |
|
287 |
+ <style name="PrivateEOYTheme" parent="PrivateThemeBase" >
|
|
288 |
+ <item name="homeBackground">@color/tor_yec_home_background</item>
|
|
289 |
+ </style>
|
|
290 |
+ |
|
287 | 291 |
<!-- Fade animation for theme switching -->
|
288 | 292 |
<style name="WindowAnimationTransition">
|
289 | 293 |
<item name="android:windowEnterAnimation">@anim/fade_in</item>
|
... | ... | @@ -322,6 +326,12 @@ |
322 | 326 |
<item name="android:textColor">#000000</item>
|
323 | 327 |
</style>
|
324 | 328 |
|
329 |
+ <style name="TorDonateYecButton" parent="NeutralButton">
|
|
330 |
+ <item name="android:background">@drawable/tor_yec_donate_rounded_corners</item>
|
|
331 |
+ <item name="backgroundTint">#EFB149</item>
|
|
332 |
+ <item name="android:textColor">#000000</item>
|
|
333 |
+ </style>
|
|
334 |
+ |
|
325 | 335 |
<style name="DestructiveButton" parent="NeutralButton">
|
326 | 336 |
<item name="iconTint">@color/destructive_button_text_color</item>
|
327 | 337 |
<item name="android:textColor">@color/destructive_button_text_color</item>
|
... | ... | @@ -72,4 +72,7 @@ |
72 | 72 |
|
73 | 73 |
<!-- Spoof locale to English -->
|
74 | 74 |
<string name="tor_spoof_english">Request English versions of web pages for enhanced privacy</string>
|
75 |
+ |
|
76 |
+ <string name="tor_privacy_human_right">Privacy is a human right</string>
|
|
77 |
+ <string name="tor_donationmatch_202110">Your donation will be matched by Friends of Tor, up to $150,000.</string>
|
|
75 | 78 |
</resources>
|