Opened on 02/13/2018 at 03:19:53 PM

Closed on 05/29/2018 at 04:52:12 PM

Last modified on 07/09/2018 at 10:52:39 AM

#6386 closed change (fixed)

Add Requests and Filters data to the Report data [Issue reporter]

Reported by: saroyanm Assignee: saroyanm
Priority: P2 Milestone:
Module: User-Interface Keywords:
Cc: wspee, greiner, agiammarchi, kzar, sebastian, sergz Blocked By: #6402
Blocking: Platform: Unknown / Cross platform
Ready: yes Confidential: no
Tester: Ross Verified working: yes
Review URL(s):

https://gitlab.com/eyeo/adblockplus/adblockplusui/merge_requests/6

Description (last modified by saroyanm)

Background

Currently the report data doesn't contain information about the Requests and Filters.

What to change

Add Requests and Filters to the report data as specified here.

Attachments (0)

Change History (22)

comment:1 Changed on 02/13/2018 at 03:22:50 PM by saroyanm

  • Description modified (diff)

comment:2 follow-up: Changed on 02/13/2018 at 06:05:56 PM by saroyanm

  • Cc kzar added

@Dave maybe you can help us here:
In order to implement this issue, UI team needs to have ability to subscribe, or somehow be notified about the Blocked Request and Element Hiding Event for a specific tab.

Having look into the implementation, it seems like the only safe and easy way to do that currently is to pretend of being devtools and listen to the Add Record event, which seems to be the easiest way to implement this with the least code duplication, but this is still a Hack.

Ideally we would be able to generalize the implementation, to avoid similar Hacks, but still before starting the implementation it definitely make sense to align with the platform team.

Question: Is there any other better/preferred (existing) way to achieve this you can think of ?

Let's start discussion and let's see how we gonna proceed here.

comment:3 in reply to: ↑ 2 ; follow-up: Changed on 02/13/2018 at 06:19:22 PM by kzar

  • Cc sebastian added

Replying to saroyanm:

In order to implement this issue, UI team needs to have ability to subscribe, or somehow be notified about the Blocked Request and Element Hiding Event for a specific tab.

So first of all have I got this right?

You want it so that when the user clicks to report an issue, a list of all requests that the main page (and any frames?) made, and a list of all filter hits both element hiding and request blocking for the page are included in the report data that's sent to us.

My first concern is privacy, I assume we're very clear about all this data that we're sharing? I worry a full list of requests the page made could be quite intrusive.

Having look into the implementation, it seems like the only safe and easy way to do that currently is to pretend of being devtools and listen to the Add Record event, which seems to be the easiest way to implement this with the least code duplication, but this is still a Hack.

My second concern is performance, to do this without having the user somehow refresh the page we'd have to be recording all the filter hit information at all times. We are very careful not to do this for the developer tools pane for performance reasons, instead we only do it when the developers tool pane is open.

(With the legacy Firefox extension there was a hack which allowed us to record element hiding hits quite cheaply, but that's not the case on Chrome or with the Firefox WebExtension unfortunately.)

Ideally we would be able to generalize the implementation, to avoid similar Hacks, but still before starting the implementation it definitely make sense to align with the platform team.

Yes, it certainly sounds like a good idea to think it through together. Sebastian is probably the best person to offer some ideas, I've copied him in as well.

comment:4 in reply to: ↑ 3 Changed on 02/13/2018 at 06:38:54 PM by saroyanm

Replying to kzar:

Replying to saroyanm:

In order to implement this issue, UI team needs to have ability to subscribe, or somehow be notified about the Blocked Request and Element Hiding Event for a specific tab.

So first of all have I got this right?

You want it so that when the user clicks to report an issue, a list of all requests that the main page (and any frames?) made, and a list of all filter hits both element hiding and request blocking for the page are included in the report data that's sent to us.

Right

My first concern is privacy, I assume we're very clear about all this data that we're sharing? I worry a full list of requests the page made could be quite intrusive.

The data can be viewed before sending by clicking on Show report data button which opens current overlay, before clicking Send Report.

Having look into the implementation, it seems like the only safe and easy way to do that currently is to pretend of being devtools and listen to the Add Record event, which seems to be the easiest way to implement this with the least code duplication, but this is still a Hack.

My second concern is performance, to do this without having the user somehow refresh the page we'd have to be recording all the filter hit information at all times. We are very careful not to do this for the developer tools pane for performance reasons, instead we only do it when the developers tool pane is open.
(With the legacy Firefox extension there was a hack which allowed us to record element hiding hits quite cheaply, but that's not the case on Chrome or with the Firefox WebExtension unfortunately.)

There were couple of suggestions/ideas how to do that:

  • Reload the page (which you mentioned and how currently specified)
  • Open page in the iframe in issue reporter page

Ideally we would be able to generalize the implementation, to avoid similar Hacks, but still before starting the implementation it definitely make sense to align with the platform team.

Yes, it certainly sounds like a good idea to think it through together. Sebastian is probably the best person to offer some ideas, I've copied him in as well.

comment:5 Changed on 02/13/2018 at 07:02:22 PM by agiammarchi

There were couple of suggestions/ideas how to do that:

Three, actually:

  • open the page in a non active tab (preserve top/parent behavior) with tracking enabled and close it after N seconds (or onload)

Security concerns are legit, but shouldn't we report only things that have been filtered?

I don't think we'd be interested in other resources, unless we want to investigate if it's a third parts issue (but I don't think that's our responsibility) ... thoughts?

Last edited on 02/13/2018 at 07:05:42 PM by agiammarchi

comment:6 Changed on 02/14/2018 at 04:11:39 PM by greiner

RE: Privacy
I'd like to add that all we're trying to accomplish here is restore functionality that was already present in the legacy Firefox version.

RE: Performance
One misunderstanding I'd like to clarify is that (a) it's the issue reporter who'd register itself as a devtools panel and (b) it would only register itself as a devtools panel when the user opens it.

comment:7 follow-up: Changed on 02/14/2018 at 04:25:00 PM by kzar

One misunderstanding I'd like to clarify is that (a) it's the issue reporter who'd register itself as a devtools panel and (b) it would only register itself as a devtools panel when the user opens it.

I'm glad to hear it, but in that case by that point the user reports a problem we've already missed the relevant filter hits and requests. So the plan is to also go with one of Manvel or Andrea's suggestions e.g. refreshing the website?

comment:8 in reply to: ↑ 7 Changed on 02/14/2018 at 04:26:00 PM by greiner

Replying to kzar:

I'm glad to hear it, but in that case by that point the user reports a problem we've already missed the relevant filter hits and requests. So the plan is to also go with one of Manvel or Andrea's suggestions e.g. refreshing the website?

Exactly.

comment:9 Changed on 02/14/2018 at 06:45:20 PM by kzar

Alright then I think we're on the same page.

I think Manvel's right about splitting off the request / filter hit watching logic into a a separate API which can be used by both our devtools pane and the issue reporter. I'll open a blocking issue for that tomorrow.

comment:10 Changed on 02/21/2018 at 12:25:42 PM by kzar

  • Blocked By 6402 added

comment:11 Changed on 03/01/2018 at 04:06:12 PM by sergz

  • Cc sergz added

comment:12 Changed on 03/19/2018 at 03:09:39 PM by saroyanm

  • Description modified (diff)

updated the specs link

comment:13 Changed on 04/05/2018 at 01:55:53 PM by saroyanm

  • Priority changed from Unknown to P2
  • Ready set

comment:14 Changed on 04/05/2018 at 01:56:14 PM by saroyanm

  • Description modified (diff)

comment:15 Changed on 04/06/2018 at 03:23:18 PM by saroyanm

  • Owner set to saroyanm

comment:16 Changed on 04/09/2018 at 03:18:46 PM by saroyanm

  • Review URL(s) modified (diff)
  • Status changed from new to reviewing

comment:17 Changed on 04/12/2018 at 05:09:55 PM by saroyanm

  • Blocked By 6582 added

comment:18 Changed on 04/17/2018 at 04:44:25 AM by sebastian

  • Blocked By 6582 removed

comment:19 Changed on 05/29/2018 at 04:52:12 PM by saroyanm

  • Resolution set to fixed
  • Status changed from reviewing to closed

comment:20 Changed on 05/30/2018 at 02:56:10 PM by abpbot

A commit referencing this issue has landed:
Issue 6386 - Add Requests and Filters data to the Report data

comment:21 Changed on 06/01/2018 at 04:50:56 PM by greiner

See also #5892.

comment:22 Changed on 07/09/2018 at 10:52:39 AM by Ross

  • Tester changed from Unknown to Ross
  • Verified working set

Done. This appears to be working as expected.

ABP 3.1.0.2069
Chrome 67 / 64 / 49 / Windows 7
Firefox 60 / 55 / 51 / Windows 7
Opera 52 / 45 / 38 / Windows 7

Add Comment

Modify Ticket

Change Properties
Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from saroyanm.
 
Note: See TracTickets for help on using tickets.