Clear Pip View

Clear Pip View

ID: dcmdiknbnpjcbecpfpipeadobeldbijh

Supported Languages

🇪🇹Amharic
🇸🇦Arabic
🇧🇩Bengali
🇧🇷Brazilian Portuguese
🇬🇧British English
🇧🇬Bulgarian
🇪🇸Catalan
🇨🇳Chinese (Simplified)
🇹🇼Chinese (Traditional)
🇭🇷Croatian
🇨🇿Czech
🇩🇰Danish
🇳🇱Dutch
🇺🇸English
🇪🇪Estonian
🇵🇭Filipino
🇫🇮Finnish
🇫🇷French
🇩🇪German
🇬🇷Greek
🇮🇳Gujarati
🇮🇱Hebrew
🇮🇳Hindi
🇭🇺Hungarian
🇮🇩Indonesian
🇮🇹Italian
🇯🇵Japanese
🇮🇳Kannada
🇰🇷Korean
🇲🇽Latin American Spanish
🇱🇻Latvian
🇱🇹Lithuanian
🇲🇾Malay
🇮🇳Malayalam
🇮🇳Marathi
🇳🇴Norwegian
🇮🇷Persian
🇵🇱Polish
🇵🇹Portuguese
🇷🇴Romanian
🇷🇺Russian
🇷🇸Serbian
🇸🇰Slovak
🇸🇮Slovenian
🇪🇸Spanish
🇰🇪Swahili
🇸🇪Swedish
🇮🇳Tamil
🇮🇳Telugu
🇹🇭Thai
🇹🇷Turkish
🇺🇦Ukrainian
🇺🇸US English
🇻🇳Vietnamese

Extension Info & Metadata

Status
Active
Version
1.0.0
Size
0.10 MB
Rating
4.9/5
Reviews
39
Users
20,000
Type
Extension
Updated
Feb 18, 2025
Category
Workflow & planning
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
Terens HaynesView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
1
Obsolete
0
Listed
1
Unlisted
0
Total Users
20,000
Screenshot 1

Enhance Your Viewing Experience with Clear Pip View: Picture-in-Picture (PiP) Made Crystal Clear!

Are you tired of constantly switching between tabs to watch videos while browsing? Clear Pip View is here to revolutionize your online video experience. With our browser extension, you can seamlessly activate Picture-in-Picture (PiP) mode and enjoy your favorite videos without sacrificing screen space or efficiency. Key Features: Activate PiP mode via toolbar icon: Smart Pip View offers a user-friendly toolbar icon that allows you to instantly activate PiP mode with a single click. Say goodbye to manual resizing and struggling to fit videos on your screen. Icons in video player on major platforms: We understand that you have your preferred video platforms. That's why Clear Pip View ensures compatibility with major platforms such as YouTube and more. Our extension seamlessly integrates with their video players, making it incredibly convenient to activate PiP mode. Note: Please ensure that the tab containing the video remains open for PiP to function properly. Say goodbye to the days of minimizing or losing sight of your videos while multitasking. Clear Pip View empowers you to multitask efficiently, allowing you to enjoy your videos in a compact, resizable PiP window while continuing to browse the web or work on other tasks. Don't miss out on this opportunity to optimize your screen space and enhance your productivity. Experience the future of online video with Clear Pip View. Install our browser extension today and embrace a smarter way to enjoy Picture-in-Picture technology!

Item
Type
Severity
Description
scripting
Permission
Critical
This permission allows injection and execution of JavaScript on any webpage. Rated Critical because it can modify page content, steal sensitive data, and inject malicious code into any site the extension has access to.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation• 10% increase: About:blank access enables potential sandbox escape vectors
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
Broad Content Script Access
Risk Factor
High
This extension can inject scripts into any website.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.
About:blank Access
Risk Factor
Medium
This extension can run content scripts in about:blank pages.
alarms
Permission
Low
This permission schedules periodic tasks. Rated Low because it can only trigger events at specified times without access to sensitive data.

The background service worker exfiltrates a persistent per-user UUID (client_id/user_id) and session_id to Google Analytics 4 Measurement Protocol with a hardcoded api_secret (ZPzaor2gRqiZQ_ZmZfRyww) and measurement_id (G-2F5NKH17B2). The api_secret is embedded in the extension code, and the user has no opt-out — this is unauthorized analytics tracking from a Chrome extension whose stated function is Picture-in-Picture.

js/background.js (Line 107)
async function pH(pT, Bj, hU, uo, na) {  const Sf = undefined,    pH = {      user_id: Bj,      client_id: Bj,      events: [{        name: pT,        params: {          session_id: hU        }      }]    },    sg =    `https://www.google-analytics.com/mp/collect?${new URLSearchParams({api_secret:uo,measurement_id:na}).toString()}`;  await fetch(sg, {    method: "POST",    headers: {      "Content-Type": "application/json"    },    body: JSON.stringify(pH)  })}

On install/update and every service-worker wakeup the extension iterates ALL currently open tabs and injects content.js into every frame using `world: "MAIN"` — i.e., the page's own JavaScript context with full access to page globals/variables, not the isolated content-script world. This is a privilege-escalation pattern that lets injected code read/modify any site's runtime state and bypass page-context isolation.

js/background.js (Line 39)
async function Sf() {  const pT = await chrome.storage.local.get("enabled");  (null == pT ? void 0 : pT.enabled) || await chrome.storage.local.set({    enabled: !0  });  const Bj = await chrome.tabs.query({});  for (const pT of Bj)    if (pT.id) try {      await chrome.scripting.executeScript({        files: ["js/content.js"],        injectImmediately: !0,        target: {          tabId: pT.id,          allFrames: !0        },        world: "MAIN"      })    } catch (pT) {}}

Generates and persists a stable per-installation UUID (`cid`) in chrome.storage.local that survives browser restarts, paired with a session UUID (`sid`). Combined with the all_frames document_start MAIN-world content script and <all_urls> host permissions, this creates a stable cross-site tracking identifier transmitted to the developer's GA4 property.

js/background.js (Line 81)
async function na() {  const pT = await new Promise((pT => {    chrome.storage.local.get(["cid"], (Bj => {      pT(Bj)    }))  }));  let {    cid: Bj  } = pT;  return Bj || (Bj = (0, uo.v4)(), chrome.storage.local.set({    cid: Bj  })), Bj}async function Sf() {  const pT = await new Promise((pT => {    chrome.storage.session.get(["sid"], (Bj => {      pT(Bj)    }))  }));  let {    sid: Bj  } = pT;  return Bj || (Bj = (0, uo.v4)(), chrome.storage.session.set({    sid: Bj  })), Bj}

Creates a recurring `ga4` alarm (daily) and unconditionally fires telemetry events (`first_open`, `tutorial_begin`) on every service worker startup. The alarms permission is being used to keep the extension's analytics pings active rather than for any user-facing feature.

js/background.js (Line 129)
async function sg(pT, Bj) {  chrome.runtime.onInstalled.addListener((async hU => {    if ("install" === hU.reason) {      const hU = await na(),        uo = await Sf();      await pH("first_open", hU, uo, Bj, pT)    }  }));  const hU = await na(),    uo = await Sf();  await pH("tutorial_begin", hU, uo, Bj, pT), chrome.alarms && chrome.alarms.create("ga4", {    periodInMinutes: 60 * 24  })}

Content script is registered with extremely broad scope: every http/https URL, all frames (including cross-origin iframes), about:blank documents, and earliest possible execution (document_start). Combined with `<all_urls>` host_permissions and the MAIN-world programmatic injection in background.js, the extension has the technical capability to observe and manipulate any site the user visits — far broader than required for a per-site Picture-in-Picture button.

manifest.json (Line 16)
{  "content_scripts": [    {      "matches": [        "http://*/*",        "https://*/*"      ],      "js": [        "js/content.js"      ],      "all_frames": true,      "match_about_blank": true,      "run_at": "document_start"    }  ]}

Creates a <script> element, sets textContent, and appends it to document.head to execute code in the page's main world. The injected payload here is benign (`document.exitPictureInPicture()`), but the pattern itself is a code-injection sink — under MV3 this technique is commonly used to evade CSP/isolated-world restrictions. Worth flagging because the content script already runs at document_start in all_frames including about:blank.

js/content.js (Line 71)
case na.a.CHROME:  if (Bj) {    const pT = document.createElement("script");    pT.textContent = "document.exitPictureInPicture()", document.head.appendChild(pT), pT.remove()  } else pT.removeAttribute("disablepictureinpicture"), pT.requestPictureInPicture();break;

By severity

Critical0
High2
Medium3
Low1

Versions scanned

Showing 1 of 3 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
1.0.06

Files with findings

3 distinct paths — top paths by unique finding count:

  • js/background.js4
  • js/content.js1
  • manifest.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Privilege Escalation
high
js/background.js (line 39)On install/update and every service-worker wakeup the extension iterates ALL currently open tabs and injects content.js into every frame using `world: "MAIN"` — i.e., the page's own JavaScript context with full access…
2Tracking
high
js/background.js (line 107)The background service worker exfiltrates a persistent per-user UUID (client_id/user_id) and session_id to Google Analytics 4 Measurement Protocol with a hardcoded api_secret (ZPzaor2gRqiZQ_ZmZfRyww) and measurement_i…
3Privilege Escalation
medium
manifest.json (line 16)Content script is registered with extremely broad scope: every http/https URL, all frames (including cross-origin iframes), about:blank documents, and earliest possible execution (document_start). Combined with `<all_…
4Tracking
medium
js/background.js (line 129)Creates a recurring `ga4` alarm (daily) and unconditionally fires telemetry events (`first_open`, `tutorial_begin`) on every service worker startup. The alarms permission is being used to keep the extension's analytic…
5Unauthorized Data Collection
medium
js/background.js (line 81)Generates and persists a stable per-installation UUID (`cid`) in chrome.storage.local that survives browser restarts, paired with a session UUID (`sid`). Combined with the all_frames document_start MAIN-world content …
6Code Injection
low
js/content.js (line 71)Creates a <script> element, sets textContent, and appends it to document.head to execute code in the page's main world. The injected payload here is benign (`document.exitPictureInPicture()`), but the pattern itself i…
URLs
6
IPv4
2
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

www.google-analytics.com/mp/collecthttps://www.google-analytics.com/mp/collect?${new
github.com/uuidjs/uuidhttps://github.com/uuidjs/uuid#getrandomvalues-not-supported
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
*/*http://*/*
*/*https://*/*
www.w3.org/2000/svghttp://www.w3.org/2000/svg

Gain full insight into all external connections.

Upgrade for full visibility.

2.1.3.4
IPv4
-
2.2.5.3
IPv4
-
Showing 1 to 3 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.