[ios] Avoid unnecessary copies of GURL and std::string
Change TabResumptionItem to return tabURL and URLKey by
const reference instead of copies. This avoid unnecessary
copies when repeatedly accessing those properties (as is
done in -[TabResumptionMediator fetchSnapshotForItem:]).
Bug: none
Change-Id: I57a6652be9b79acd3467dc275b4ed67ac13b1a69
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5640159
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Auto-Submit: Sylvain Defresne <sdefresne@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Quentin Pubert <qpubert@google.com>
Commit-Queue: Quentin Pubert <qpubert@google.com>
Cr-Commit-Position: refs/heads/main@{#1316958}
diff --git a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.h b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.h
index 4d3ad1c..23c875c 100644
--- a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.h
+++ b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.h
@@ -7,6 +7,8 @@
#import <UIKit/UIKit.h>
+#import <string>
+
#import "components/segmentation_platform/public/trigger.h"
#import "ios/chrome/browser/ui/content_suggestions/magic_stack/magic_stack_module.h"
@@ -39,7 +41,7 @@
@property(nonatomic, copy) NSString* tabTitle;
// The URL of the tab.
-@property(nonatomic, assign) GURL tabURL;
+@property(nonatomic, assign) const GURL& tabURL;
// The time when the tab was synced.
@property(nonatomic, assign) base::Time syncedTime;
@@ -54,7 +56,7 @@
@property(nonatomic, weak) id<TabResumptionCommands> commandHandler;
// The URL key used to log metrics when displaying or activating the item.
-@property(nonatomic, assign) std::string URLKey;
+@property(nonatomic, assign) const std::string& URLKey;
// An ID used to collect metrics associated with the triggering visit for model
// training purposes.
diff --git a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.mm b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.mm
index 3aec943..86416e98 100644
--- a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.mm
+++ b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.mm
@@ -4,11 +4,16 @@
#import "ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item.h"
+#import <string>
+
#import "base/time/time.h"
#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_constants.h"
#import "url/gurl.h"
-@implementation TabResumptionItem
+@implementation TabResumptionItem {
+ GURL _tabURL;
+ std::string _URLKey;
+}
- (instancetype)initWithItemType:(TabResumptionItemType)itemType {
if ((self = [super init])) {
@@ -36,4 +41,22 @@
_requestID = item.requestID;
}
+#pragma mark - properties
+
+- (const GURL&)tabURL {
+ return _tabURL;
+}
+
+- (void)setTabURL:(const GURL&)tabURL {
+ _tabURL = tabURL;
+}
+
+- (const std::string&)URLKey {
+ return _URLKey;
+}
+
+- (void)setURLKey:(const std::string&)URLKey {
+ _URLKey = URLKey;
+}
+
@end
diff --git a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item_unittest.mm b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item_unittest.mm
index 929a268..707744f 100644
--- a/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item_unittest.mm
+++ b/ios/chrome/browser/ui/content_suggestions/tab_resumption/tab_resumption_item_unittest.mm
@@ -37,7 +37,7 @@
item.faviconImage = DefaultSettingsRootSymbol(@"circle");
item.contentImage = DefaultSettingsRootSymbol(@"flame");
item.commandHandler = command_handler;
- item.URLKey = "url key a";
+ item.URLKey = std::string("url key a");
item.requestID = segmentation_platform::TrainingRequestId::FromUnsafeValue(1);
TabResumptionItem* item2 = [[TabResumptionItem alloc]
@@ -49,7 +49,7 @@
item2.faviconImage = DefaultSettingsRootSymbol(@"link");
item2.contentImage = DefaultSettingsRootSymbol(@"trash");
item2.commandHandler = command_handler;
- item2.URLKey = "url key b";
+ item2.URLKey = std::string("url key b");
item2.requestID =
segmentation_platform::TrainingRequestId::FromUnsafeValue(2);