New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 738164 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Feature



Sign in to add a comment

Tracking Bug for FeatureEngagementTracker Integration

Project Member Reported by cooperknaak@google.com, Jun 29 2017

Issue description

Add FeatureEngagementTracker event constants and notifications.
 
Status: Assigned (was: Untriaged)
Components: UI>Browser>Core
Project Member

Comment 3 by sheriffbot@chromium.org, Jul 11 2017

Labels: Hotlist-Google
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/12a4c7d04a6d64bdfd6e1f91f28ccc0e77a7142b

commit 12a4c7d04a6d64bdfd6e1f91f28ccc0e77a7142b
Author: Cooper Knaak <cooperknaak@google.com>
Date: Tue Jul 11 17:56:07 2017

[iOS] FeatureEngagementTracker Event Constants

Added string event constants for use with FeatureEngagementTracker
functions.

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: I68e0a7d5f3e8d89aa033f6e5084c761f840564b0
Reviewed-on: https://chromium-review.googlesource.com/556392
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#485674}
[modify] https://crrev.com/12a4c7d04a6d64bdfd6e1f91f28ccc0e77a7142b/components/feature_engagement_tracker/public/event_constants.cc
[modify] https://crrev.com/12a4c7d04a6d64bdfd6e1f91f28ccc0e77a7142b/components/feature_engagement_tracker/public/event_constants.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3580a13d6b6aedde1e26c9d1850505760587c736

commit 3580a13d6b6aedde1e26c9d1850505760587c736
Author: Cooper Knaak <cooperknaak@google.com>
Date: Tue Jul 11 18:01:08 2017

[iOS] FeatureEngagementTracker Feature Constants

Added base::Feature constants for FeatureEngagementTracker IPH events.

Bug:  738164 
Change-Id: I26120c392dc721451d13ecfd9dc9652ad87b5b8d
Reviewed-on: https://chromium-review.googlesource.com/556355
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#485676}
[modify] https://crrev.com/3580a13d6b6aedde1e26c9d1850505760587c736/components/feature_engagement_tracker/public/feature_constants.cc
[modify] https://crrev.com/3580a13d6b6aedde1e26c9d1850505760587c736/components/feature_engagement_tracker/public/feature_constants.h

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6d8914edcc6f1578918efdd468a3cd578907243c

commit 6d8914edcc6f1578918efdd468a3cd578907243c
Author: Cooper Knaak <cooperknaak@google.com>
Date: Wed Jul 12 02:27:27 2017

[iOS] Notify FeatureEngagementTracker of Viewed Reading List Event

This CL sends a notification to the FeatureEngagementTracker when the
user opens their reading list. The event call was added to
ReadingListCoordinator because it handles the final step in actually
presenting the reading list. Although there is currently only one
entry point for the reading list, potential future entry points will
still use the ReadingListCoordinator, therefore still triggering the
event.

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: I15d9ad7a79b070cb78511873cbecf86d73b05a2d
Reviewed-on: https://chromium-review.googlesource.com/562640
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Eric Noyau <noyau@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#485803}
[modify] https://crrev.com/6d8914edcc6f1578918efdd468a3cd578907243c/ios/chrome/browser/ui/reading_list/BUILD.gn
[modify] https://crrev.com/6d8914edcc6f1578918efdd468a3cd578907243c/ios/chrome/browser/ui/reading_list/reading_list_coordinator.mm

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/664d36f1ccbdec27fee3ca82c40b34de6e314561

commit 664d36f1ccbdec27fee3ca82c40b34de6e314561
Author: Cooper Knaak <cooperknaak@google.com>
Date: Wed Jul 12 04:15:11 2017

[iOS] FeatureEngagementTracker Demo Mode Features

Added constants to FeatureEngagementTracker demo arrays. This allows
the tracker's demo mode to interact with the new features.

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: Ib29370c7d8e68af2021b8e8b77c78270cf86b577
Reviewed-on: https://chromium-review.googlesource.com/556466
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#485846}
[modify] https://crrev.com/664d36f1ccbdec27fee3ca82c40b34de6e314561/components/feature_engagement_tracker/public/feature_list.cc
[modify] https://crrev.com/664d36f1ccbdec27fee3ca82c40b34de6e314561/components/feature_engagement_tracker/public/feature_list.h
[modify] https://crrev.com/664d36f1ccbdec27fee3ca82c40b34de6e314561/tools/metrics/actions/actions.xml
[modify] https://crrev.com/664d36f1ccbdec27fee3ca82c40b34de6e314561/tools/metrics/histograms/histograms.xml

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/82a2c848d4c34accb64dd2cdeed583bd831d4a05

commit 82a2c848d4c34accb64dd2cdeed583bd831d4a05
Author: Cooper Knaak <cooperknaak@google.com>
Date: Fri Jul 14 02:42:40 2017

[iOS] Notify FeatureEngagementTracker of Chrome Opened Event

This CL sends a notification to the FeatureEngagementTracker when
the user opens Chrome both from a cold start and a warm start.

Warm starts include backgrounding the app and reopening it, launching
another app from Chrome and returning to it, and locking then unlocking
the screen when Chrome is in the foreground.

-[AppState applicationWillEnterForeground: ... ] handles the warm
start event because it is called whenever the app is taken out of
the background (except on the initial launch, which is a cold start).

The cold start event must occur in the startup flow, a complex process,
so finding a good place for the notification is tricky. It needs to
be called exactly once, and it needs a ChromeBrowserState object.
-[MainController startUpBrowserForegroundInitialization] was chosen
for a couple reasons.
 * It's called as part of the startup flow (necessary to make the
   chrome launched event accurate).
 * It's only called once. startUpBrowserToStage, which calls
   startUpBrowserForegroundInitialization, keeps track of what stage
   of initialization the app is in and makes sure it is not called
   twice.
 * This is where the ChromeBrowserState object is initialized. The
   FeatureEngagementTrackerFactory uses ChromeBrowserState to store
   and retrieve the FeatureEngagementTracker.

Locking then unlocking the screen with Chrome in the foreground is
considered a warm start because applicationWillEnterForeground is
called. Although this is not necessarily desired behavior, there's no
way to determine whether the app is returning from the lock screen.
This slightly increases the potential number of times the Chrome
Opened Event is fired, so in-product help promotions relying on this
event should increase the number of times this event must have fired
to compensate.

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: I656297a800600672931c785fcac0fd6dcd4996aa
Reviewed-on: https://chromium-review.googlesource.com/558666
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486644}
[modify] https://crrev.com/82a2c848d4c34accb64dd2cdeed583bd831d4a05/ios/chrome/app/BUILD.gn
[modify] https://crrev.com/82a2c848d4c34accb64dd2cdeed583bd831d4a05/ios/chrome/app/DEPS
[modify] https://crrev.com/82a2c848d4c34accb64dd2cdeed583bd831d4a05/ios/chrome/app/application_delegate/BUILD.gn
[modify] https://crrev.com/82a2c848d4c34accb64dd2cdeed583bd831d4a05/ios/chrome/app/application_delegate/app_state.mm
[modify] https://crrev.com/82a2c848d4c34accb64dd2cdeed583bd831d4a05/ios/chrome/app/main_controller.mm

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4af07e745f40672da0cca6f665b7c89750208010

commit 4af07e745f40672da0cca6f665b7c89750208010
Author: Cooper Knaak <cooperknaak@google.com>
Date: Tue Jul 18 17:15:03 2017

[iOS] Notify FeatureEngagementTracker of Cleared Browsing Data Event

This CL sends a notification to FeatureEngagementTracker when the
user clears their browsing data. The notification was added to
-[ClearBrowsingDataCollectionViewController clearDataForDataTypes:]
because both entry points (History and Settings page) use this code
path. The notification was not added to
-[MainController chromeExecuteCommand:], despite it ultimately being
the place that executes the action, because chromeExecuteCommand also
is used for non-user initiated actions (such as clearing the browser
data on sign out). Non-user initiated actions should not be logged
by the FeatureEngagementTracker because that would interfere with the
ability to present in-product help promotions to users who haven't
used a given feature.

Bug:  738164 
Change-Id: I7f79b724757fc990f93cdaff95c5bfa44f10c36f
Reviewed-on: https://chromium-review.googlesource.com/560721
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#487510}
[modify] https://crrev.com/4af07e745f40672da0cca6f665b7c89750208010/ios/chrome/browser/ui/settings/BUILD.gn
[modify] https://crrev.com/4af07e745f40672da0cca6f665b7c89750208010/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm

Project Member

Comment 10 by bugdroid1@chromium.org, Jul 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/787371fc01d2692056ecc182f2bba9a9b28dcb90

commit 787371fc01d2692056ecc182f2bba9a9b28dcb90
Author: Cooper Knaak <cooperknaak@google.com>
Date: Thu Jul 20 00:00:28 2017

[iOS] Remove Unnecessary FeatureEngagementTracker Event Constants

Remove the event constants for "opened reading list item" and
"added item to reading list". Originally used for in-product help, it
was realized on further review that these events aren't useful in
determining who should be shown in-product help relating to the
reading list.

R=edchin@chromium.org, gchatz@chromium.org, nyquist@chromium.org

Bug:  738164 
Change-Id: I95fb3222b62fe6d54cc2914f7d1a63480cece5f9
Reviewed-on: https://chromium-review.googlesource.com/571300
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Cr-Commit-Position: refs/heads/master@{#488052}
[modify] https://crrev.com/787371fc01d2692056ecc182f2bba9a9b28dcb90/components/feature_engagement_tracker/public/event_constants.cc
[modify] https://crrev.com/787371fc01d2692056ecc182f2bba9a9b28dcb90/components/feature_engagement_tracker/public/event_constants.h

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9ae6b4f4a8679c8598316544dccf378b86f99845

commit 9ae6b4f4a8679c8598316544dccf378b86f99845
Author: Cooper Knaak <cooperknaak@google.com>
Date: Tue Jul 25 18:56:00 2017

[iOS] Add New Tab and Incognito Tab FeatureEngagementTracker Calls

This CL adds FeatureEngagementTracker NotifyEvent calls for the "New Tab
Opened" and "New Incognito Tab Opened" events. Only new tab events
explicitly initiated by the user from inside of Chrome count as new tab
events. For example, opening a new tab from the tools menu counts but
opening a URL in Chrome from another app does not (because the new tab
is a side effect of the user's action). The purpose of the new tab events
is to determine whether users know how to handle tabs via the in-app UI.
New tabs created from outside the app do not demonstrate this, so they
are excluded from event calls. Opening a URL from another app or opening
a tab from a Javascript action are also out of the user's control and
don't show they know how to use the UI.

There are many entry points for creating a new tab. Although there is a
shared code path, -[TabModel insertTabWithLoadParams:...], this method
is also called on Chrome startup. This would cause the event to always
fire. That would cause the in-product help to never show, so the call
must be placed in the individual entry points.

BVC has two version of webPageOrderedOpen, one which includes an
inIncognito parameter and one that does not. This parameter is used
to determine whether the "New Tab" or "Incognito Tab" events should be
fired, so some calls to webPageOrderedOpen were changed to call the
inIncognito version.

Tab Entry Points:
 * -[BrowserViewController openNewTab:]
   * New Tab item in the tools menu
   * New Incognito Tab item in the tools menu
   * Overscroll Action on NTP
   * Overscroll Action in BVC
   * Overscroll Action in incognito BVC
 * -[StackViewController openNewTab:]
   * New Tab button in the tab switcher
   * New Tab item in the tools menu (while the tab switcher is visible)
   * New Incognito Tab item in the tools menu (while tab switcher is
       visible)
 * -[BrowserViewController webPageOrderedOpen: ... ]
   * Open in New Tab button in the context menu (long press on a link)
   * Open in New Incognito Tab button in the context menu (long press on
       a link)
 * -[TabSwitcherController openNewTab:]
   * iPad New Tab Button (visible when there are no open tabs).

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: I276c4930acac7735b40fbcc87687d866215dd4bc
Reviewed-on: https://chromium-review.googlesource.com/575807
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Kurt Horimoto <kkhorimoto@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489391}
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/components/feature_engagement_tracker/public/event_constants.h
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/feature_engagement_tracker/BUILD.gn
[add] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/feature_engagement_tracker/feature_engagement_tracker_util.h
[add] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/feature_engagement_tracker/feature_engagement_tracker_util.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/browser_view_controller.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/commands/open_new_tab_command.h
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/commands/open_new_tab_command.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/ntp/google_landing_view_controller.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/stack_view/BUILD.gn
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/stack_view/stack_view_controller.mm
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/tab_switcher/BUILD.gn
[modify] https://crrev.com/9ae6b4f4a8679c8598316544dccf378b86f99845/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm

Project Member

Comment 12 by bugdroid1@chromium.org, Jul 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1e0265624fd3c1b073341398a0bf3d9046c8df7d

commit 1e0265624fd3c1b073341398a0bf3d9046c8df7d
Author: Cooper Knaak <cooperknaak@google.com>
Date: Wed Jul 26 05:22:28 2017

[iOS] FeatureEngagementTracker Demo Mode chrome://flags

Add flag to chrome://flags to enable FeatureEngagementTracker demo mode.
After enabling demo mode, Chrome must be restarted. Demo mode can be
enabled for all promotions or for each feature on an individual basis.
If enabled for all features, every feature is triggered exactly once.
If enabled for an individual feature, that feature is triggered
exactly once, but other features do not trigger.

R=edchin@chromium.org, gchatz@chromium.org

Bug:  738164 
Change-Id: Icc5c35149ff9e09129e2f037fc9289498608cdd4
Reviewed-on: https://chromium-review.googlesource.com/583427
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: Eugene But <eugenebut@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489556}
[modify] https://crrev.com/1e0265624fd3c1b073341398a0bf3d9046c8df7d/ios/chrome/browser/BUILD.gn
[modify] https://crrev.com/1e0265624fd3c1b073341398a0bf3d9046c8df7d/ios/chrome/browser/about_flags.mm
[modify] https://crrev.com/1e0265624fd3c1b073341398a0bf3d9046c8df7d/ios/chrome/browser/ios_chrome_flag_descriptions.cc
[modify] https://crrev.com/1e0265624fd3c1b073341398a0bf3d9046c8df7d/ios/chrome/browser/ios_chrome_flag_descriptions.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jul 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e4f495cfc5b0fed6002d00ee24123ee01097380c

commit e4f495cfc5b0fed6002d00ee24123ee01097380c
Author: Cooper Knaak <cooperknaak@google.com>
Date: Thu Jul 27 23:30:03 2017

[iOS] Add New Feature Badge to Reading List Tools Menu Item

Add logic to display a new feature badge on the reading list. The
ToolsMenuConfiguration class includes an option to show the badge
on the reading list cell. Although the tools menu is accessed in
multiple places, the reading list cell is only accessed from the
BVC, so that is the only place the option needs to be set.
ToolsMenuViewController reads the configuration option and
animates the new feature badge appropriately.

The new feature badge and number badge occupy the same spot on
the reading list cell, so they should not be shown at the same
time. However, there are circumstances in which it is valid to
show the new feature badge and number badge simultaneously. One
such situation is if the user has added an item to their reading
list without ever having viewed it. Because the number badge already
draws the user's attention to the reading list menu view cell, it
takes precedence over the new feature badge.

Bug:  738164 
Change-Id: I847025f2f8dbfc0333f71eb09fecb26c8d172c77
Reviewed-on: https://chromium-review.googlesource.com/570858
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490101}
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/app/strings/ios_strings.grd
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/browser_view_controller.mm
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/reading_list/number_badge_view.mm
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/tools_menu/BUILD.gn
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.h
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.mm
[add] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item_unittest.mm
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h
[modify] https://crrev.com/e4f495cfc5b0fed6002d00ee24123ee01097380c/ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.mm

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/33f9f40ea48fb9b530e65614e181d051e41b2736

commit 33f9f40ea48fb9b530e65614e181d051e41b2736
Author: Cooper Knaak <cooperknaak@google.com>
Date: Wed Aug 09 18:04:38 2017

[iOS] Implement New Tab Tip In-Product Help Promotion

Implements the new tab tip in-product help promotion. This presents a
bubble pointing at the tab switcher with text informing users that they
can open new tabs.

For modularization of future in-product help promotions that use
BubbleView, the logic to manage the bubble is isolated in the
BubbleViewControllerPresenter class. This class manages a
BubbleViewController, presenting and sizing the bubble, dismissing the
bubble via timeout, dismissing the bubble via tap (differentiating taps
inside and outside the bubble), and tracking whether the user is
"engaged" with the bubble. All objects displaying a BubbleView need to
handle these concerns so they are instead centralized in the presenter.

Tracking "engagement" is important because the bubble is presented
to inform users about features, so it is necessary to track whether
users actually use the features in question. Once the bubble is visible
and for a short period afterwards, users are considered "engaged" and
in the future metrics can be tracked to determine whether presenting
the bubble influenced users' actions.

Bug:  738164 
Change-Id: I0d7bb0d7e4ab63963e5d44915e7b5ef11217a9cb
Reviewed-on: https://chromium-review.googlesource.com/602608
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: Mark Cogan <marq@chromium.org>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493050}
[modify] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/app/strings/ios_strings.grd
[modify] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/browser/ui/browser_view_controller.mm
[modify] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/browser/ui/bubble/BUILD.gn
[add] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/browser/ui/bubble/bubble_view_controller_presenter.h
[add] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/browser/ui/bubble/bubble_view_controller_presenter.mm
[add] https://crrev.com/33f9f40ea48fb9b530e65614e181d051e41b2736/ios/chrome/browser/ui/bubble/bubble_view_controller_presenter_unittest.mm

Project Member

Comment 15 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d0a974cdaedce2180bba7ed3a892fcb3eff6abc8

commit d0a974cdaedce2180bba7ed3a892fcb3eff6abc8
Author: Cooper Knaak <cooperknaak@google.com>
Date: Thu Aug 10 18:05:47 2017

[iOS] Add UMA for Opening Tab Switcher While Engaged

Record user metric actions when the user opens the tab switcher while
considered "engaged" with an in-product help promotion bubble. These
metrics are only tracked when the user is considered "engaged" to help
determine whether the promotion influenced the user to open the tab
switcher. If the user has not seen the promotion or saw the promotion
too long ago, the metric is not logged.

Bug:  738164 
Change-Id: I0842174e2f3716f438d00ec2bac490783c7e64fb
Reviewed-on: https://chromium-review.googlesource.com/608856
Commit-Queue: Cooper Knaak <cooperknaak@google.com>
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493459}
[modify] https://crrev.com/d0a974cdaedce2180bba7ed3a892fcb3eff6abc8/ios/chrome/app/main_controller.mm
[modify] https://crrev.com/d0a974cdaedce2180bba7ed3a892fcb3eff6abc8/ios/chrome/browser/ui/browser_view_controller.h
[modify] https://crrev.com/d0a974cdaedce2180bba7ed3a892fcb3eff6abc8/ios/chrome/browser/ui/browser_view_controller.mm

Project Member

Comment 16 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/120cee5ef76db4319170fc4e2d072faa6ddc8038

commit 120cee5ef76db4319170fc4e2d072faa6ddc8038
Author: Cooper Knaak <cooperknaak@google.com>
Date: Thu Aug 10 20:57:00 2017

[iOS] Present New Tab Tip Correctly on iPad

On iPad, the TabStripController owns the tab switcher button. Make it
conform to BubbleViewAnchorPointProvider so BVC can access the anchor
point correctly on iPhone and iPad.

Bug:  738164 
Change-Id: I1b2cde83eec24019fb14f4a6cad3604e4bb1a5be
Reviewed-on: https://chromium-review.googlesource.com/609590
Reviewed-by: Ed Chin <edchin@chromium.org>
Reviewed-by: Gregory Chatzinoff <gchatz@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Commit-Queue: Ed Chin <edchin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493538}
[modify] https://crrev.com/120cee5ef76db4319170fc4e2d072faa6ddc8038/ios/chrome/browser/ui/browser_view_controller.mm
[modify] https://crrev.com/120cee5ef76db4319170fc4e2d072faa6ddc8038/ios/chrome/browser/ui/bubble/bubble_view_anchor_point_provider.h
[modify] https://crrev.com/120cee5ef76db4319170fc4e2d072faa6ddc8038/ios/chrome/browser/ui/tabs/BUILD.gn
[modify] https://crrev.com/120cee5ef76db4319170fc4e2d072faa6ddc8038/ios/chrome/browser/ui/tabs/tab_strip_controller.h
[modify] https://crrev.com/120cee5ef76db4319170fc4e2d072faa6ddc8038/ios/chrome/browser/ui/tabs/tab_strip_controller.mm

Cc: gch...@chromium.org edchin@chromium.org
Status: Fixed (was: Assigned)

Sign in to add a comment