| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Dummy implementation of data_sharing_sdk.js for non-branded build. |
| |
| declare enum Code { |
| OK = 0, |
| CANCELLED = 1, |
| UNKNOWN = 2, |
| INVALID_ARGUMENT = 3, |
| DEADLINE_EXCEEDED = 4, |
| NOT_FOUND = 5, |
| ALREADY_EXISTS = 6, |
| PERMISSION_DENIED = 7, |
| UNAUTHENTICATED = 16, |
| RESOURCE_EXHAUSTED = 8, |
| FAILED_PRECONDITION = 9, |
| ABORTED = 10, |
| OUT_OF_RANGE = 11, |
| UNIMPLEMENTED = 12, |
| INTERNAL = 13, |
| UNAVAILABLE = 14, |
| DATA_LOSS = 15, |
| DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD = 20 |
| } |
| |
| declare enum ShareAction { |
| COPY_LINK = 0, |
| SHARE_1P = 1, |
| SHARE_3P = 2, |
| } |
| |
| interface DataSharingSdkResponse { |
| readonly finalShareAction?: { |
| action: ShareAction, |
| status: Code, |
| }; |
| } |
| |
| declare interface DataSharingSdkGroup { |
| id: string; |
| name?: string; |
| members: DataSharingSdkGroupMember[]; |
| } |
| |
| declare interface DataSharingSdkGroupMember { |
| photoUrl: string; |
| displayName: string; |
| profileId: string; |
| role: DataSharingMemberRole; |
| displayValue: string; |
| } |
| |
| declare interface DataSharingSdkSitePreview { |
| url: string; |
| faviconUrl?: string; |
| } |
| |
| declare interface DataSharingSdkGetLinkParams { |
| groupId: string; |
| tokenSecret?: string; |
| } |
| |
| declare type DataSharingSdkGetLink = (params: DataSharingSdkGetLinkParams) => |
| Promise<string>; |
| declare type DataSharingMemberRole = |
| 'unknown' | 'member' | 'owner' | 'invitee' | 'applicant'; |
| |
| declare interface Token { |
| access_token: string; |
| } |
| |
| declare interface DataSharingSdkGroupId { |
| resourceId?: string; |
| groupId?: string; |
| } |
| |
| declare interface DataSharingSdkGroupIds { |
| resourceIds?: string[]; |
| groupIds?: string[]; |
| } |
| |
| declare global { |
| interface Window { |
| gapi: { |
| auth: { |
| getToken: () => Token, |
| }, |
| }; |
| data_sharing_sdk: { |
| setOauthAccessToken: (options: { |
| accessToken: string, |
| }) => void, |
| createGroup: (options: {}) => Promise<DataSharingSdkGroup>, |
| readGroups: (options: DataSharingSdkGroupIds&{}) => |
| Promise<DataSharingSdkGroup[]>, |
| runJoinFlow: (options: DataSharingSdkGroupId&{ |
| tokenSecret: string, |
| parent?: HTMLElement, |
| previewSites?: DataSharingSdkSitePreview[], |
| }) => Promise<DataSharingSdkResponse>, |
| runInviteFlow: (options: { |
| parent?: HTMLElement, |
| getShareLink?: DataSharingSdkGetLink, |
| title?: string, |
| }) => Promise<DataSharingSdkResponse>, |
| runManageFlow: (options: DataSharingSdkGroupId&{ |
| parent?: HTMLElement, |
| getShareLink?: DataSharingSdkGetLink, |
| }) => Promise<DataSharingSdkResponse>, |
| updateClearcut: (options: {enabled: boolean}) => void, |
| }; |
| } |
| } |
| export { }; |
| |
| // Add something to the dialog to tell which flow it is. |
| function appendTextForTesting(text: string) { |
| const newDiv: HTMLDivElement = document.createElement('div'); |
| newDiv.textContent = text; |
| document.body.appendChild(newDiv); |
| } |
| |
| window.data_sharing_sdk = { |
| setOauthAccessToken: () => void{}, |
| createGroup: () => Promise.resolve({id: '', members: []}), |
| readGroups: (options: DataSharingSdkGroupIds&{}): |
| Promise<DataSharingSdkGroup[]> => { |
| return new Promise((resolve) => { |
| resolve(options.groupIds!.map(groupId => ({ |
| id: groupId, |
| name: 'GROUP_NAME', |
| members: [{ |
| photoUrl: 'http://example.com', |
| displayName: 'MEMBER_NAME', |
| profileId: 'GAIA_ID', |
| role: 'member', |
| displayValue: 'test@gmail.com', |
| }], |
| }))); |
| }); |
| }, |
| runJoinFlow: (): Promise<DataSharingSdkResponse> => { |
| appendTextForTesting('A fake join dialog'); |
| return Promise.resolve({}); |
| }, |
| runInviteFlow: (): Promise<DataSharingSdkResponse> => { |
| appendTextForTesting('A fake invite dialog'); |
| return Promise.resolve({}); |
| }, |
| runManageFlow: (): Promise<DataSharingSdkResponse> => { |
| appendTextForTesting('A fake manage dialog'); |
| return Promise.resolve({}); |
| }, |
| updateClearcut: () => void{}, |
| }; |