Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1101)

Unified Diff: win8/metro_driver/secondary_tile.cc

Issue 11198025: Site specific secondary tiles for Windows 8. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Oops Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: win8/metro_driver/secondary_tile.cc
diff --git a/win8/metro_driver/secondary_tile.cc b/win8/metro_driver/secondary_tile.cc
index c784fdcf3904d7b01c3cf91408aeb09442b14cda..97109c1924b5f79de574f1f0cdba58f3fef33e1f 100644
--- a/win8/metro_driver/secondary_tile.cc
+++ b/win8/metro_driver/secondary_tile.cc
@@ -7,49 +7,16 @@
#include <windows.ui.startscreen.h>
-#include "base/base_paths.h"
#include "base/bind.h"
-#include "base/file_path.h"
#include "base/logging.h"
-#include "base/path_service.h"
-#include "base/string_number_conversions.h"
#include "base/utf_string_conversions.h"
-#include "crypto/sha2.h"
#include "googleurl/src/gurl.h"
#include "win8/metro_driver/chrome_app_view.h"
#include "win8/metro_driver/winrt_utils.h"
namespace {
-string16 GenerateTileId(const string16& url_str) {
- uint8 hash[crypto::kSHA256Length];
- crypto::SHA256HashString(UTF16ToUTF8(url_str), hash, sizeof(hash));
- std::string hash_str = base::HexEncode(hash, sizeof(hash));
- return UTF8ToUTF16(hash_str);
-}
-
-string16 GetLogoUrlString() {
- FilePath module_path;
- PathService::Get(base::DIR_MODULE, &module_path);
- string16 scheme(L"ms-appx:///");
- return scheme.append(module_path.BaseName().value())
- .append(L"/SecondaryTile.png");
-}
-
-BOOL IsPinnedToStartScreen(const string16& url_str) {
- mswr::ComPtr<winui::StartScreen::ISecondaryTileStatics> tile_statics;
- HRESULT hr = winrt_utils::CreateActivationFactory(
- RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
- tile_statics.GetAddressOf());
- CheckHR(hr, "Failed to create instance of ISecondaryTileStatics");
-
- boolean exists;
- hr = tile_statics->Exists(MakeHString(GenerateTileId(url_str)), &exists);
- CheckHR(hr, "ISecondaryTileStatics.Exists failed");
- return exists;
-}
-
-void DeleteTileFromStartScreen(const string16& url_str) {
+void DeleteTileFromStartScreen(const string16& tile_id) {
DVLOG(1) << __FUNCTION__;
mswr::ComPtr<winui::StartScreen::ISecondaryTileFactory> tile_factory;
HRESULT hr = winrt_utils::CreateActivationFactory(
@@ -58,7 +25,7 @@ void DeleteTileFromStartScreen(const string16& url_str) {
CheckHR(hr, "Failed to create instance of ISecondaryTileFactory");
mswrw::HString id;
- id.Attach(MakeHString(GenerateTileId(url_str)));
+ id.Attach(MakeHString(tile_id));
mswr::ComPtr<winui::StartScreen::ISecondaryTile> tile;
hr = tile_factory->CreateWithId(id.Get(), tile.GetAddressOf());
@@ -76,9 +43,12 @@ void DeleteTileFromStartScreen(const string16& url_str) {
CheckHR(hr, "Failed to put_Completed");
}
-void CreateTileOnStartScreen(const string16& title_str,
- const string16& url_str) {
+void CreateTileOnStartScreen(const string16& tile_id,
+ const string16& title_str,
+ const string16& url_str,
+ const FilePath& logo_path) {
VLOG(1) << __FUNCTION__;
+
mswr::ComPtr<winui::StartScreen::ISecondaryTileFactory> tile_factory;
HRESULT hr = winrt_utils::CreateActivationFactory(
RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
@@ -89,8 +59,10 @@ void CreateTileOnStartScreen(const string16& title_str,
winui::StartScreen::TileOptions_ShowNameOnLogo;
mswrw::HString title;
title.Attach(MakeHString(title_str));
+
mswrw::HString id;
- id.Attach(MakeHString(GenerateTileId(url_str)));
+ id.Attach(MakeHString(tile_id));
+
mswrw::HString args;
// The url is just passed into the tile agruments as is. Metro and desktop
// chrome will see the arguments as command line parameters.
@@ -105,7 +77,7 @@ void CreateTileOnStartScreen(const string16& title_str,
CheckHR(hr, "Failed to create URIFactory");
mswrw::HString logo_url;
- logo_url.Attach(MakeHString(GetLogoUrlString()));
+ logo_url.Attach(MakeHString(string16(L"file:///").append(logo_path.value())));
mswr::ComPtr<winfoundtn::IUriRuntimeClass> uri;
hr = uri_factory->CreateUri(logo_url.Get(), &uri);
CheckHR(hr, "Failed to create URI");
@@ -135,26 +107,34 @@ void CreateTileOnStartScreen(const string16& title_str,
CheckHR(hr, "Failed to put_Completed");
}
-void TogglePinnedToStartScreen(const string16& title_str,
- const string16& url_str) {
- if (IsPinnedToStartScreen(url_str)) {
- DeleteTileFromStartScreen(url_str);
- return;
- }
+} // namespace
- CreateTileOnStartScreen(title_str, url_str);
-}
+BOOL MetroIsPinnedToStartScreen(const string16& tile_id) {
+ mswr::ComPtr<winui::StartScreen::ISecondaryTileStatics> tile_statics;
+ HRESULT hr = winrt_utils::CreateActivationFactory(
+ RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
+ tile_statics.GetAddressOf());
+ CheckHR(hr, "Failed to create instance of ISecondaryTileStatics");
-} // namespace
+ boolean exists;
+ hr = tile_statics->Exists(MakeHString(tile_id), &exists);
+ CheckHR(hr, "ISecondaryTileStatics.Exists failed");
+ return exists;
+}
-BOOL MetroIsPinnedToStartScreen(const string16& url) {
- VLOG(1) << __FUNCTION__ << " url: " << url;
- return IsPinnedToStartScreen(url);
+void MetroUnPinFromStartScreen(const string16& tile_id) {
+ globals.appview_msg_loop->PostTask(
+ FROM_HERE, base::Bind(&DeleteTileFromStartScreen, tile_id));
}
-void MetroTogglePinnedToStartScreen(const string16& title,
- const string16& url) {
- DVLOG(1) << __FUNCTION__ << " title:" << title << " url: " << url;
+void MetroPinToStartScreen(const string16& tile_id,
+ const string16& title,
+ const string16& url,
+ const FilePath& logo_path) {
globals.appview_msg_loop->PostTask(
- FROM_HERE, base::Bind(&TogglePinnedToStartScreen, title, url));
+ FROM_HERE, base::Bind(&CreateTileOnStartScreen,
+ tile_id,
+ title,
+ url,
+ logo_path));
}
« chrome/browser/ui/metro_pin_tab_helper.cc ('K') | « win8/metro_driver/secondary_tile.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698