// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_ENTERPRISE_DATA_PROTECTION_DATA_PROTECTION_CLIPBOARD_UTILS_H_ #define CHROME_BROWSER_ENTERPRISE_DATA_PROTECTION_DATA_PROTECTION_CLIPBOARD_UTILS_H_ #include "base/feature_list.h" #include "chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h" #include "components/enterprise/common/files_scan_data.h" #include "content/public/browser/content_browser_client.h" namespace enterprise_data_protection { // This function checks if a paste is allowed to proceed according to the // following policies: // - DataLeakPreventionRulesList // - OnBulkDataEntryEnterpriseConnector // - DataControlsRules // // This function will always call `callback` after policies are evaluated with // true if the paste is allowed to proceed and false if it is not. However, if // policies indicate the paste action should receive a bypassable warning, then // `callback` will only be called after the user makes the decision to bypass // the warning or not. As such, callers should be careful not to bind data that // could become dangling as `callback` is not guaranteed to run synchronously. void PasteIfAllowedByPolicy( const content::ClipboardEndpoint& source, const content::ClipboardEndpoint& destination, const content::ClipboardMetadata& metadata, content::ClipboardPasteData clipboard_paste_data, content::ContentBrowserClient::IsClipboardPasteAllowedCallback callback); // This function checks if data copied from a browser tab is allowed to be // written to the OS clipboard according to the following policies: // - CopyPreventionSettings // - DataControlsRules // // If the copy is not allowed, `callback` is called with a replacement string // that should instead be put into the OS clipboard. void IsClipboardCopyAllowedByPolicy( const content::ClipboardEndpoint& source, const content::ClipboardMetadata& metadata, const content::ClipboardPasteData& data, content::ContentBrowserClient::IsClipboardCopyAllowedCallback callback); // This function replaces sub-fields in `data` depending internally tracked // clipboard data that's been replaced due to the "DataControlsRules" policy. // This should only be called for clipboard pastes within the same tab. If // "DataControlsRules" is unset, this function does nothing. void ReplaceSameTabClipboardDataIfRequiredByPolicy( ui::ClipboardSequenceNumberToken seqno, content::ClipboardPasteData& data); } // namespace enterprise_data_protection #endif // CHROME_BROWSER_ENTERPRISE_DATA_PROTECTION_DATA_PROTECTION_CLIPBOARD_UTILS_H_