Commit 1854428b authored by Eric Willigers's avatar Eric Willigers Committed by Commit Bot

desktop-pwas: Replace WebAppSpecifics LaunchContainer with DisplayMode

The proto used by WebAppSyncBridge and WebAppDatabase now contains
DisplayMode.

TBR=dominickn@chromium.org

Bug: 1009909
Change-Id: Ic720d4837f5b6fb15e4f025370bc8d3191a8d2ad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1846634Reviewed-by: default avatarEric Willigers <ericwilligers@chromium.org>
Reviewed-by: default avatarAlexey Baskakov <loyso@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Commit-Queue: Eric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704081}
parent 8bac5fee
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include "components/sync/base/model_type.h" #include "components/sync/base/model_type.h"
#include "components/sync/model/metadata_batch.h" #include "components/sync/model/metadata_batch.h"
#include "components/sync/model/model_error.h" #include "components/sync/model/model_error.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h" #include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
namespace web_app { namespace web_app {
...@@ -102,11 +101,8 @@ std::unique_ptr<WebAppProto> WebAppDatabase::CreateWebAppProto( ...@@ -102,11 +101,8 @@ std::unique_ptr<WebAppProto> WebAppDatabase::CreateWebAppProto(
local_data->set_name(web_app.name()); local_data->set_name(web_app.name());
DCHECK_NE(blink::mojom::DisplayMode::kUndefined, web_app.display_mode()); sync_data->set_display_mode(
sync_data->set_launch_container(web_app.display_mode() == ToWebAppSpecificsDisplayMode(web_app.display_mode()));
blink::mojom::DisplayMode::kStandalone
? sync_pb::WebAppSpecifics::WINDOW
: sync_pb::WebAppSpecifics::TAB);
DCHECK(web_app.sources_.any()); DCHECK(web_app.sources_.any());
local_data->mutable_sources()->set_system(web_app.sources_[Source::kSystem]); local_data->mutable_sources()->set_system(web_app.sources_[Source::kSystem]);
...@@ -189,14 +185,11 @@ std::unique_ptr<WebApp> WebAppDatabase::CreateWebApp( ...@@ -189,14 +185,11 @@ std::unique_ptr<WebApp> WebAppDatabase::CreateWebApp(
} }
web_app->SetName(local_data.name()); web_app->SetName(local_data.name());
if (!sync_data.has_launch_container()) { if (!sync_data.has_display_mode()) {
DLOG(ERROR) << "WebApp proto parse error: no launch_container field"; DLOG(ERROR) << "WebApp proto parse error: no display_mode field";
return nullptr; return nullptr;
} }
web_app->SetDisplayMode(sync_data.launch_container() == web_app->SetDisplayMode(ToMojomDisplayMode(sync_data.display_mode()));
sync_pb::WebAppSpecifics::WINDOW
? blink::mojom::DisplayMode::kStandalone
: blink::mojom::DisplayMode::kBrowser);
if (!local_data.has_is_locally_installed()) { if (!local_data.has_is_locally_installed()) {
DLOG(ERROR) << "WebApp proto parse error: no is_locally_installed field"; DLOG(ERROR) << "WebApp proto parse error: no is_locally_installed field";
...@@ -340,4 +333,33 @@ std::unique_ptr<WebApp> WebAppDatabase::ParseWebApp(const AppId& app_id, ...@@ -340,4 +333,33 @@ std::unique_ptr<WebApp> WebAppDatabase::ParseWebApp(const AppId& app_id,
return web_app; return web_app;
} }
blink::mojom::DisplayMode ToMojomDisplayMode(
::sync_pb::WebAppSpecifics::DisplayMode display_mode) {
switch (display_mode) {
case ::sync_pb::WebAppSpecifics::kBrowser:
return blink::mojom::DisplayMode::kBrowser;
case ::sync_pb::WebAppSpecifics::kMinimalUi:
return blink::mojom::DisplayMode::kMinimalUi;
case ::sync_pb::WebAppSpecifics::kStandalone:
return blink::mojom::DisplayMode::kStandalone;
}
}
::sync_pb::WebAppSpecifics::DisplayMode ToWebAppSpecificsDisplayMode(
blink::mojom::DisplayMode display_mode) {
switch (display_mode) {
case blink::mojom::DisplayMode::kBrowser:
return ::sync_pb::WebAppSpecifics::kBrowser;
case blink::mojom::DisplayMode::kMinimalUi:
return ::sync_pb::WebAppSpecifics::kMinimalUi;
case blink::mojom::DisplayMode::kUndefined:
NOTREACHED();
FALLTHROUGH;
case blink::mojom::DisplayMode::kFullscreen:
case blink::mojom::DisplayMode::kStandalone:
// We do not persist kFullscreen - see crbug.com/850465.
return ::sync_pb::WebAppSpecifics::kStandalone;
}
}
} // namespace web_app } // namespace web_app
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include "chrome/browser/web_applications/components/web_app_helpers.h" #include "chrome/browser/web_applications/components/web_app_helpers.h"
#include "chrome/browser/web_applications/web_app_registrar.h" #include "chrome/browser/web_applications/web_app_registrar.h"
#include "components/sync/model/model_type_store.h" #include "components/sync/model/model_type_store.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom-forward.h"
namespace syncer { namespace syncer {
class ModelError; class ModelError;
...@@ -92,6 +94,12 @@ class WebAppDatabase { ...@@ -92,6 +94,12 @@ class WebAppDatabase {
DISALLOW_COPY_AND_ASSIGN(WebAppDatabase); DISALLOW_COPY_AND_ASSIGN(WebAppDatabase);
}; };
blink::mojom::DisplayMode ToMojomDisplayMode(
::sync_pb::WebAppSpecifics::DisplayMode display_mode);
::sync_pb::WebAppSpecifics::DisplayMode ToWebAppSpecificsDisplayMode(
blink::mojom::DisplayMode display_mode);
} // namespace web_app } // namespace web_app
#endif // CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_DATABASE_H_ #endif // CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_DATABASE_H_
...@@ -40,10 +40,7 @@ std::unique_ptr<syncer::EntityData> CreateSyncEntityData(const WebApp& app) { ...@@ -40,10 +40,7 @@ std::unique_ptr<syncer::EntityData> CreateSyncEntityData(const WebApp& app) {
entity_data->specifics.mutable_web_app(); entity_data->specifics.mutable_web_app();
specifics->set_launch_url(app.launch_url().spec()); specifics->set_launch_url(app.launch_url().spec());
specifics->set_name(app.name()); specifics->set_name(app.name());
specifics->set_launch_container(app.display_mode() == specifics->set_display_mode(ToWebAppSpecificsDisplayMode(app.display_mode()));
blink::mojom::DisplayMode::kStandalone
? sync_pb::WebAppSpecifics::WINDOW
: sync_pb::WebAppSpecifics::TAB);
if (app.theme_color().has_value()) if (app.theme_color().has_value())
specifics->set_theme_color(app.theme_color().value()); specifics->set_theme_color(app.theme_color().value());
......
...@@ -540,11 +540,13 @@ const char* ProtoEnumToString( ...@@ -540,11 +540,13 @@ const char* ProtoEnumToString(
} }
const char* ProtoEnumToString( const char* ProtoEnumToString(
sync_pb::WebAppSpecifics::LaunchContainer launch_container) { sync_pb::WebAppSpecifics::DisplayMode display_mode) {
ASSERT_ENUM_BOUNDS(sync_pb::WebAppSpecifics, LaunchContainer, TAB, WINDOW); ASSERT_ENUM_BOUNDS(sync_pb::WebAppSpecifics, DisplayMode, kBrowser,
switch (launch_container) { kStandalone);
ENUM_CASE(sync_pb::WebAppSpecifics, TAB); switch (display_mode) {
ENUM_CASE(sync_pb::WebAppSpecifics, WINDOW); ENUM_CASE(sync_pb::WebAppSpecifics, kBrowser);
ENUM_CASE(sync_pb::WebAppSpecifics, kMinimalUi);
ENUM_CASE(sync_pb::WebAppSpecifics, kStandalone);
} }
NOTREACHED(); NOTREACHED();
return ""; return "";
......
...@@ -111,7 +111,7 @@ const char* ProtoEnumToString( ...@@ -111,7 +111,7 @@ const char* ProtoEnumToString(
sync_pb::WalletMetadataSpecifics::Type wallet_metadata_type); sync_pb::WalletMetadataSpecifics::Type wallet_metadata_type);
const char* ProtoEnumToString( const char* ProtoEnumToString(
sync_pb::WebAppSpecifics::LaunchContainer launch_container); sync_pb::WebAppSpecifics::DisplayMode display_mode);
const char* ProtoEnumToString( const char* ProtoEnumToString(
sync_pb::WifiConfigurationSpecificsData::SecurityType security_type); sync_pb::WifiConfigurationSpecificsData::SecurityType security_type);
......
...@@ -1082,7 +1082,7 @@ VISIT_PROTO_FIELDS(const sync_pb::WalletSyncFlags& proto) { ...@@ -1082,7 +1082,7 @@ VISIT_PROTO_FIELDS(const sync_pb::WalletSyncFlags& proto) {
VISIT_PROTO_FIELDS(const sync_pb::WebAppSpecifics& proto) { VISIT_PROTO_FIELDS(const sync_pb::WebAppSpecifics& proto) {
VISIT(launch_url); VISIT(launch_url);
VISIT(name); VISIT(name);
VISIT_ENUM(launch_container); VISIT_ENUM(display_mode);
VISIT(theme_color); VISIT(theme_color);
} }
......
...@@ -14,13 +14,18 @@ package sync_pb; ...@@ -14,13 +14,18 @@ package sync_pb;
// WebApp data. This is a synced part of // WebApp data. This is a synced part of
// chrome/browser/web_applications/proto/web_app.proto data. // chrome/browser/web_applications/proto/web_app.proto data.
message WebAppSpecifics { message WebAppSpecifics {
enum LaunchContainer { // This enum should be synced with
TAB = 1; // third_party/blink/public/mojom/manifest/display_mode.mojom
WINDOW = 2; enum DisplayMode {
// kUndefined is never serialized.
kBrowser = 1;
kMinimalUi = 2;
kStandalone = 3;
// kFullscreen is never serialized.
} }
optional string launch_url = 1; optional string launch_url = 1;
optional string name = 2; optional string name = 2;
optional LaunchContainer launch_container = 3; optional DisplayMode display_mode = 3;
optional uint32 theme_color = 4; optional uint32 theme_color = 4;
} }
...@@ -6,6 +6,7 @@ module blink.mojom; ...@@ -6,6 +6,7 @@ module blink.mojom;
// This enum should be synced with // This enum should be synced with
// chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java // chrome/android/java/src/org/chromium/chrome/browser/webapps/WebDisplayMode.java
// and components/sync/protocol/web_app_specifics.proto
enum DisplayMode { enum DisplayMode {
kUndefined, // User for override setting (ie. not set). kUndefined, // User for override setting (ie. not set).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment