code: func (c *Storage) GetUsageAndQuotaWithParams(v *StorageGetUsageAndQuotaParams) (float64, float64, []*StorageUsageForType, error) {
  	resp, err := gcdmessage.SendCustomReturn(c.target, c.target.GetSendCh(), &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "Storage.getUsageAndQuota", Params: v})
  	if err != nil {
  		return 0, 0, nil, err
  	}
  
  	var chromeData struct {
  		Result struct {
  			Usage          float64
  			Quota          float64
  			UsageBreakdown []*StorageUsageForType
  		}
  	}
  
  	if resp == nil {
  		return 0, 0, nil, &gcdmessage.ChromeEmptyResponseErr{}
  	}
  
  	// test if error first
  	cerr := &gcdmessage.ChromeErrorResponse{}
  	json.Unmarshal(resp.Data, cerr)
  	if cerr != nil && cerr.Error != nil {
  		return 0, 0, nil, &gcdmessage.ChromeRequestErr{Resp: cerr}
  	}
  
  	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
  		return 0, 0, nil, err
  	}
  
  	return chromeData.Result.Usage, chromeData.Result.Quota, chromeData.Result.UsageBreakdown, nil
  }
docs: // GetUsageAndQuotaWithParams - Returns usage and quota in bytes.
  // Returns -  usage - Storage usage (bytes). quota - Storage quota (bytes). usageBreakdown - Storage usage per type (bytes).