From 995704084e81be48f79bd6835171b9a9bc323790 Mon Sep 17 00:00:00 2001 From: Sriram Ramasubramanian Date: Wed, 16 Nov 2011 16:23:22 -0800 Subject: [PATCH] Bug 697726: Stop button in URL bar [r=mfinkle] --- embedding/android/BrowserToolbar.java | 14 ++++++++++++++ embedding/android/GeckoApp.java | 9 +++++++++ embedding/android/Makefile.in | 2 ++ embedding/android/Tab.java | 6 ++++++ .../resources/drawable-hdpi-v8/urlbar_stop.png | Bin 0 -> 1112 bytes .../resources/drawable-mdpi-v8/urlbar_stop.png | Bin 0 -> 1112 bytes .../android/resources/layout/browser_toolbar.xml | 12 +++++++++++- mobile/android/chrome/content/browser.js | 3 +++ 8 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 embedding/android/resources/drawable-hdpi-v8/urlbar_stop.png create mode 100644 embedding/android/resources/drawable-mdpi-v8/urlbar_stop.png diff --git a/embedding/android/BrowserToolbar.java b/embedding/android/BrowserToolbar.java index 25b1b296a11..5a2a9f3214b 100644 --- a/embedding/android/BrowserToolbar.java +++ b/embedding/android/BrowserToolbar.java @@ -68,6 +68,7 @@ public class BrowserToolbar extends LinearLayout { final private Button mAwesomeBar; final private ImageButton mTabs; final public ImageButton mFavicon; + final public ImageButton mStop; final private AnimationDrawable mProgressSpinner; final private TextSwitcher mTabsCount; @@ -150,6 +151,13 @@ public class BrowserToolbar extends LinearLayout { mFavicon = (ImageButton) findViewById(R.id.favicon); mProgressSpinner = (AnimationDrawable) resources.getDrawable(R.drawable.progress_spinner); + + mStop = (ImageButton) findViewById(R.id.stop); + mStop.setOnClickListener(new Button.OnClickListener() { + public void onClick(View v) { + doStop(); + } + }); mHandler = new Handler(); mSlideUpIn = new TranslateAnimation(0, 0, 30, 0); @@ -197,6 +205,10 @@ public class BrowserToolbar extends LinearLayout { GeckoApp.mAppContext.showTabs(); } + private void doStop() { + GeckoApp.mAppContext.doStop(); + } + public int getHighlightColor() { return mColor; } @@ -242,8 +254,10 @@ public class BrowserToolbar extends LinearLayout { if (visible) { mFavicon.setImageDrawable(mProgressSpinner); mProgressSpinner.start(); + mStop.setVisibility(View.VISIBLE); } else { mProgressSpinner.stop(); + mStop.setVisibility(View.GONE); setFavicon(Tabs.getInstance().getSelectedTab().getFavicon()); } } diff --git a/embedding/android/GeckoApp.java b/embedding/android/GeckoApp.java index a3c9b17b6b2..f5267a13847 100644 --- a/embedding/android/GeckoApp.java +++ b/embedding/android/GeckoApp.java @@ -1590,6 +1590,15 @@ abstract public class GeckoApp return tab.doForward(); } + public boolean doStop() { + Log.i(LOG_NAME, "Stop requested"); + Tab tab = Tabs.getInstance().getSelectedTab(); + if (tab == null) + return false; + + return tab.doStop(); + } + @Override public void onBackPressed() { if (mDoorHangerPopup.isShowing()) { diff --git a/embedding/android/Makefile.in b/embedding/android/Makefile.in index b5fc8003288..615c244b2a8 100644 --- a/embedding/android/Makefile.in +++ b/embedding/android/Makefile.in @@ -208,6 +208,7 @@ RES_DRAWABLE_MDPI_V8 = \ res/drawable-mdpi-v8/doorhanger_bg.9.png \ res/drawable-mdpi-v8/doorhanger_shadow_bg.9.png \ res/drawable-mdpi-v8/doorhanger_popup_bg.9.png \ + res/drawable-mdpi-v8/urlbar_stop.png \ $(NULL) RES_DRAWABLE_HDPI_V8 = \ @@ -226,6 +227,7 @@ RES_DRAWABLE_HDPI_V8 = \ res/drawable-hdpi-v8/doorhanger_bg.9.png \ res/drawable-hdpi-v8/doorhanger_shadow_bg.9.png \ res/drawable-hdpi-v8/doorhanger_popup_bg.9.png \ + res/drawable-hdpi-v8/urlbar_stop.png \ $(NULL) RES_DRAWABLE_MDPI_V9 = \ diff --git a/embedding/android/Tab.java b/embedding/android/Tab.java index 0258b24c34d..4e74d31e8d3 100644 --- a/embedding/android/Tab.java +++ b/embedding/android/Tab.java @@ -227,6 +227,12 @@ public class Tab { return true; } + public boolean doStop() { + GeckoEvent e = new GeckoEvent("Session:Stop", ""); + GeckoAppShell.sendEventToGecko(e); + return true; + } + public boolean canDoForward() { return (mHistoryIndex + 1 < mHistory.size()); } diff --git a/embedding/android/resources/drawable-hdpi-v8/urlbar_stop.png b/embedding/android/resources/drawable-hdpi-v8/urlbar_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..d845a3af454f09434fb5d11d3164f33eb8a435b2 GIT binary patch literal 1112 zcmV-e1gHCnP)Po-8TH@>gJB&rhELDo;i0&{zyB|A+>IKI#vj1?tnM4=0l`fs(|SWggXQ7j zLEPTnrg70vPrAFiMQv?uRdAe_;AXRVq^YS%TwY!Z;Cz86-%Qun*Kh0V>wmShv{*bI zkLc*=5EmC0R#^W594Yi5?ta5`1`gShTjb3Me5b49sJUONkUkan{wgIU$w+$_PlM_I5Q9vd6mE=}bk0>~iJ>9iz)u4N?5 zB1#GmG;q~&NV#39R*DE%WO@=@9%bMG>LMV4^#kj9oDU;b+nG#8yh=bzIZ2dCr5J-8 ztW0-xb-7CW63-+Oi5v(rNLeY_s|0kP1Scma%pe;iQUK&500XWcg@Uwav)LH-{fJMZ z5`nSQDh8U3i){jAzRu200U}9UI@qTmp&ffMocF#;K+9R7cvWDr&*gH-G*yF)oX?|I z9dJ#JNnc+d18rv)o|&2PRwXF(bA@@%i|mX9Qi}*cAqF0Ek87-I)VnyLn#19%t!aR#4#iG#8@ z91clBPhKK{@qV-0?S8|4t_F?+{|CyDWBKEU6KC)V&eT*>nJv3e@qQ4-@GeP6&L0m5 z>`0h7DN!U6`3MgpC>m2i_Z-N=l!aBTf)`~6&M~v-3F4*6g+!4CVl2(h&dzH=hF){H z@SWw4Lsh{mkx(wwOAJJA{J54TCnx92{s(JoYjXhGJ3Bkmz$u6ROf{1B_I4*E`ZO^y e@m1abE5HCE;o<_-Ok2eO0000Po-8TH@>gJB&rhELDo;i0&{zyB|A+>IKI#vj1?tnM4=0l`fs(|SWggXQ7j zLEPTnrg70vPrAFiMQv?uRdAe_;AXRVq^YS%TwY!Z;Cz86-%Qun*Kh0V>wmShv{*bI zkLc*=5EmC0R#^W594Yi5?ta5`1`gShTjb3Me5b49sJUONkUkan{wgIU$w+$_PlM_I5Q9vd6mE=}bk0>~iJ>9iz)u4N?5 zB1#GmG;q~&NV#39R*DE%WO@=@9%bMG>LMV4^#kj9oDU;b+nG#8yh=bzIZ2dCr5J-8 ztW0-xb-7CW63-+Oi5v(rNLeY_s|0kP1Scma%pe;iQUK&500XWcg@Uwav)LH-{fJMZ z5`nSQDh8U3i){jAzRu200U}9UI@qTmp&ffMocF#;K+9R7cvWDr&*gH-G*yF)oX?|I z9dJ#JNnc+d18rv)o|&2PRwXF(bA@@%i|mX9Qi}*cAqF0Ek87-I)VnyLn#19%t!aR#4#iG#8@ z91clBPhKK{@qV-0?S8|4t_F?+{|CyDWBKEU6KC)V&eT*>nJv3e@qQ4-@GeP6&L0m5 z>`0h7DN!U6`3MgpC>m2i_Z-N=l!aBTf)`~6&M~v-3F4*6g+!4CVl2(h&dzH=hF){H z@SWw4Lsh{mkx(wwOAJJA{J54TCnx92{s(JoYjXhGJ3Bkmz$u6ROf{1B_I4*E`ZO^y e@m1abE5HCE;o<_-Ok2eO0000 + android:paddingRight="42dip"/> + + diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 7c5d4096b06..2bf8481a790 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -154,6 +154,7 @@ var BrowserApp = { Services.obs.addObserver(this, "Session:Back", false); Services.obs.addObserver(this, "Session:Forward", false); Services.obs.addObserver(this, "Session:Reload", false); + Services.obs.addObserver(this, "Session:Stop", false); Services.obs.addObserver(this, "SaveAs:PDF", false); Services.obs.addObserver(this, "Browser:Quit", false); Services.obs.addObserver(this, "Preferences:Get", false); @@ -596,6 +597,8 @@ var BrowserApp = { browser.goForward(); } else if (aTopic == "Session:Reload") { browser.reload(); + } else if (aTopic == "Session:Stop") { + browser.stop(); } else if (aTopic == "Tab:Add") { let uri = URIFixup.createFixupURI(aData, Ci.nsIURIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP); let newTab = this.addTab(uri ? uri.spec : aData);