New issue
Advanced search Search tips

Issue 724563 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

runtime.onInstalled can return wrong old extension version

Project Member Reported by lazyboy@chromium.org, May 19 2017

Issue description

Looking at ChromeRuntimeAPIDelegate::GetPreviousExtensionVersion, it calls

  const Extension* old = service->GetExtensionById(extension->id(), /*include_disabled=*/ true);

I'm changing this to ExtensionRegistry from ExtensionService in
https://codereview.chromium.org/2892843002/

The logic uses mask
  ENABLED | DISABLED | BLACKLISTED | BLOCKED
which leaves TERMINATED.
So if during an update if the extension was TERMINATED, we could potentially
send incorrect version to runtime.onInstalled.

In the spirit of keeping CL focused on one thing and easy to account
for blaming later on, I'm going to do this separately.
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 26 2017

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

commit c290763a1b98e8c9815e87e326b13a314605bf98
Author: lazyboy <lazyboy@chromium.org>
Date: Fri May 26 15:24:25 2017

Include terminated extensions while retrieving extension version.

If an extension is terminated at the time of update, we wouldn't
fetch (ExtensionRegistry::GetStoredVersion) its correct version
to dispatch runtime.onInstalled. Fix this by including
terminated extensions.

Add a unit_test.

BUG= 724563 
Test=chrome.runtime.onInstalled should send correct previousVersion
for an extension that was terminated during update.

Review-Url: https://codereview.chromium.org/2908513002
Cr-Commit-Position: refs/heads/master@{#475007}

[add] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/chrome/test/data/extensions/api_test/runtime/update_terminated_extension/pem.pem
[add] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/chrome/test/data/extensions/api_test/runtime/update_terminated_extension/v1/background.js
[add] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/chrome/test/data/extensions/api_test/runtime/update_terminated_extension/v1/manifest.json
[add] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/chrome/test/data/extensions/api_test/runtime/update_terminated_extension/v2/background.js
[add] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/chrome/test/data/extensions/api_test/runtime/update_terminated_extension/v2/manifest.json
[modify] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/extensions/browser/api/runtime/runtime_apitest.cc
[modify] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/extensions/browser/extension_registry.cc
[modify] https://crrev.com/c290763a1b98e8c9815e87e326b13a314605bf98/extensions/browser/extension_registry_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment