New issue
Advanced search Search tips

Issue 724725 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

AppShell uses content::ShellBrowserContext, which is intended for testing

Project Member Reported by michae...@chromium.org, May 20 2017

Issue description

By default, content_shell uses "content_shell" for its data path (similar to the user data dir in Chrome). app_shell uses the same, which is confusing and could create conflicts. This is where app settings, local storage and the app_shell.log file are stored.

On Linux, for example, app_shell stores its browser context data in:

$HOME/.config/content_shell

We should change this to:

$HOME/.config/app_shell

by overwriting the relevant parts of ShellBrowserContext.
 
Summary: AppShell uses content::ShellBrowserContext, which is intended for testing (was: AppShell: BrowserContext location shouldn't default to "content_shell")
There are other issues with AppShell using content::ShellBrowserContext, which I'll group into this bug.

Ideally, AppShell should use its own BrowserContext class that derives directly from content::BrowserContext.
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 9 2018

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

commit c55719602e534de85f9a4abe7a3a33d2ecf4232a
Author: Michael Giuffrida <michaelpg@chromium.org>
Date: Fri Feb 09 17:10:35 2018

Fix AppShell BrowserContextKeyedServices creation

AppShell's BrowserContextKeyedServiceFactories are currently registered
after the BrowserContext is created, which means that none of the
services which are supposed to be created at startup are actually
created.

This prevents factory dependencies from working right, since factory A
might declare it DependsOn factory B, but factory B's service is
expected to be created with the context. Since factory B isn't
registered until after the context is created, chaos ensues.

Refactor ShellBrowserMainParts to register BCKSFactories first, then
create the ShellBrowserContext. This also resolves a longstanding
TODO to create the ShellExtensionSystem after the factories (actually,
it can now participate in the normal dependency graph). It also makes
the system saner: we construct globals like the ExtensionsBrowserClient
first, then create a BrowserContext and its associated services.

This was a bit tricky because AppShell's ShellBrowserContext derives
from content_shell's content::ShellBrowserContext, whose constructor
creates the services that should be created with the context. This is
too early for an extensions embedder, which needs a context and prefs
for ExtensionsBrowserClient to exist first.

ProfileImpl gets around this by loading prefs before creating BCKS's.

Bug: 724725
Change-Id: Iab23269aa1245785857a0591d683046836c3ca4f
Reviewed-on: https://chromium-review.googlesource.com/908091
Reviewed-by: Ben Wells <benwells@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Commit-Queue: Michael Giuffrida <michaelpg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535738}
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/content/shell/browser/shell_browser_context.cc
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/content/shell/browser/shell_browser_context.h
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/BUILD.gn
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_browser_context.cc
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_browser_context_keyed_service_factories.cc
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_browser_main_parts.cc
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_browser_main_parts.h
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_extensions_browser_client.cc
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_extensions_browser_client.h
[modify] https://crrev.com/c55719602e534de85f9a4abe7a3a33d2ecf4232a/extensions/shell/browser/shell_nacl_browser_delegate.cc

Cc: benwells@chromium.org michae...@chromium.org
Owner: ----
Status: Available (was: Assigned)

Sign in to add a comment