mirror of
https://github.com/Alex313031/thorium.git
synced 2025-01-09 11:27:32 -03:00
fixes
This commit is contained in:
parent
60b4bc8225
commit
121047aa9f
7 changed files with 173 additions and 135 deletions
|
@ -31,7 +31,7 @@
|
|||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/browser_ui_prefs.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">browser_ui_prefs.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">google_api_keys_infobar_delegate.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/startup/infobar_utils.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">infobar_utils.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/startup/default_browser_infobar_delegate.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">default_browser_infobar_delegate.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/startup/default_browser_prompt.cc;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">default_browser_prompt.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/browser/ui/startup/bad_flags_prompt.cc;bpv=1" ADD_DATE="1674977639" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">bad_flags_prompt.cc - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/installer/linux/;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">installer/linux - Chromium Code Search</A>
|
||||
<DT><A HREF="https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.218:chrome/installer/mini_installer/chrome.release;bpv=1" ADD_DATE="1661054752" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADIUlEQVQ4jW1TXWwUZRQ955ufnZ3dlm4VpE2Q+lND1cSQYDBaKY2VEkUFa1d9K4laBROEIg+mDfvkg5Bu9MWoD/hkTJdqJBFCMRENEqONRkMbIiWGWn5SjWw7OzO7szPf9UFCCnrebu7JuTc55xA3QURYKkEtXw7+1gDm0mDWBtMm+GcAnb+P0VI+lw4fTIp7C6O7dU3nlKFyisxp0TmDRpMmmyDSCqLY96D1HUQIUsxrd9nfD3VrHDbDTi/ENi5V/TCdtmlQ0Y60dmwANNXT0HpodEx+2kNUb/4e45PSUhBR/1lcw6Gvf3fGf4gmJn6NBgGgUBBFAHj+vepdKSvp2r5m/pPu7juqA4fEOTcXvhaG2KAMVjOp5MjJ4eynBOTIz7Vnzs5Jcfoiej9+1TlHAHjyneArKrl/XcVtnQLcS/A/b23J9DzUBgQRcPo84JX90VOF7JCIGFsOBLMCTB/dl3lc9b+7uA1O+jHb4OuFAvVl+oOtLZmekc1JbUc36nt7pb6zK0mslL2n6+3wUZJJyuIuOm7Ps8Xyc8qP3Q+TMDj+2W73MABUatK5vg26vcVQf3navOqL+Ui7kay53dJeEG8AgPE33PEkDI6HSfZ9BRFAQJF/LSVYDSIQEBiKsE0lsRaGNSiTEl43X4SAQKWN8GUj427qG/XyAJB15IvTM+CJKW04FuoiEpd+1Grmj8BvzPIYAGwten2mm9mUsauDBIAnDvgnAHQMrHZX5/NMOguLBy07NXTPKhvVGnDhb0BH3pvfDjcelDExnpoNLormmS/3uT0KAFY0xDs2dhiLqXZsBoBThca9QK1z8mxlZPpCZZeq+2dMqi2AcGYtzOZG9dayrHoFACgiJCkTU9FAJZCtCxX7he3dvCFl60b8ta6lh2/T2Rdf2oam3gc4f2MXRLi7NOd0tq34iFS/aNFHIwBhJLGVSLRqZd3rWNYQfj+L5igOdb6YvoISNEC5LgBSDk9G6ynYScgVrbGgFMsQKSdiLIhIWSe6rGifzz/M8H/bCABjU2L781BeOCMrK5FcvfNeuexB8M1J7N+/MSEpS/n/AGH0clblBN69AAAAAElFTkSuQmCC">chrome.release - Chromium Code Search</A>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
"Show Component Extension Options",
|
||||
"Shows internal Chromium component extensions on the `chrome://extensions`. These are normally hidden, "
|
||||
"but this is an override for debugging or inspection.",
|
||||
kOsDesktop, SINGLE_VALUE_TYPE(switches::kShowComponentExtensionOptions)},
|
||||
kOsDesktop, SINGLE_VALUE_TYPE(extensions::switches::kShowComponentExtensionOptions)},
|
||||
{"force-high-contrast",
|
||||
"Enable High Contrast Mode",
|
||||
"Enables high contrast mode for all Thorium instances.",
|
||||
|
|
|
@ -1,128 +0,0 @@
|
|||
// Copyright 2024 The Chromium Authors and Alex313031
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "chrome/browser/ui/startup/default_browser_infobar_delegate.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/functional/callback_helpers.h"
|
||||
#include "base/metrics/histogram_macros.h"
|
||||
#include "base/metrics/user_metrics.h"
|
||||
#include "base/task/single_thread_task_runner.h"
|
||||
#include "base/types/pass_key.h"
|
||||
#include "chrome/browser/infobars/confirm_infobar_creator.h"
|
||||
#include "chrome/browser/ui/startup/default_browser_prompt.h"
|
||||
#include "chrome/browser/ui/ui_features.h"
|
||||
#include "chrome/grit/branded_strings.h"
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "components/infobars/core/confirm_infobar_delegate.h"
|
||||
#include "components/infobars/core/infobar.h"
|
||||
#include "components/vector_icons/vector_icons.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
|
||||
namespace chrome {
|
||||
|
||||
// static
|
||||
infobars::InfoBar* DefaultBrowserInfoBarDelegate::Create(
|
||||
infobars::ContentInfoBarManager* infobar_manager,
|
||||
Profile* profile) {
|
||||
return;
|
||||
}
|
||||
|
||||
DefaultBrowserInfoBarDelegate::DefaultBrowserInfoBarDelegate(
|
||||
base::PassKey<DefaultBrowserInfoBarDelegate>,
|
||||
Profile* profile)
|
||||
: profile_(profile) {
|
||||
if (!base::FeatureList::IsEnabled(features::kDefaultBrowserPromptRefresh)) {
|
||||
// We want the info-bar to stick-around for few seconds and then be hidden
|
||||
// on the next navigation after that.
|
||||
base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(&DefaultBrowserInfoBarDelegate::AllowExpiry,
|
||||
weak_factory_.GetWeakPtr()),
|
||||
base::Seconds(8));
|
||||
}
|
||||
}
|
||||
|
||||
DefaultBrowserInfoBarDelegate::~DefaultBrowserInfoBarDelegate() {
|
||||
if (!action_taken_) {
|
||||
base::RecordAction(base::UserMetricsAction("DefaultBrowserInfoBar_Ignore"));
|
||||
UMA_HISTOGRAM_ENUMERATION("DefaultBrowser.InfoBar.UserInteraction",
|
||||
IGNORE_INFO_BAR,
|
||||
NUM_INFO_BAR_USER_INTERACTION_TYPES);
|
||||
}
|
||||
}
|
||||
|
||||
void DefaultBrowserInfoBarDelegate::AllowExpiry() {
|
||||
should_expire_ = true;
|
||||
}
|
||||
|
||||
infobars::InfoBarDelegate::InfoBarIdentifier
|
||||
DefaultBrowserInfoBarDelegate::GetIdentifier() const {
|
||||
return DEFAULT_BROWSER_INFOBAR_DELEGATE;
|
||||
}
|
||||
|
||||
const gfx::VectorIcon& DefaultBrowserInfoBarDelegate::GetVectorIcon() const {
|
||||
return vector_icons::kProductIcon;
|
||||
}
|
||||
|
||||
bool DefaultBrowserInfoBarDelegate::ShouldExpire(
|
||||
const NavigationDetails& details) const {
|
||||
return should_expire_ && ConfirmInfoBarDelegate::ShouldExpire(details);
|
||||
}
|
||||
|
||||
void DefaultBrowserInfoBarDelegate::InfoBarDismissed() {
|
||||
action_taken_ = true;
|
||||
// |profile_| may be null in tests.
|
||||
if (profile_)
|
||||
DefaultBrowserPromptDeclined(profile_);
|
||||
base::RecordAction(base::UserMetricsAction("DefaultBrowserInfoBar_Dismiss"));
|
||||
UMA_HISTOGRAM_ENUMERATION("DefaultBrowser.InfoBar.UserInteraction",
|
||||
DISMISS_INFO_BAR,
|
||||
NUM_INFO_BAR_USER_INTERACTION_TYPES);
|
||||
|
||||
ConfirmInfoBarDelegate::InfoBarDismissed();
|
||||
}
|
||||
|
||||
std::u16string DefaultBrowserInfoBarDelegate::GetMessageText() const {
|
||||
if (base::FeatureList::IsEnabled(features::kDefaultBrowserPromptRefresh) &&
|
||||
features::kUpdatedInfoBarCopy.Get()) {
|
||||
return l10n_util::GetStringUTF16(IDS_DEFAULT_BROWSER_INFOBAR_REFRESH_TEXT);
|
||||
}
|
||||
return l10n_util::GetStringUTF16(IDS_DEFAULT_BROWSER_INFOBAR_TEXT);
|
||||
}
|
||||
|
||||
int DefaultBrowserInfoBarDelegate::GetButtons() const {
|
||||
return BUTTON_OK;
|
||||
}
|
||||
|
||||
std::u16string DefaultBrowserInfoBarDelegate::GetButtonLabel(
|
||||
InfoBarButton button) const {
|
||||
DCHECK_EQ(BUTTON_OK, button);
|
||||
if (base::FeatureList::IsEnabled(features::kDefaultBrowserPromptRefresh) &&
|
||||
features::kUpdatedInfoBarCopy.Get()) {
|
||||
return l10n_util::GetStringUTF16(
|
||||
IDS_DEFAULT_BROWSER_INFOBAR_REFRESH_OK_BUTTON_LABEL);
|
||||
}
|
||||
return l10n_util::GetStringUTF16(IDS_DEFAULT_BROWSER_INFOBAR_OK_BUTTON_LABEL);
|
||||
}
|
||||
|
||||
bool DefaultBrowserInfoBarDelegate::Accept() {
|
||||
action_taken_ = true;
|
||||
base::RecordAction(base::UserMetricsAction("DefaultBrowserInfoBar_Accept"));
|
||||
UMA_HISTOGRAM_ENUMERATION("DefaultBrowser.InfoBar.UserInteraction",
|
||||
ACCEPT_INFO_BAR,
|
||||
NUM_INFO_BAR_USER_INTERACTION_TYPES);
|
||||
|
||||
// The worker pointer is reference counted. While it is running, the
|
||||
// message loops of the FILE and UI thread will hold references to it
|
||||
// and it will be automatically freed once all its tasks have finished.
|
||||
base::MakeRefCounted<shell_integration::DefaultBrowserWorker>()
|
||||
->StartSetAsDefault(base::NullCallback());
|
||||
|
||||
return ConfirmInfoBarDelegate::Accept();
|
||||
}
|
||||
|
||||
} // namespace chrome
|
170
src/chrome/browser/ui/startup/default_browser_prompt.cc
Normal file
170
src/chrome/browser/ui/startup/default_browser_prompt.cc
Normal file
|
@ -0,0 +1,170 @@
|
|||
// Copyright 2024 The Chromium Authors and Alex313031
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "chrome/browser/ui/startup/default_browser_prompt.h"
|
||||
|
||||
#include <limits>
|
||||
#include <string>
|
||||
|
||||
#include "base/check_is_test.h"
|
||||
#include "base/feature_list.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/functional/callback_helpers.h"
|
||||
#include "base/location.h"
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "base/metrics/field_trial.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/task/single_thread_task_runner.h"
|
||||
#include "base/time/time.h"
|
||||
#include "base/version.h"
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/browser_list.h"
|
||||
#include "chrome/browser/ui/startup/default_browser_infobar_delegate.h"
|
||||
#include "chrome/browser/ui/startup/default_browser_prompt_manager.h"
|
||||
#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
||||
#include "chrome/browser/ui/ui_features.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/infobars/content/content_infobar_manager.h"
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/version_info/version_info.h"
|
||||
#include "content/public/browser/visibility.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "ui/base/ui_base_features.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void ResetCheckDefaultBrowserPref(const base::FilePath& profile_path) {
|
||||
Profile* profile =
|
||||
g_browser_process->profile_manager()->GetProfileByPath(profile_path);
|
||||
if (profile)
|
||||
ResetDefaultBrowserPrompt(profile);
|
||||
}
|
||||
|
||||
void ShowPrompt() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Returns true if the default browser prompt should be shown if Chrome is not
|
||||
// the user's default browser.
|
||||
bool ShouldShowDefaultBrowserPrompt(Profile* profile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void OnCheckIsDefaultBrowserFinished(
|
||||
const base::FilePath& profile_path,
|
||||
bool show_prompt,
|
||||
shell_integration::DefaultWebClientState state) {
|
||||
if (state == shell_integration::IS_DEFAULT) {
|
||||
// Notify the user in the future if Chrome ceases to be the user's chosen
|
||||
// default browser.
|
||||
ResetCheckDefaultBrowserPref(profile_path);
|
||||
} else if (show_prompt && state == shell_integration::NOT_DEFAULT &&
|
||||
shell_integration::CanSetAsDefaultBrowser()) {
|
||||
// Only show the prompt if some other program is the user's default browser.
|
||||
// In particular, don't show it if another install mode is default (e.g.,
|
||||
// don't prompt for Chrome Beta if stable Chrome is the default).
|
||||
ShowPrompt();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void RegisterDefaultBrowserPromptPrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterStringPref(
|
||||
prefs::kBrowserSuppressDefaultBrowserPrompt, std::string());
|
||||
registry->RegisterStringPref(prefs::kDefaultBrowserPromptRefreshStudyGroup,
|
||||
std::string());
|
||||
}
|
||||
|
||||
// Migrates the last declined time from the old int pref (profile) to the new
|
||||
// Time pref (local). Does not clear the old pref as it is still needed to
|
||||
// preserve the original behavior for the duration of the experiment.
|
||||
// TODO(326079444): After experiment is over, change this function to also clear
|
||||
// the old pref.
|
||||
void MigrateDefaultBrowserLastDeclinedPref(PrefService* profile_prefs) {
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
if (!local_state) {
|
||||
CHECK_IS_TEST();
|
||||
return;
|
||||
}
|
||||
|
||||
const PrefService::Preference* old_last_declined_time_pref =
|
||||
profile_prefs->FindPreference(prefs::kDefaultBrowserLastDeclined);
|
||||
const PrefService::Preference* last_declined_time_pref =
|
||||
local_state->FindPreference(prefs::kDefaultBrowserLastDeclinedTime);
|
||||
|
||||
if (old_last_declined_time_pref->IsDefaultValue()) {
|
||||
return;
|
||||
}
|
||||
|
||||
base::Time old_last_declined_time = base::Time::FromInternalValue(
|
||||
profile_prefs->GetInt64(prefs::kDefaultBrowserLastDeclined));
|
||||
base::Time last_declined_time =
|
||||
local_state->GetTime(prefs::kDefaultBrowserLastDeclinedTime);
|
||||
|
||||
// Migrate if the local pref has never been set before, or if the local pref's
|
||||
// value was migrated from a different profile and the current profile's pref
|
||||
// has a value that is more recent. It is not possible to overwrite a user-set
|
||||
// value for the local pref as both the new pref and the old pref are kept in
|
||||
// sync from the moment the new pref is introduced.
|
||||
if (last_declined_time_pref->IsDefaultValue() ||
|
||||
old_last_declined_time > last_declined_time) {
|
||||
local_state->SetTime(prefs::kDefaultBrowserLastDeclinedTime,
|
||||
old_last_declined_time);
|
||||
if (local_state->GetInteger(prefs::kDefaultBrowserDeclinedCount) == 0) {
|
||||
local_state->SetInteger(prefs::kDefaultBrowserDeclinedCount, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShowDefaultBrowserPrompt(Profile* profile) {
|
||||
// Do not check if Chrome is the default browser if there is a policy in
|
||||
// control of this setting.
|
||||
if (g_browser_process->local_state()->IsManagedPreference(
|
||||
prefs::kDefaultBrowserSettingEnabled)) {
|
||||
// Handling of the browser.default_browser_setting_enabled policy setting is
|
||||
// taken care of in BrowserProcessImpl.
|
||||
return;
|
||||
}
|
||||
|
||||
scoped_refptr<shell_integration::DefaultBrowserWorker>(
|
||||
new shell_integration::DefaultBrowserWorker())
|
||||
->StartCheckIsDefault(
|
||||
base::BindOnce(&OnCheckIsDefaultBrowserFinished, profile->GetPath(),
|
||||
ShouldShowDefaultBrowserPrompt(profile)));
|
||||
}
|
||||
|
||||
void DefaultBrowserPromptDeclined(Profile* profile) {
|
||||
base::Time now = base::Time::Now();
|
||||
profile->GetPrefs()->SetInt64(prefs::kDefaultBrowserLastDeclined,
|
||||
now.ToInternalValue());
|
||||
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
local_state->SetTime(prefs::kDefaultBrowserLastDeclinedTime, now);
|
||||
local_state->SetInteger(
|
||||
prefs::kDefaultBrowserDeclinedCount,
|
||||
local_state->GetInteger(prefs::kDefaultBrowserDeclinedCount) + 1);
|
||||
}
|
||||
|
||||
void ResetDefaultBrowserPrompt(Profile* profile) {
|
||||
profile->GetPrefs()->ClearPref(prefs::kDefaultBrowserLastDeclined);
|
||||
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
local_state->ClearPref(prefs::kDefaultBrowserLastDeclinedTime);
|
||||
local_state->ClearPref(prefs::kDefaultBrowserDeclinedCount);
|
||||
}
|
||||
|
||||
void ShowPromptForTesting() {
|
||||
ShowPrompt();
|
||||
}
|
||||
|
||||
bool ShouldShowDefaultBrowserPromptForTesting(Profile* profile) {
|
||||
return ShouldShowDefaultBrowserPrompt(profile);
|
||||
}
|
|
@ -109,9 +109,6 @@
|
|||
<message name="IDS_ENTERPRISE_BLOCK_PRIMARY_PARAGRAPH_CUSTOM_MESSAGE" desc="Main paragraph of an error message with custom message provided by admin. Context: the error page that's shown when the requested URL doesn't pass the filtering rules set by the admin.">
|
||||
Your administrator says: "<ph name="CUSTOM_MESSAGE">$1<ex>This site has been blocked because it violates a policy.</ex></ph>"
|
||||
</message>
|
||||
<message name="IDS_ENTERPRISE_BLOCK_PRIMARY_PARAGRAPH_CUSTOM_MESSAGE" desc="Main paragraph of an error message with custom message provided by admin. Context: the error page that's shown when the requested URL doesn't pass the filtering rules set by the admin.">
|
||||
Your administrator says: "<ph name="CUSTOM_MESSAGE">$1<ex>This site has been blocked because it violates a policy.</ex></ph>"
|
||||
</message>
|
||||
<message name="IDS_ENTERPRISE_BLOCK_GO_BACK" desc="The text for the button that takes the user back to safety.">
|
||||
Go back
|
||||
</message>
|
||||
|
|
|
@ -1253,7 +1253,6 @@ BASE_FEATURE(kAllowMediaCodecSoftwareDecoder,
|
|||
BASE_FEATURE(kBuiltInHlsPlayer,
|
||||
"BuiltInHlsPlayer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
);
|
||||
|
||||
BASE_FEATURE(kBuiltInHlsMP4,
|
||||
"kBuiltInHlsMP4",
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit e5d946f550dc64d484e3db04412327b06914a78d
|
||||
Subproject commit 6bd91631ad36a39d24e6660d9e77a0631e8af4ae
|
Loading…
Reference in a new issue