diff --git a/patches/helium/ui/add-copy-download-link-context-menu.patch b/patches/helium/ui/add-copy-download-link-context-menu.patch new file mode 100644 index 000000000..3e7ab3647 --- /dev/null +++ b/patches/helium/ui/add-copy-download-link-context-menu.patch @@ -0,0 +1,169 @@ +--- a/chrome/browser/download/download_commands.h ++++ b/chrome/browser/download/download_commands.h +@@ -48,6 +48,7 @@ + EDIT_WITH_MEDIA_APP = 22, // Open file using the ChromeOS media app with + // an editing hint. + OPEN_HELIUM_SERVICES = 23, // Open the Services page in settings. ++ COPY_DOWNLOAD_LINK = 24, // Copy the download source URL to the clipboard. + +- kMaxValue = OPEN_HELIUM_SERVICES, // Keep last. ++ kMaxValue = COPY_DOWNLOAD_LINK, // Keep last. + }; +--- a/chrome/browser/download/download_ui_model.cc ++++ b/chrome/browser/download/download_ui_model.cc +@@ -40,5 +40,6 @@ + #include "net/base/mime_util.h" + #include "third_party/blink/public/common/mime_util/mime_util.h" ++#include "ui/base/clipboard/scoped_clipboard_writer.h" + #include "ui/base/l10n/l10n_util.h" + #include "ui/base/l10n/time_format.h" + #include "ui/base/text/bytes_formatting.h" +@@ -640,4 +641,5 @@ + case DownloadCommands::RETRY: + case DownloadCommands::CANCEL_DEEP_SCAN: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return true; +@@ -683,4 +685,5 @@ + case DownloadCommands::OPEN_WITH_MEDIA_APP: + case DownloadCommands::EDIT_WITH_MEDIA_APP: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return false; +@@ -741,4 +744,9 @@ + ui::PAGE_TRANSITION_LINK, false), + /*navigation_handle_callback=*/{}); + break; ++ case DownloadCommands::COPY_DOWNLOAD_LINK: { ++ ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste); ++ scw.WriteText(base::UTF8ToUTF16(GetURL().spec())); ++ break; ++ } + case DownloadCommands::OPEN_SAFE_BROWSING_SETTING: +--- a/chrome/browser/download/download_item_model.cc ++++ b/chrome/browser/download/download_item_model.cc +@@ -713,4 +713,5 @@ + case DownloadCommands::RETRY: + case DownloadCommands::CANCEL_DEEP_SCAN: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return DownloadUIModel::IsCommandEnabled(download_commands, command); +@@ -757,4 +758,5 @@ + case DownloadCommands::OPEN_WITH_MEDIA_APP: + case DownloadCommands::EDIT_WITH_MEDIA_APP: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return false; +@@ -865,5 +866,6 @@ + case DownloadCommands::OPEN_WITH_MEDIA_APP: + case DownloadCommands::EDIT_WITH_MEDIA_APP: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + DownloadUIModel::ExecuteCommand(download_commands, command); + break; +--- a/chrome/browser/download/offline_item_model.cc ++++ b/chrome/browser/download/offline_item_model.cc +@@ -334,4 +334,5 @@ + case DownloadCommands::RETRY: + case DownloadCommands::CANCEL_DEEP_SCAN: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return DownloadUIModel::IsCommandEnabled(download_commands, command); +@@ -370,4 +371,5 @@ + case DownloadCommands::OPEN_WITH_MEDIA_APP: + case DownloadCommands::EDIT_WITH_MEDIA_APP: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + return false; +@@ -404,5 +405,6 @@ + case DownloadCommands::OPEN_WITH_MEDIA_APP: + case DownloadCommands::EDIT_WITH_MEDIA_APP: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + DownloadUIModel::ExecuteCommand(download_commands, command); + break; +--- a/chrome/browser/download/download_stats.h ++++ b/chrome/browser/download/download_stats.h +@@ -196,5 +196,7 @@ + // kReviewEnabled = 34, + // kReviewClicked = 35, + kNotReached = 36, // Should not be possible to hit +- kMaxValue = kNotReached ++ kCopyDownloadLinkEnabled = 37, ++ kCopyDownloadLinkClicked = 38, ++ kMaxValue = kCopyDownloadLinkClicked + }; +--- a/chrome/browser/download/download_stats.cc ++++ b/chrome/browser/download/download_stats.cc +@@ -162,5 +162,8 @@ + case DownloadCommands::BYPASS_DEEP_SCANNING_AND_OPEN: + return clicked ? DownloadUiContextMenuAction::kBypassDeepScanningClicked + : DownloadUiContextMenuAction::kBypassDeepScanningEnabled; ++ case DownloadCommands::Command::COPY_DOWNLOAD_LINK: ++ return clicked ? DownloadUiContextMenuAction::kCopyDownloadLinkClicked ++ : DownloadUiContextMenuAction::kCopyDownloadLinkEnabled; + + // The following are not actually visible in the context menu so should +--- a/chrome/browser/download/bubble/download_bubble_ui_controller.cc ++++ b/chrome/browser/download/bubble/download_bubble_ui_controller.cc +@@ -334,5 +334,6 @@ + case DownloadCommands::CANCEL_DEEP_SCAN: + case DownloadCommands::OPEN_SAFE_BROWSING_SETTING: + case DownloadCommands::OPEN_HELIUM_SERVICES: ++ case DownloadCommands::COPY_DOWNLOAD_LINK: + commands.ExecuteCommand(command); + break; +--- a/chrome/browser/download/download_ui_context_menu.cc ++++ b/chrome/browser/download/download_ui_context_menu.cc +@@ -192,4 +192,7 @@ + case DownloadCommands::BYPASS_DEEP_SCANNING_AND_OPEN: + id = IDS_OPEN_DOWNLOAD_NOW; + break; ++ case DownloadCommands::COPY_DOWNLOAD_LINK: ++ id = IDS_DOWNLOAD_MENU_COPY_LINK; ++ break; + // These commands are not supported on the context menu. +@@ -240,4 +243,7 @@ + in_progress_download_menu_model_->AddItem( + DownloadCommands::PAUSE, GetLabelForCommandId(DownloadCommands::PAUSE)); + ++ in_progress_download_menu_model_->AddItem( ++ DownloadCommands::COPY_DOWNLOAD_LINK, ++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK)); + if (is_download) { +@@ -273,4 +279,7 @@ + in_progress_download_paused_menu_model_->AddItem( + DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME)); + ++ in_progress_download_paused_menu_model_->AddItem( ++ DownloadCommands::COPY_DOWNLOAD_LINK, ++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK)); + if (is_download) { +@@ -313,4 +322,7 @@ + finished_download_menu_model_->AddItem( + DownloadCommands::SHOW_IN_FOLDER, + GetLabelForCommandId(DownloadCommands::SHOW_IN_FOLDER)); ++ finished_download_menu_model_->AddItem( ++ DownloadCommands::COPY_DOWNLOAD_LINK, ++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK)); + finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR); +@@ -334,3 +346,6 @@ + interrupted_download_menu_model_->AddItem( + DownloadCommands::RESUME, GetLabelForCommandId(DownloadCommands::RESUME)); ++ interrupted_download_menu_model_->AddItem( ++ DownloadCommands::COPY_DOWNLOAD_LINK, ++ GetLabelForCommandId(DownloadCommands::COPY_DOWNLOAD_LINK)); + #if BUILDFLAG(IS_WIN) +--- a/chrome/app/generated_resources.grd ++++ b/chrome/app/generated_resources.grd +@@ -2745,6 +2745,10 @@ + desc="Download context menu: Resume download"> + &Resume + ++ ++ Copy link ++ + + &Discard diff --git a/patches/series b/patches/series index 172fa4feb..264e2687b 100644 --- a/patches/series +++ b/patches/series @@ -244,6 +244,7 @@ helium/ui/remove-dead-toolbar-actions.patch helium/ui/remove-dead-profile-actions.patch helium/ui/clean-up-installed-extension-bubble.patch helium/ui/add-specific-error-for-disabled-extension-downloads.patch +helium/ui/add-copy-download-link-context-menu.patch helium/ui/selected-keyword-view.patch helium/ui/bookmark-button-bg-fix.patch helium/ui/restyle-ntp-tiles.patch