| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_TEST_SHELL_DELEGATE_H_ |
| #define ASH_TEST_SHELL_DELEGATE_H_ |
| |
| #include<memory> |
| #include<optional> |
| #include<string> |
| #include<utility> |
| |
| #include"ash/public/cpp/tab_strip_delegate.h" |
| #include"ash/shell_delegate.h" |
| #include"base/functional/callback.h" |
| #include"base/memory/raw_ptr.h" |
| #include"chromeos/ash/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h" |
| #include"mojo/public/cpp/bindings/pending_receiver.h" |
| #include"services/network/test/test_shared_url_loader_factory.h" |
| #include"url/gurl.h" |
| |
| classPrefService; |
| |
| namespace ash{ |
| |
| classUserEducationDelegate; |
| classWindowState; |
| |
| classTestShellDelegate:publicShellDelegate{ |
| public: |
| TestShellDelegate(); |
| |
| TestShellDelegate(constTestShellDelegate&)=delete; |
| TestShellDelegate&operator=(constTestShellDelegate&)=delete; |
| |
| ~TestShellDelegate()override; |
| |
| int open_feedback_dialog_call_count()const{ |
| return open_feedback_dialog_call_count_; |
| } |
| |
| // Allows tests to override the MultiDeviceSetup binding behavior for this |
| // TestShellDelegate. |
| usingMultiDeviceSetupBinder=base::RepeatingCallback<void( |
| mojo::PendingReceiver<multidevice_setup::mojom::MultiDeviceSetup>)>; |
| voidSetMultiDeviceSetupBinder(MultiDeviceSetupBinder binder){ |
| multidevice_setup_binder_= std::move(binder); |
| } |
| |
| // Allows tests to override the `UserEducationDelegate` creation behavior for |
| // this `TestShellDelegate`. |
| usingUserEducationDelegateFactory= |
| base::RepeatingCallback<std::unique_ptr<UserEducationDelegate>()>; |
| voidSetUserEducationDelegateFactory(UserEducationDelegateFactory factory){ |
| user_education_delegate_factory_= std::move(factory); |
| } |
| |
| // Allows tests to override and mock `SendSpecializedFeatureFeedback`. |
| // For example: |
| // base::MockCallback< |
| // TestShellDelegate::SendSpecializedFeatureFeedbackCallback> cb; |
| // EXPECT_CALL(cb, Run(_, kProductId, _, _, _)); |
| // shell_delegate.SetSendSpecializedFeatureFeedbackCallback(cb.Get()); |
| usingSendSpecializedFeatureFeedbackCallback= |
| base::RepeatingCallback<bool(constAccountId& account_id, |
| int product_id, |
| std::string description, |
| std::optional<std::string> image, |
| std::optional<std::string> image_mime_type)>; |
| voidSetSendSpecializedFeatureFeedbackCallback( |
| SendSpecializedFeatureFeedbackCallback cb){ |
| send_specialized_feature_feedback_callback_= std::move(cb); |
| } |
| |
| // Overridden from ShellDelegate: |
| boolCanShowWindowForUser(const aura::Window* window)constoverride; |
| std::unique_ptr<CaptureModeDelegate>CreateCaptureModeDelegate( |
| PrefService* local_state)constoverride; |
| std::unique_ptr<ClipboardHistoryControllerDelegate> |
| CreateClipboardHistoryControllerDelegate()constoverride; |
| std::unique_ptr<CoralDelegate>CreateCoralDelegate()constoverride; |
| std::unique_ptr<GameDashboardDelegate>CreateGameDashboardDelegate() |
| constoverride; |
| std::unique_ptr<AcceleratorPrefsDelegate>CreateAcceleratorPrefsDelegate() |
| constoverride; |
| AccessibilityDelegate*CreateAccessibilityDelegate()override; |
| std::unique_ptr<BackGestureContextualNudgeDelegate> |
| CreateBackGestureContextualNudgeDelegate( |
| BackGestureContextualNudgeController* controller)override; |
| std::unique_ptr<MediaNotificationProvider>CreateMediaNotificationProvider() |
| override; |
| std::unique_ptr<NearbyShareDelegate>CreateNearbyShareDelegate( |
| NearbyShareController* controller)constoverride; |
| std::unique_ptr<SavedDeskDelegate>CreateSavedDeskDelegate()constoverride; |
| std::unique_ptr<SystemSoundsDelegate>CreateSystemSoundsDelegate() |
| constoverride; |
| std::unique_ptr<api::TasksDelegate>CreateTasksDelegate()constoverride; |
| std::unique_ptr<TabStripDelegate>CreateTabStripDelegate()constoverride; |
| std::unique_ptr<FocusModeDelegate>CreateFocusModeDelegate()constoverride; |
| std::unique_ptr<UserEducationDelegate>CreateUserEducationDelegate() |
| constoverride; |
| std::unique_ptr<ash::ScannerDelegate>CreateScannerDelegate()constoverride; |
| scoped_refptr<network::SharedURLLoaderFactory> |
| GetBrowserProcessUrlLoaderFactory()constoverride; |
| boolCanGoBack(gfx::NativeWindow window)constoverride; |
| voidSetTabScrubberEnabled(bool enabled)override; |
| boolShouldWaitForTouchPressAck(gfx::NativeWindow window)override; |
| intGetBrowserWebUITabStripHeight()override; |
| voidOpenMultitaskingSettings()override; |
| voidBindMultiDeviceSetup( |
| mojo::PendingReceiver<multidevice_setup::mojom::MultiDeviceSetup> |
| receiver)override; |
| boolIsSessionRestoreInProgress()constoverride; |
| voidSetUpEnvironmentForLockedFullscreen( |
| constWindowState& window_state)override{} |
| const GURL&GetLastCommittedURLForWindowIfAny(aura::Window* window)override; |
| voidForceSkipWarningUserOnClose( |
| const std::vector<raw_ptr<aura::Window,VectorExperimental>>& windows) |
| override{} |
| |
| voidSetCanGoBack(bool can_go_back); |
| voidSetShouldWaitForTouchAck(bool should_wait_for_touch_ack); |
| voidSetSessionRestoreInProgress(bool in_progress); |
| boolIsLoggingRedirectDisabled()constoverride; |
| base::FilePathGetPrimaryUserDownloadsFolder()constoverride; |
| voidOpenFeedbackDialog(FeedbackSource source, |
| const std::string& description_template, |
| const std::string& category_tag)override; |
| boolSendSpecializedFeatureFeedback( |
| constAccountId& account_id, |
| int product_id, |
| std::string description, |
| std::optional<std::string> image, |
| std::optional<std::string> image_mime_type)override; |
| voidOpenProfileManager()override{} |
| voidSetLastCommittedURLForWindow(const GURL& url); |
| version_info::ChannelGetChannel()override; |
| std::stringGetVersionString()override; |
| |
| void set_channel(version_info::Channel channel){ channel_= channel;} |
| |
| void set_version_string(const std::string&string){ |
| version_string_=string; |
| } |
| |
| private: |
| // True if the current top window can go back. |
| bool can_go_back_=true; |
| |
| // True if the tab scrubber is enabled. |
| bool tab_scrubber_enabled_=true; |
| |
| // True if when performing back gesture on the top window, we should handle |
| // the event after the touch ack is received. Please refer to |
| // |BackGestureEventHandler::should_wait_for_touch_ack_| for detailed |
| // description. |
| bool should_wait_for_touch_ack_=false; |
| |
| // True if window browser sessions are restoring. |
| bool session_restore_in_progress_=false; |
| |
| MultiDeviceSetupBinder multidevice_setup_binder_; |
| UserEducationDelegateFactory user_education_delegate_factory_; |
| SendSpecializedFeatureFeedbackCallback |
| send_specialized_feature_feedback_callback_; |
| |
| scoped_refptr<network::TestSharedURLLoaderFactory> url_loader_factory_; |
| |
| GURL last_committed_url_; |
| |
| version_info::Channel channel_= version_info::Channel::UNKNOWN; |
| |
| std::string version_string_; |
| |
| int open_feedback_dialog_call_count_=0; |
| }; |
| |
| }// namespace ash |
| |
| #endif// ASH_TEST_SHELL_DELEGATE_H_ |