cast_navigation_ui_data.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "chromecast/browser/cast_navigation_ui_data.h"
  5. #include "chromecast/browser/cast_session_id_map.h"
  6. #include "content/public/browser/web_contents.h"
  7. namespace chromecast {
  8. namespace shell {
  9. namespace {
  10. const char kUserDataKey[] = "chromecast.shell.SessionIdUserData key";
  11. class SessionIdUserData : public base::SupportsUserData::Data {
  12. public:
  13. explicit SessionIdUserData(const std::string& session_id)
  14. : session_id_(session_id) {}
  15. const std::string& session_id() const { return session_id_; }
  16. private:
  17. std::string session_id_;
  18. };
  19. } // namespace
  20. // static
  21. void CastNavigationUIData::SetAppPropertiesForWebContents(
  22. content::WebContents* web_contents,
  23. const std::string& session_id,
  24. bool is_audio_app) {
  25. DCHECK(web_contents);
  26. web_contents->SetUserData(kUserDataKey,
  27. std::make_unique<SessionIdUserData>(session_id));
  28. CastSessionIdMap::GetInstance()->SetAppProperties(session_id, is_audio_app,
  29. web_contents);
  30. }
  31. // static
  32. std::string CastNavigationUIData::GetSessionIdForWebContents(
  33. content::WebContents* web_contents) {
  34. DCHECK(web_contents);
  35. SessionIdUserData* data =
  36. static_cast<SessionIdUserData*>(web_contents->GetUserData(kUserDataKey));
  37. return data ? data->session_id() : "";
  38. }
  39. CastNavigationUIData::CastNavigationUIData(const std::string& session_id)
  40. : session_id_(session_id) {}
  41. std::unique_ptr<content::NavigationUIData> CastNavigationUIData::Clone() {
  42. return std::make_unique<CastNavigationUIData>(session_id_);
  43. }
  44. } // namespace shell
  45. } // namespace chromecast